Upgrading a subscription right after purchase: 3 months becomes 6
Shopify won't let a post-purchase offer change a subscription on an order that already has one. The upgrade has to go through Recharge or Loop. How it works, and what must not move.
2026-10-07 — AbakiraA buyer has just subscribed for three months and you’d like to offer six at a better price, on the page right after checkout. Shopify won’t do this on its own. Its post-purchase API refuses to modify a subscription on an order that already has one, and one app can’t edit a subscription contract created by another. The upgrade has to be made through your subscription app’s own API, Recharge or Loop, after the buyer accepts. Done properly, it’s the same contract made longer, with no second subscription and no change to the next billing date.
Why Shopify can’t do it directly
Two separate walls.
The first is on the post-purchase page itself. Shopify’s guide lists what a post-purchase subscription can’t do, and the first two items are “modifies a subscription on an order with an existing subscription” and “adds a subscription to an order with an existing subscription” (Shopify, Create a post-purchase subscription). So the one-click mechanism that works for a normal upsell is closed here.
The second is in the Admin API. The permission to edit subscription contracts is literally called write_own_subscription_contracts. An app can edit the contracts it created, and the buyer’s contract was created by Recharge or Loop. We checked with a real token: reading another app’s contracts is refused.
What’s left is the subscription app’s own API, with a key the merchant gives us.
”3 months to 6” means two different things
This is where most of the bugs hide, so it’s worth being precise.
Cadence. “Delivered every 3 months” becomes “delivered every 6 months”. That’s a different selling plan, and the change is to the interval.
Length. “Billed monthly, for 3 months” becomes “billed monthly, for 6 months”. The cadence doesn’t move. On Shopify, two monthly plans have exactly the same interval; the length lives in the subscription app. In Recharge it’s the number of charges after which the subscription expires (Recharge docs).
An upgrade built only for cadence will happily accept a “3 months to 6 months” rule between two monthly plans. The card shows, the buyer taps, Recharge answers with success, and nothing changes, while the buyer has been told their subscription is now longer. No error anywhere. So the app checks, when you save the rule and again when it runs, that the change actually moves something.
What has to stay put
An upgrade the buyer agreed to shouldn’t cost them anything they didn’t agree to. In practice:
- The next billing date doesn’t move. We tested this by writing to a real Recharge subscription: the interval changed from 3 to 6 months, and the next charge date stayed where it was. The buyer isn’t charged early and doesn’t lose a cycle.
- Skipped charges stay skipped. If the cadence isn’t changing, the app doesn’t resend it. Resending an unchanged interval to Recharge makes it recalculate the schedule, which can undo charges the customer skipped by hand.
- One contract. Nothing to cancel, no duplicate in the customer portal.
What the app refuses to do
It never makes a subscription shorter. If the current commitment is already longer than what the rule offers, the offer isn’t shown.
It treats an open-ended subscription as the longest one there is. Offering “6 months” to someone with no end date would shorten their commitment, so it doesn’t.
It doesn’t guess. If the current length can’t be read, the offer is withheld, and the reason shows in your admin.
It’s all or nothing. If you ask for cadence and length together and one of them can’t be changed safely, neither is sent.
It reads the subscription back afterwards. A success response from the API isn’t proof. If the values didn’t move, it’s recorded as a failure.
Recharge and Loop, side by side
Recharge. The upgrade runs from the thank-you page: the buyer taps, the app updates the existing subscription through Recharge’s API and confirms it. Cadence and length can both be changed, through the same Recharge API call. Prepaid plans, where delivery and billing run on different intervals, are left out for now: merging the two would change how often a real customer is charged.
Recharge also has a native feature for this, which it calls a post-purchase upsell swap: the offer is shown after checkout and Recharge updates the subscription in the background from the first recurring order. If you’re on Recharge and only need that, it’s worth looking at before adding anything.
Loop. Here the upgrade runs from the one-click page. A buyer who just subscribed to a monthly plan is offered your quarterly one; on accepting, the same contract switches, nothing is charged that day, and the renewal that was already scheduled becomes the quarterly one. We ran this end to end on a test store with a real Loop account in September 2026: the swap went through about five seconds after the tap, the contract read back as quarterly with the new product, the next billing date was unchanged, and the Shopify order total hadn’t moved. Loop’s API access depends on your Loop plan, so check that with Loop first.
Who should see the offer
A buyer who subscribed at checkout usually won’t get a regular subscription offer on the one-click page, because the order already holds a subscription. Aim the upgrade at exactly those buyers, and keep a separate rule for one-time buyers if you also sell subscriptions to them.
Setting it up
- Connect your subscription app in Post Purchase Upsell Abakira by pasting an API key. It’s stored encrypted and never shown again.
- Create the upgrade rule: which plan or length the buyer starts on, and which one you offer.
- Write the terms in the offer: the new length or interval, the new price per renewal, and that nothing is charged today.
- Place a test subscription order and accept. Then open the subscription in Recharge or Loop and read it: interval, length, next charge date.
The connection requires a paid plan; the App Store listing shows which one. Our guide has a chapter on subscriptions with the settings screens.
Sources: Shopify, Create a post-purchase subscription. Recharge, Auto-expire subscriptions. Checked on October 6, 2026.
Written by Abakira. We make small software: Shopify apps, web tools and iPhone apps. This article is about Post Purchase Upsell Abakira.