Stayput / Guides

Guide · facts checked 5 Nov 2026

How Stripe calculates churn rate (and where a cancel flow shows up in it)

Stripe's subscriber churn rate is the number of subscribers who churned in the past 30 days, divided by the active subscribers 30 days ago plus the new subscribers added in those 30 days. A subscriber churns when all of their subscriptions are canceled or marked unpaid; past_due does not count. A subscriber who started to cancel and stayed never enters the numerator, which is why a cancel flow shows up in this number.

The three churn numbers in Stripe Billing analytics

MetricWhat Stripe says it isCounts a downgrade?
Subscriber churn rate“the number of total churned subscribers in the past 30 days, divided by the number of active subscribers 30 days ago, plus the total new subscribers in the past 30 days”No: a downgrader is still a subscriber.
Churned revenue“the sum of churned MRR plus total contraction MRR in the period”Yes, as contraction MRR.
Retention by cohortSubscribers grouped by when they first started generating positive MRR, with the share still active at the end of each later month.Revenue retention includes upgrades and downgrades, so it can exceed 100%.

Stripe’s own worked example for the first one: a business starts the month with 1,000 subscribers, adds 100 and churns 100, so the churn rate is 100 / (1,000 + 100) = 9.1%. Note that the new subscribers are in the denominator, so the rate is not simply “lost divided by where you started”.

What counts as churned

  • Canceled or unpaid. Stripe’s page: when a subscriber’s subscription is canceled or marked as unpaid, it is considered churn and no longer counts towards MRR. A subscriber churns when all of their subscriptions are canceled or unpaid, so a customer who cancels one of two subscriptions has not churned.
  • Active and past_due are not churn. MRR is the monthly-normalized value of all active and past_due subscriptions. A customer whose card is failing and still retrying stays in your numbers until the subscription becomes canceled or unpaid.
  • Downgrades are contraction, not churn. They add to churned revenue as contraction MRR but leave the subscriber count alone.
  • Paused subscriptions. The analytics page does not mention pausing, so it does not say how a pause is counted. Stripe’s API reference says pause_collection leaves the subscription’s status unchanged, so by the rule above a subscription paused that way is not canceled or unpaid. Check your own Billing overview before you rely on either reading.
  • You can change the definition. The page says you can click Configure on the Billing overview to change how Stripe calculates MRR, churn and active subscribers, and that changes take 24-48 hours to appear. If your number differs from someone else’s, compare these settings first.

A worked example with a cancel flow in it

The numbers below are made up for the arithmetic; they are not data from any business. A business has 500 active subscribers 30 days ago and adds 50 new ones. During the month, 36 subscribers start to cancel.

No cancel flowCancel flow, 6 stay
Churned subscribers3630
Denominator (500 + 50)550550
Subscriber churn rate6.5%5.5%

Six people staying moves the monthly rate by one point. The rate alone cannot tell you whether the flow caused that point, because everything else that changed that month is in the same number. To separate the flow from the rest, compare a group that saw it with a group that did not; what counts as a save walks through that holdout and includes a calculator.

Where each kind of save shows up

  • The subscriber stays on the same plan (for example after a discount): no churned subscriber from the cancel itself. A discount does lower MRR: a permanent recurring discount is always subtracted, and Stripe’s settings decide whether other recurring or one-time discounts are. With discounts subtracted, a 100% coupon takes a subscriber to 0 MRR, and Stripe then counts them as churned.
  • The subscriber downgrades: no churned subscriber, but the difference counts as contraction MRR, so it appears in churned revenue. The save is real; it just is not free in that chart.
  • The subscriber pauses: see the paused note above; confirm in your dashboard how it is counted before you report it.

Check Stripe's number from your own events

  1. Take a start-of-window list. Customers whose subscriptions were active or past_due 30 days ago.
  2. Count new subscribers that became active in the window, using the same “active at start” or “active at first payment” setting as your Stripe configuration.
  3. Count churned subscribers. Customers with no active or past_due subscription left because the last ones were canceled (customer.subscription.deleted) or moved to unpaid.
  4. Divide: churned / (start-of-window + new).

If your figure and the dashboard differ by more than a rounding step, look at three things: trials, free plans and metered products (Stripe excludes them from MRR), the active-subscriber setting above, and time zones. Stripe notes that prebuilt report dates use UTC while the charts use your account’s time zone, so monthly totals may not match exactly.

See the stay-or-go moment your churn number is made of

Run a sample cancel session: play a subscriber, give a reason, and see the offer and the Stripe change behind it.

90 seconds, no sign-up. You play the subscriber; the AI answers, and “Cancel anyway” is always one click away.

Related

Sources, read 5 Nov 2026