How to fetch and manage plans created with Managed Pricing?

Topic summary

Issue: A developer using Shopify’s Managed Pricing feature wants to retire an existing “Advanced” plan and create a new one with different features/pricing. They need to:

  • Display a banner to users on the old plan informing them it’s retired but still usable
  • Restrict new users to only current active plans

Problem identified: The appSubscription API returns unique subscription IDs for each merchant subscription, but doesn’t provide access to the underlying plan definitions or a way to query the list of active plans configured in Managed Pricing.

Solution provided: Shopify doesn’t expose an API to list or version Managed Pricing plans. The recommended workaround:

  • Store subscription lineItems (containing plan name/price) when merchants accept a plan
  • Maintain your own internal mapping to track which plans are “current” vs “retired”
  • Use this custom logic to control UI messaging and restrict new signups to active plans only

Status: Unresolved from a platform perspective—developers must implement their own plan versioning system outside of Shopify’s API.

Summarized with AI on October 25. AI used: claude-sonnet-4-5-20250929.

Hi everyone,

I’m using the Managed pricing setting for my app’s billing (docs: https://shopify.dev/docs/apps/launch/billing/managed-pricing).

Here’s the scenario:

  • I start with 2 plans: Basic and Advanced.

  • Later, I want to remove the existing Advanced plan and create a new “Advanced” plan (with different features and a new price).

From a UX perspective, I’d like to:

  1. Show users who are still on the old “Advanced” plan a banner saying:
    “The plan you’re subscribed to is no longer available, but you can continue using it. You also have the option to switch to our updated plans.”

  2. Allow new users to only subscribe to the current active plans.

The problem I’m running into is:

  • The appSubscription API gives me a subscription ID, but every new subscription gets a unique ID — it doesn’t seem tied to the underlying plan.

  • I can’t find a way to fetch the list of active plans I’ve set up through Managed Pricing, so I can properly manage this logic in my app.

My question:
:backhand_index_pointing_right: Is there a way to fetch and manage the list of plans I’ve configured with Managed Pricing (and distinguish between “old/retired” and “current” plans)?

With Managed Pricing, you don’t actually get an API to list or version the plans you’ve configured — Shopify handles the plan definitions internally. Each new subscription a merchant accepts generates its own unique appSubscription ID, so you can’t directly “query all active plans” from the API.

The common approach is to:

  • Track which plan a merchant is on by storing the subscription’s lineItems (that contain the plan name/price) when they accept it.

  • In your app, maintain your own mapping of what you consider “current” vs “retired” plans.

  • Then you can show banners or messages for merchants who are on a plan you’ve marked as retired, while only offering new signups the active ones.

So short answer: there isn’t a built-in way to fetch the plan list — you’ll need to manage that state in your own app logic.