See all services → Shopify Plus Partner
App store Developer

Migrate App Billing Subscriptions to Shopify App Pricing

Apps billing through the Billing API can now move existing subscriptions to Shopify App Pricing using a Partner Dashboard tool or Shopify CLI. Subscriptions move at the next billing cycle with no merchant re-approval.

Executive summary

What changed

Creating App Pricing plans and switching the app over applied to new subscriptions only. Existing Billing API subscriptions kept billing through the old path until something moved them, and nothing did. There is now tooling for that move, and subscriptions transfer at the start of their next billing cycle with no new merchant approval.

The Partner Dashboard tool covers the straightforward cases. You draft App Pricing plans from your existing manual plans, test them on development stores, then move simple subscriptions, such as plans with no usage charges, to a matching plan in one action. The CLI commands handle everything the dashboard cannot: usage based subscriptions, subscriptions whose current price does not match the target plan, and migrations onto private plans. They also list stores with their migration status, schedule moves in bulk, and cancel pending migrations scheduled from either surface.

A few requirements are easy to miss. The app must already be enabled for App Pricing, target plan handles need to exist, a subscription carrying an active discount cannot migrate until that discount ends, and the Partner account used with the CLI needs the Manage app listings permission. View financials on its own is not enough.

Why it matters

For merchants this is mostly invisible, and that is the point. No re approval prompt means nobody re consents to a charge they already agreed to, which removes the churn risk that accompanies any billing change. Watch the first invoice after migration rather than the migration itself.

For anyone maintaining apps across a portfolio, the bulk scheduling in the CLI is the substantive part. Without it, consolidating a split installed base means coordinating per store changes across different billing cycles, work that gets deferred until the two billing paths diverge in reporting. Teams running custom apps as part of their Plus stack will find the same trade offs we discuss in how custom Shopify apps can elevate your store.

Role-specific impact

Use-case example

Real-world scenario

An agency maintains a private fulfilment app on 12 merchant stores, all billing through the Billing API on staggered cycles, three of them on negotiated pricing that matches no public plan. The dashboard tool moves the nine standard subscriptions cleanly. The negotiated three go to private App Pricing plans through the CLI, scheduled in bulk and verified with the status listing. The practical win is 12 merchant re approval conversations avoided, and one billing path to reconcile at month end instead of two.

Implementation checklist

  1. Confirm the app is enabled for Shopify App Pricing and record the handles of every target plan.
  2. Draft App Pricing plans that mirror existing manual plans, then test them on development stores.
  3. Segment the installed base: simple fixed price subscriptions for the dashboard tool, usage based, mismatched price and private plan cases for the CLI.
  4. Check for active discounts, which block migration until they end, and schedule those subscriptions later.
  5. Grant the Manage app listings permission to the Partner account used with Shopify CLI.
  6. Migrate a small cohort first, then confirm subscriptions moved on schedule and billed correctly before expanding.
  7. Keep the cancel command to hand for pending migrations that need adjusting.

FAQ

Q: Do merchants have to approve charges again after migration?

A: No. Eligible subscriptions move at the start of their next billing cycle without new merchant approval, which is why this is safe to run across an installed base.

Q: When is the CLI required instead of the Partner Dashboard tool?

A: Use the CLI for usage based subscriptions, where the current price does not match the target plan, for migrations onto private plans, and whenever you need bulk scheduling or a status listing across many stores.

Resources

Migrating to Shopify App Pricing

Need guidance? Talk to Makro.