A place to discuss charging merchants for your apps and services using the billing API.
I'm reading this https://shopify.dev/apps/billing/subscriptions/annual#plan-changes and I'm wondering if there is a way to see this deferred status and the subscription cycle end date through the Graphql.
For example, if a merchant downgrades from a $200/year to $10/month subscription - GraphQL shows the $200/year plan as cancelled and the $10/month plan as active. This is a bit confusing since I expect the $200/year to still be active and the $10/month to be in a deferred status (and switch to active next year). Especially since my app should really still be giving the features of the $200/year "cancelled" plan until it officially ends.
We are also seeing this in 2023. Any thoughts, Shopify?
How can we know what yearly subscriptions are deferred vs active?
According to the documentation, with the "standard" behaviour, updates should replace the current subscription when the new subscription is more expensive. Otherwise, the replacement is deferred.
We are not seeing this. Instead, it seems that Shopify "cancels" the current yearly subscription and adds a new "active" one, even when that amount is lower. Then the billing period carries over to the new one. This can be repeated many times.
This is what happened after I downgraded a running $25 yearly plan to a $17 one in production:
{"id"=>30433181995,
"name"=>"build",
"price"=>"17.00",
"billing_on"=>"2024-08-11",
"status"=>"active",
"activated_on"=>"2023-08-14",
...
{"id"=>30432756011,
"name"=>"grow",
"price"=>"25.00",
"billing_on"=>nil,
"status"=>"cancelled",
"activated_on"=>"2023-08-14",
"test"=>false,
"cancelled_on"=>"2023-08-14",
...
Hence, we can't tell which yearly subscription should remain active. Should the paid yearly subscription remain "active" until the end of its billing cycle, and any deferred subscriptions have a new state, e.g. "deferred"?
What do you advise Shopify?
How did you tackle this @ko-lem ?
Shopify – These are the mains issues:
Your documentation states that:
The existing recurring app charge is canceled and replaced by the new charge when the merchant approves it.
…
If a merchant switches from an annual plan with a higher price to an annual plan with a lower price, or from an annual plan to a 30 day plan, then the charge for the new plan is deferred until the current plan’s subscription cycle is complete.
…
Here, it's mentioned that charges are replaced immediately, and it's the billing of the charge that is deferred. That's what we are seeing.
However, the GQL documentation states:
Cancels the merchant’s current app subscription immediately and replaces it with the newly created app subscription, with the exception of the following scenarios where replacing the existing app subscription will be deferred until the start of the next billing cycle.
Here, it's said that “replacing” will be deferred. This is confusing and incorrect. One says charges are replaced, whereas this one says it depends. It turns out the GQL documentation is incorrect. The replacement happens regardless. It’s the billing that is deferred.
It's still an existing issue. But it doesn't bother me since that app doesn't have any paying customers 😂