Skip to main content

Managed App Pricing

Managed app pricing lets you define your app’s pricing plans directly in the Shopify Partner Dashboard, without needing to use the Billing API. Shopify hosts your app’s plan selection page, and automates most common billing tasks, such as recurring charges, free trials, proration, test charges, and price updates.

For most developers, managed pricing is simpler and more consistent than coding your own billing logic using the Billing API.


Anchor to Set up managed pricingSet up managed pricing

Managed pricing is the default option when you submit a new public app for approval. You can opt in to managed pricing for existing apps by editing your pricing settings. You can switch back to manual pricing at any time.

Managed pricing is available for free, monthly, and annual recurring plan types.

Plan and pricing card with options for Managed Pricing or Manual billing with the API

Anchor to Opt in to managed pricingOpt in to managed pricing

If you've already created plans with the Billing API that aren't compatible with managed pricing, then you'll need to remove them before you can switch.

  1. From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
  2. Click Distribution.
  3. Beside Shopify App Store listing, click Manage listing.
  4. Under Published languages, click Edit for the locale you want to update.
  5. Under Pricing content, click Manage to open the Pricing index page.
  6. Click Settings.
  7. Select Managed pricing.
  8. In the confirmation dialog, click Switch.

When using managed pricing, Shopify hosts your plan selection page. It’s visible in the Shopify admin, and allows merchants to view and select their plan.

4 app pricing plans rendered in Shopify admin

Your app's plan selection page URL follows this pattern:

https://admin.shopify.com/store/:store_handle/charges/:app_handle/pricing_plans

Anchor to Testing your plan selection UITesting your plan selection UI

You can validate that plan selection works as expected by following the test charge documentation.


Public plans are available to all merchants. Plans are visible on your app’s plan selection page as well as on the Shopify App Store. You can add up to four public plans.

A plan's billing model (its cost, billing periods, free trial availability) is edited separately from its description (its display name and list of supported features). This lets you describe a single plan in multiple languages, both on the Shopify App Store and your plan selection page.

Anchor to Step 1: Add a public planStep 1: Add a public plan

  1. From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
  2. Click Distribution.
  3. Beside Shopify App Store listing, click Manage listing.
  4. Under Published languages, click Edit for the locale you want to update.
  5. Under Pricing content, click Manage to open the Pricing index page.
  6. Under Public plans, click Add to open the plan editor.
  7. Under Billing, select whether the plan is free, monthly, yearly, or monthly with a yearly option.
  8. (If required) Under Monthly charge, enter a price.
  9. (If required) Under Yearly charge, enter a price.
  10. (Optional) Under Free trial duration, enter the number of days you want to offer.
  11. (Optional) Under Welcome link, add a path or URL where the merchant will be redirected after approving the plan charge.
  12. Click Save.

Anchor to Step 2: Add plan descriptions for each languageStep 2: Add plan descriptions for each language

Public plans share the same billing model and price details across all your app listings. But plan descriptions are localized, so that you can translate the plan name and its list of top features for each locale.

  1. From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
  2. Click Distribution.
  3. Beside Shopify App Store listing, click Manage listing.
  4. Under Published languages, click Edit for the locale you want to update.
  5. Under Pricing content, find your recently added or updated plan.
  6. Under Display name, give the plan a name.
  7. Under Top features, describe the app features available under this plan.
  8. Click Save.

Make sure to add plan descriptions for each translated app listing. A plan will only display to merchants if it has a description for the current language.


Private plans are only available to a list of stores that you select. This is useful if you need to support a bespoke feature set and pricing for a complex or high-needs client. If all you need is a price incentive, then offering a discount or trial extension may be a simpler option.

Because private plans are created for a limited number of merchants, they don't support translation. Private plans show up on your plan selection page, but are only visible to users who are logged into an authorized store account.

