Shopify billing api subs upgrades

not seeing the prorated upgrade price for subs in subs confirmation page. It is always showing the full subs requested price for upgrades with APPLY_IMMEDIATELY replacementBehaviour

Hey again @Jaspreet_Singh - jumping in here as well.

Just to share some context, proration should be happening automatically for upgrades. When a merchant upgrades to a higher-priced plan mid-cycle, We calculate the prorated amount based on what they’ve already paid, the price difference between plans, and the time left in the billing period. More on how that works here:

That said, what you’re seeing on the confirmation page might just be the full recurring plan price being displayed (i.e. what the merchant will pay going forward each cycle) rather than the actual prorated charge for the current period. The prorated amount would be reflected in the actual billing rather than what’s shown on the confirmation screen.

Before I dig further into this though, could you share a bit more about what you’re seeing? Specifically, is it just the confirmation page showing the full price, or are you seeing the full amount actually being charged to the merchant? Also, are both the old and new subscriptions on the same billing interval and currency? And are you testing this on a test
subscription or a live one?

That would help me figure out whether this is expected confirmation page behaviour or something we need to look into further. The docs on replacement behaviour are here if helpful: AppSubscriptionReplacementBehavior - GraphQL Admin

Speak soon!

Thank you, @Alan_G.

It’s just the confirmation page showing the full price.
Yes, both the old and new subscriptions are on the same billing interval and currency.
We are testing this on a test subscription.

Hey @Jaspreet_Singh - thanks for confirming.

The confirmation page is specifically designed to display the recurring plan price (what you’ll be billed per cycle going forward), not the prorated charge for the current period. The replacementBehavior value only changes the description wording on that page (whether it says your new plan “immediately replaces” the previous one or replaces it “once your current app subscription billing cycle is complete”). It doesn’t affect the price shown.

The prorated amount for the current period gets calculated and applied at the time of acceptance, based on the formula from my earlier reply.

There’s a similar thread from a little while back where my colleague Kyle covered this: Inconsistent Behavior for replacementBehavior=APPLY_ON_NEXT_BILLING_CYCLE in appSubscriptionCreate Mutation. Not exactly the same scenario, but the underlying logic is the same: replacement behavior governs billing timing, not what’s displayed on the confirmation screen.

If you want to verify end-to-end, you can check the actual charge on the test sub’s transaction record after accepting. You should see the prorated amount there, not the full plan price that was shown on the confirmation screen.

Let me know if I can clarify anything further on our end here!

@Alan_G where can we see the transaction record, as it says txns are not available for a test charge

Hey @Jaspreet_Singh, apologies for the confusion on my end there. I should have been clearer. test charges (and any charge on a dev store) don’t produce a transaction record, since no charge is actually processed as you mentioned.

From the Managed Pricing docs: “When a development store subscribes to a plan, Shopify creates a test subscription for that store. Your account isn’t charged for test subscriptions.”

What I had in mind was a real (non-test) charge on a real shop used as a test, where the prorated amount would actually show up in the transaction record. I realize that’s not ideal during development though.

A cleaner path to verify the proration math without a live charge would be:

  1. Rely on the proration formula from the docs and derive the expected amount
  2. Subscribe to the APP_SUBSCRIPTIONS_UPDATE webhook and inspect the payload when the subscription is accepted

This is something that we have seen come up before and we have a few suggestions here: Question about app subscription cycles charges - #2 by KyleG-Shopify

Hope this helps, happy to put through a feature request for this as well.