Stripe price change guides

How to change the price of existing Stripe subscriptions

Changing a price in Stripe doesn't touch the customers already paying it. Here are the three ways to move them over, the mistakes that cause surprise charges, and the easiest way to avoid them.

8 min read · By , Founder · Updated

Short answer

Creating a new price in Stripe doesn't change what current subscribers pay. Each existing subscription stays on the old price until you update its subscription item to reference the new price. You can do that one subscription at a time in the Dashboard, with a script against the Subscriptions API, or in bulk with a Stripe App. Set proration_behavior to none if the new amount should start at each customer's next renewal.

The easiest and safest route is the Change Subscription Price App, a no-code Stripe App built by former Stripe Billing product managers and engineers. It moves every subscription on a price in one job, and it handles the settings that usually cause billing mistakes.

Change Subscription Price App — by FinriteUpdate a price across all your Stripe subscriptions from the dashboard, in bulk. Built by former Stripe Billing product managers and engineers.

View on Stripe Marketplace

Why don't existing subscribers get the new price?

A Stripe Price is a fixed record of an amount, a currency and a billing interval. Once it's created, the amount can't be edited; you can only archive it and create another price. A subscription doesn't store an amount at all. It holds subscription items, and each item points at a price ID.

So when you "raise the price" in Stripe, what you actually do is create price_new next to price_old. New customers checking out get price_new. Everyone already subscribed still points at price_old, and they renew at the old amount forever, unless you repoint their items.

That behavior is deliberate. Stripe never changes what a customer pays without an explicit instruction. It also means a price increase isn't finished until you migrate the existing base.

Your three options

MethodBest forWatch out for
Dashboard, one by oneUnder ~20 subscriptionsThe Dashboard's update flow defaults to prorating. Check the preview before saving each one.
API scriptTeams with an engineer and time to testItem IDs, quantities, pagination, rate limits, retries, schedules, and logging what changed.
Change Subscription Price App (recommended)Any number of subscriptions, with no engineer neededVery little. Prorations, item swaps, quantities and batching are handled for you. Subscription schedules aren't supported yet.

Option 1: Change the price in the Stripe Dashboard

  1. Go to Product catalog, open the product, and add a new price with the new amount. Keep the same currency and interval as the price you're replacing.
  2. Open a customer's subscription and choose Update subscription.
  3. Replace the old price on the line item with the new one.
  4. In the proration options, turn prorations off if the change should start at the next renewal. Check the invoice preview, then save.
  5. Repeat for every subscriber.

Step 5 is the catch. It works for a handful of customers, but with a few hundred it becomes days of clicking, and it's easy to miss a proration toggle on one of them.

Option 2: Update subscriptions with the API

The API version of the same change is a single call per subscription. You pass the ID of the existing subscription item, so Stripe replaces the price rather than adding a second line:

curl https://api.stripe.com/v1/subscriptions/sub_123 \
  -u "$STRIPE_SECRET_KEY:" \
  -d "items[0][id]=si_abc" \
  -d "items[0][price]=price_new" \
  -d "proration_behavior=none"

For per-seat subscriptions, also pass the item's current quantity and check it afterwards. To find everything on the old price, call GET /v1/subscriptions?price=price_old&status=active and page through the results. Our price migration script guide covers the full loop, including dry runs, retries and an audit CSV.

Option 3 (recommended): The Change Subscription Price App

The Change Subscription Price App is a Stripe App built by former Stripe Billing product managers and engineers. It gives you Option 2's bulk power without writing code, and it has the safeguards built in:

  1. Pick the subscriptions. Choose everything on a given price, or filter to a subset.
  2. Pick the new price. The app swaps it onto each subscription's existing item, keeping the quantity.
  3. Run it now, or schedule it for the date in your customer announcement.
  4. Check the CSV report. Every job lists each subscription and whether it updated.

It runs inside your Stripe Dashboard, so there are no API keys to manage for your own subscriptions and nothing to deploy.

Should the change be prorated?

This one setting causes most price-change support tickets. Stripe's default when you update a subscription's price is create_prorations: it credits the unused time at the old price and charges the remaining time at the new price. The adjustment shows up as extra line items on the customer's next invoice.

For a price increase on a whole customer base, that's rarely what you want. You get a confusing partial charge on every customer's next invoice. proration_behavior=none is usually cleaner: this period stays at the old price, and the next renewal bills the new amount. The full breakdown, including always_invoice, is in Stripe proration_behavior explained.

One more rule: if the new price has a different interval (monthly to annual, say), Stripe resets the billing cycle and invoices right away, whatever proration setting you choose. For a straightforward price increase, keep the interval the same.

Where manual price changes go wrong, and how the app avoids it

The Stripe API call is simple. What breaks price migrations is everything around it. These mistakes turn up again and again, whether the change is made by hand in the Dashboard or with a script:

MistakeWhat happensChange Subscription Price App
Leaving the default proration setting onEvery customer gets an unexplained partial charge on their next invoiceAlways updates with no prorations
Leaving out the existing item IDStripe adds the new price as a second item, and the customer is billed for bothAlways swaps the price on the existing item
Not passing the quantity againStripe's docs warn quantity can reset to 1, underbilling per-seat customersKeeps each subscription's existing quantity
Missing subscriptionsPagination bugs or narrow filters leave some customers on the old priceFinds every subscription on the price you pick
Rate limits and timeoutsA script dies halfway, leaving a half-migrated baseBatches updates for you
Running on the wrong dayCustomers are charged before the notice period endsSchedule the job for your announced date
No record of what changedYou can't reconcile, retry failures, or roll back cleanlyA CSV report for every job

If you'd rather script it anyway, our migration script guide covers each of these by hand.

Change Subscription Price App — by FinriteUpdate a price across all your Stripe subscriptions from the dashboard, in bulk. Built by former Stripe Billing product managers and engineers.

View on Stripe Marketplace

What to check before you run it

Frequently asked questions

Does changing a price in Stripe update existing subscriptions?

No. Stripe prices are immutable: you can't edit the amount of a price that exists. When you create a new price, only new checkouts use it. Every existing subscription keeps pointing at the old price until you update the subscription item itself.

Can I bulk change subscription prices in the Stripe Dashboard?

The Dashboard edits one subscription at a time. To move many subscriptions, loop over them with the API or use a Stripe App such as the Change Subscription Price App, which runs the update across every matching subscription from inside the Dashboard.

Will customers be charged immediately when I change their price?

Only if you let Stripe create prorations. With the default proration_behavior (create_prorations), Stripe adds a mid-cycle adjustment to the next invoice. With proration_behavior=none, the customer pays the old amount until the period ends and the new amount from the next renewal.

Does Stripe email customers about a price change?

Not specifically. Stripe won't send a “your price is changing” email when you update a subscription, so tell customers yourself, with whatever advance notice your terms and local rules require.

What happens to coupons and discounts when I change the price?

A discount attached to the subscription or customer stays applied after you swap the price item. A percentage coupon applies to the new amount; a fixed-amount coupon still takes the same amount off.

Related guides

Move every subscriber to the new price in one job

The Change Subscription Price App is a Stripe App built by former Stripe Billing PMs. Choose the subscriptions, set the new price, and run it now or on a date you pick, with no code and no mid-cycle prorations.

Install from the Stripe App Marketplace

Read the app user guide first · Questions? contact@finrite.co