Im currently implementing the billing function for my shopify app, and im planning to use the managed pricing to make life easier. However, shopify documentation is quite limited which make me having some confused question. Here are some questions i have here:
-
What is the prorated behaviour of the upgrading a subscription?
Is that the same behaviour mentioned by subscription-billing#prorated-charges ? -
What will happening if downgrading from a premium plan to a basic plan? Can I change the behaviour?
According to subscription-billing#prorated-credits, it seems that downgrading a paid plan to another cheaper paid plan will trigger the prorated credits calculation, but seems according to AppSubscriptionReplacementBehavior, it can be modified through billing API. Will that be applicable to managed pricing? If not, what is the actual behaviour defined by managed pricing? -
According to subscription-billing, the behaviour of any cancellation/upgrade/downgrade should not change the “currentPeriodEnd”, but as i doing test charge, seems it’s not the same as the documentation mention: for every cancellation/upgrade/downgrade, the old plan is removed immediately, and new plan will have a different “currentPeriodEnd” as before.
After some searching, seems it’s a limitation with test environment.
Here may i have a confirmation: if there is any cancellation/upgrade/downgrade, the subscription ”currentPeriodEnd” should be the same as the previous one. Right? -
What is the difference between “Yearly recurring" and “Monthly recurring, with yearly discount”?
As from test charge, both of them are showing the same set of data, with interval = “ANNUAL” and currentPeriodEnd = createdAt + 1 year. Is it a expected behaviour or it’s just due to the problem of “test” vs “live” environment again?Enterprise 1 is monthly recurring with yearly discount, and enterprise 2 is yearly payment.
p.s. As my app will strongly depends on the currentPeriodEnd to calculate when i should update the user’s subscription information monthly, it’s a big concern for me if “currentPeriodEnd” is out of my expectation.