You can create up to 10 private plans. You can add up to 20 authorized stores per private plan.

  1. From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
  2. Click Distribution.
  3. Beside Shopify App Store listing, click Manage listing.
  4. Under Published languages, click Edit for the locale you want to update.
  5. Under Pricing content, click Manage to open the Pricing index page.
  6. Under Private plans, click Add to open the plan editor.
  7. Under Billing, select whether the plan is free, monthly, yearly, or monthly with a yearly option.
  8. (If required) Under Monthly charge, enter a price.
  9. (If required) Under Yearly charge, enter a price.
  10. (Optional) Under Free trial duration, enter the number of days you want to offer.
  11. (Optional) Under Welcome link, add a path or URL where the merchant will be redirected after approving the plan charge.
  12. Under Display name, add a name for the private plan.
  13. Under Description, describe the plan features.
  14. Under Stores with plan access, add up to 20 store domains (such as example.myshopify.com).
  15. Click Save.

A welcome link is the URL where merchants are redirected after approving your app plan charge. You can configure welcome links on a per-plan basis to customize your app onboarding experience. A welcome link can point to a page in your embedded app, or to an external URL.

We recommend that you query the Billing API for subscription status after approval for charge status changes.

For embedded apps, you can specify a relative path to your app root, such as /welcome. A charge_id URL parameter with a transaction ID is appended to all redirect URLs.

If you have a non-embedded app, or prefer to link to an external site, then you can redirect to a valid URL (including the http or https protocol). URL parameters for the charge_id and the merchant shop domain are appended to redirect URLs.


Managed app pricing tracks trial days over a 180-day period to prevent users from repeatedly reinstalling apps to exploit free trial periods. For example, if a merchant uses 12 out of 15 trial days on a Pro Plan, uninstalls, then reinstalls the app 90 days later, they'll still have 3 trial days left for the Pro Plan.

If you update your trial periods, then previously consumed trial days are subtracted from the new totals.

Downgrading from a paid plan to a free plan is deferred, meaning it's effective at the end of the paid plan’s current cycle.


Anchor to Discounts and trial extensionsDiscounts and trial extensions

You can issue discounts or extend app trial periods through your Partner Dashboard. Staff members need the Manage credits and refunds permission to manage discounts.

  1. From your partner dashboard, search for the name of the merchant you want to offer a discount. Click the merchant name in the Store column of the search results.
  2. Beside Discount, click Create.
  3. Under App, search for your app by name and select it.
  4. Select the type, value, and duration of the discount.
  5. Click Create.
  6. In the confirmation dialog, click Apply to confirm the discount.

Anchor to Extend a trial periodExtend a trial period

  1. From your partner dashboard, search for the name of the merchant whose trial you want to extend. Click the merchant name in the Store column of the search results.
  2. Beside Trial extension, click Create.
  3. Under App, search for your app by name and select it.
  4. Under Extra trial days, enter the number of days to extend the merchant's trial.
  5. Click Create.
  6. In the confirmation dialog, click Apply to confirm the trial extension.

For both discounts and trial extensions, Shopify sends an email to the merchant on your behalf confirming the change. The merchant doesn't need to re-subscribe to the plan. The discount is applied to their subscription automatically, starting on the next billing cycle.


To simplify testing your app's pricing, managed pricing has implemented free testing for dev stores.

When a development store subscribes to a plan, Shopify creates a test subscription for that store. Your account isn't charged for test subscriptions.

Note

Test subscriptions don't convert to paid when you transfer a store. After transferring, you'll need to create a new plan.


To receive a webhook when a subscription is updated, register for the APP_SUBSCRIPTIONS_UPDATE topic. Note that webhooks can take several minutes to deliver. Make sure your app can handle webhook delays and follow Shopify's best practices for webhooks.


  • Managed pricing currently supports only fixed, recurring pricing models (for example, $10/month or $100/year).
  • Once you opt in, you can’t create new recurring application charges using the Billing API. Charges created before opting into managed pricing continue to process as expected.
  • When testing a draft app during development, its plan selection page might return a 404 error if the development store and the app listing are set to different locales. This issue doesn't affect production stores or published apps.

Was this page helpful?