Guide

How to reverse a Stripe subscription price change

Undo a price change cleanly: move back, release schedules, and the gotchas · July 2026

The short version: To undo a price change, move each subscription's line item back to the original price with proration_behavior: none. If the change was scheduled for a future cycle and hasn't fired yet, release the subscription schedule instead. Two things trip people up: you need the original price ID (capture it before you change anything), and if you archived the old price, you have to reactivate it before you can move anyone back onto it.

First, which kind of change are you undoing?

The reverse depends on how the change was applied:

  • An immediate change (the subscription already points at the new price): undo it by moving the line item back to the original price.
  • A scheduled change (queued for the next renewal, hasn't happened yet): undo it by releasing or canceling the subscription schedule before it fires. Nothing has changed on the subscription itself, so there's nothing to move back.

Reversing an immediate change

Point the subscription back at the price it had before, and suppress proration so the customer isn't touched mid-cycle:

stripe.subscriptions.update("sub_123", {
  items: [{ id: "si_123", price: "price_ORIGINAL" }],
  proration_behavior: "none",
});

This is why you capture the original price ID per subscription before you migrate. Without that record, "put everyone back" becomes guesswork, especially if subscribers were on different starting prices.

Reversing a scheduled (next-cycle) change

If you queued the new price with a subscription schedule, the subscriber is still on the old price. You undo it by releasing the schedule so the queued phase never takes effect. Release the schedules you created for this change, and be careful not to touch a schedule the customer or another tool set up for a different reason.

The gotcha: an archived old price

A common failure: during the original migration you archived the old price (set it inactive) so new customers couldn't land on it. Stripe won't let you move a subscription onto an inactive price, so the reverse fails with a "price is inactive" error. The fix is to reactivate the original price first (set it active again), then move the subscriptions back. If you also changed the product's default price, set that back too.

What reversing does and doesn't refund

Moving a subscription back with proration_behavior: none doesn't issue a refund, it just bills the original amount at the next renewal. If the original change used proration and actually charged someone, reversing re-prorates in the other direction rather than cleanly refunding, so check the invoices if money already moved. And note that a reverse can't restore usage that was already reported and cleared on metered items, so treat metered subscriptions carefully.

Doing it without a script

Tracking every subscription's original price, reactivating archived prices, releasing the right schedules, and moving everyone back in batches is exactly the kind of thing that's easy to get wrong by hand. PricePilot Migrate Pro captures each subscription's original price at migration time and gives you a one-click reverse: it reactivates the source price if needed, moves everyone back (or releases the schedules it created), and skips anything it didn't touch. So "undo" is a button, not a fire drill.

Migrate with a one-click undo built in

PricePilot records the original price for every subscription it changes, so reversing is a single click, archived-price gotcha handled for you. Preview and test mode are free.

Open Migrate Pro →

Frequently asked questions

How do I undo a Stripe subscription price change?

Move the subscription back to the original price with proration_behavior: none, or release the subscription schedule if the change was queued and hasn't fired. You need the original price ID, so capture it before changing anything.

Why does moving a subscription back fail?

Usually the old price was archived. Reactivate it in Stripe first, then move the subscription back onto it.

Does reversing refund the customer?

Not automatically. With proration off it just bills the original amount at renewal; if the earlier change charged someone, reversing re-prorates rather than issuing a clean refund.

Related guides