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.

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.
- From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
- Click Distribution.
- Beside Shopify App Store listing, click Manage listing.
- Under Published languages, click Edit for the locale you want to update.
- Under Pricing content, click Manage to open the Pricing index page.
- Click Settings.
- Select Managed pricing.
- In the confirmation dialog, click Switch.
Anchor to Plan selection pagePlan selection page
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.

Your app's plan selection page URL follows this pattern:
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.
Anchor to Public plansPublic plans
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
- From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
- Click Distribution.
- Beside Shopify App Store listing, click Manage listing.
- Under Published languages, click Edit for the locale you want to update.
- Under Pricing content, click Manage to open the Pricing index page.
- Under Public plans, click Add to open the plan editor.
- Under Billing, select whether the plan is free, monthly, yearly, or monthly with a yearly option.
- (If required) Under Monthly charge, enter a price.
- (If required) Under Yearly charge, enter a price.
- (Optional) Under Free trial duration, enter the number of days you want to offer.
- (Optional) Under Welcome link, add a path or URL where the merchant will be redirected after approving the plan charge.
- 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.
- From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
- Click Distribution.
- Beside Shopify App Store listing, click Manage listing.
- Under Published languages, click Edit for the locale you want to update.
- Under Pricing content, find your recently added or updated plan.
- Under Display name, give the plan a name.
- Under Top features, describe the app features available under this plan.
- 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.
Anchor to Private plansPrivate plans
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.
Anchor to Add a private planAdd a private plan
- From your Partner Dashboard, click Apps > All Apps and click the name of the app you want to update pricing for.
- Click Distribution.
- Beside Shopify App Store listing, click Manage listing.
- Under Published languages, click Edit for the locale you want to update.
- Under Pricing content, click Manage to open the Pricing index page.
- Under Private plans, click Add to open the plan editor.
- Under Billing, select whether the plan is free, monthly, yearly, or monthly with a yearly option.
- (If required) Under Monthly charge, enter a price.
- (If required) Under Yearly charge, enter a price.
- (Optional) Under Free trial duration, enter the number of days you want to offer.
- (Optional) Under Welcome link, add a path or URL where the merchant will be redirected after approving the plan charge.
- Under Display name, add a name for the private plan.
- Under Description, describe the plan features.
- Under Stores with plan access, add up to 20 store domains (such as
example.myshopify.com
). - Click Save.
Anchor to Welcome linksWelcome links
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.
Anchor to Embedded app welcome linksEmbedded app welcome links
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.
Anchor to External welcome linksExternal welcome links
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.
Anchor to Proration logicProration logic
Anchor to Trial prorationTrial proration
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.
Anchor to Plan downgradingPlan downgrading
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.
Anchor to Issue a discountIssue a discount
- 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.
- Beside Discount, click Create.
- Under App, search for your app by name and select it.
- Select the type, value, and duration of the discount.
- Click Create.
- In the confirmation dialog, click Apply to confirm the discount.
Anchor to Extend a trial periodExtend a trial period
- 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.
- Beside Trial extension, click Create.
- Under App, search for your app by name and select it.
- Under Extra trial days, enter the number of days to extend the merchant's trial.
- Click Create.
- 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.
Anchor to Test chargesTest charges
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.
Test subscriptions don't convert to paid when you transfer a store. After transferring, you'll need to create a new plan.
Anchor to WebhooksWebhooks
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.
Anchor to LimitationsLimitations
- 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.