Hi Shopify team,
We’re looking for a 100% reliable way to determine whether a merchant’s store is eligible to make purchases (such as app subscriptions or usage charges) via the Billing API.
This is especially important for us because we want to provide free access to paid features in our app for stores that are not eligible to purchase anything (e.g. development, trial, etc.), while enforcing the normal billing process for eligible merchants.
Current approach
We’re using the GraphQL API to query:
query {
shop {
plan {
publicDisplayName
}
}
}
Based on Shopify’s documentation, possible values of publicDisplayName
include:
Advanced
, Basic
, Grow
, Lite
, Plus
, Retail
, Starter
, Development
, Trial
, Plus Trial
, Paused
, Inactive
, Staff Business
, Shop Component
, Other
We currently assume the following:
- Can purchase:
Advanced
, Basic
, Grow
, Lite
, Plus
, Retail
, Starter
- Cannot purchase: all others
Questions:
- Is this mapping correct and exhaustive?
- Is
publicDisplayName
the recommended and stable way to determine billing eligibility?
- Are there any exceptions where this mapping is not reliable?
- Would Shopify consider exposing a dedicated boolean field, like
canPurchaseAppSubscription
, in the API?
Thanks in advance for your clarification — this would help us improve both the user experience and compliance with billing rules.
1 Like
Hey @256_agent!
Using the store plan to determine eligibility is a good approach. I would suggest reversing that and defining the plans where you want to offer free access as opposed to blanket access outside of the defined plans.
For example, the most common use case for a free plan is enabling access on development stores. That allows partners to install it for merchants when they build the store, and for developers to test and troubleshoot for their clients as well.
For all other plans, it may be better to just offer a free trial so all eligible paying stores can try it out and then convert.
Outside of a development store, what other plans would you want to offer free access?
Thanks, @KyleG-Shopify!
We currently do offer free access to all paid features for most stores that can’t make purchases — including development stores, trials, and other plan types — as long as the features don’t incur resource costs on our side (i.e. they’re purely software-based).
That said, we’re planning to continue in this direction, and are happy to support any store that genuinely can’t purchase an app plan.
The main reason for our original question is that we’re looking for a reliable and deterministic way to detect whether a store can make purchases, regardless of why it can’t — whether it’s a Shopify staff account, a paused store, or anything else. We’re not so concerned with the plan name itself, but rather with ensuring we don’t accidentally block eligible stores or enable billing errors.
So, if there is a clean way to detect “can this store pay for an app?” — that would be perfect for us. We’d still continue granting full access to all those who can’t.
Thanks again for the help!
I love that and I’m sure merchants that can’t purchase do as well.
There isn’t a specific api endpoint available for can purchase details, but any paid plan would be a can purchase plan. Looking again, your Can Purchase
list looks near complete. I would consider adding Plus Trial to this list as it is a paid plan. Also Staff Business is a Shopify Employee non-test plan, so 3rd party app purchases are expected (although some apps do offer Shopify Employees free access).
1 Like
Thanks so much for the clarification — this is exactly the kind of detail we were hoping to get!
We’ll make sure to include Plus Trial
and Staff Business
in our list of purchasable plans based on your explanation. This is really helpful, and we’ll reflect these changes in how we manage access to paid features in our app.
We’re also happy to offer free access to eligible stores that can’t purchase app plans, so this guidance helps us do that more reliably.
Appreciate the support! 
1 Like