Voluntary vs involuntary churn.
What each one is, how to measure both in Stripe, and what to do about failed payments and cancellations.
What is involuntary churn?
Involuntary churn is revenue lost when a subscription ends because a payment fails and is never recovered. Nobody decided to cancel. The card expired, was replaced, ran out of funds or was declined by the bank, and the retries ran out.
Declines come in two kinds, and they behave differently:
- Soft declines are temporary, like
insufficient_funds. A retry a few days later can go through. - Hard declines mean the bank has rejected the charge and a retry won't fix it, like
lost_card,stolen_card,incorrect_numberorauthentication_required. Stripe keeps the retries on its schedule but doesn't run them until the customer adds a new payment method.
Stripe also won't retry when there is no payment method on file at all.
For soft declines, Smart Retries picks when to try again. Stripe's recommended default is 8 tries within 2 weeks, and you can stretch the window to as long as 2 months (Stripe docs, checked Oct 18, 2026). While retries run, the subscription is past_due and still counts in Stripe's MRR. After the final attempt it is canceled, marked unpaid, left past_due or paused, depending on your settings. Stripe's own metrics count it as churn once it is canceled or unpaid.
Every decline carries a code that tells you which case you're in. Our list of Stripe decline codes explains what each one means and what to do next.
What is voluntary churn?
Voluntary churn is a customer choosing to leave. They cancel in Stripe's customer portal, email you to cancel, or decide not to renew at the end of the term. It is a decision, so it can be seen coming and sometimes changed.
The reasons cluster. When customers cancel in Stripe's customer portal with reasons turned on, they pick from a fixed list: too expensive, unused, switched service, missing features, too complex, low quality, customer service or other. Totaled in dollars, those answers show which problem costs you most.
Voluntary churn also gives early signs that involuntary churn doesn't:
- Usage drops: fewer logins, fewer active users, fewer events.
- Seats removed or a downgrade, which is partial churn in revenue terms.
- A scheduled cancel. With cancel at period end, the subscription stays active until the period closes, which gives you days or weeks to act.
On annual plans the decision is often made months before the renewal date, and the renewal is simply where it shows. Check usage 60 and 30 days before each annual renewal, while there is still time to talk.
The line between the two isn't always clean. A customer who stopped using the product months ago may simply let the card fail. It looks involuntary in Stripe, but the cause was a decision. If usage had faded before the payment failed, treat the customer as both: fix the card and ask what changed.
See how much MRR is at risk from cancels and failed payments in your own Stripe.
How to measure each in Stripe
Stripe records why each subscription ended in cancellation_details.reason. Read it together with the subscription status to split churn into its two kinds.
| In Stripe | What it means | Count as |
|---|---|---|
reason cancellation_requested | Canceled on request, by the customer or by you (count non-payers you cancel by hand as involuntary) | Voluntary |
reason payment_failed | Canceled after the final retry failed | Involuntary |
reason payment_disputed | Canceled after a dispute was opened | Track separately |
status unpaid | Retries ended, subscription left open | Involuntary |
status past_due | Payment failed; retries running, or left past due after them | At risk, not churned |
cancel_at_period_end set to true | Cancel scheduled, still active | At risk, not churned |
Then work out each rate over the same period:
- Voluntary churn rate = customers who canceled on request ÷ paying customers at the start of the period.
- Involuntary churn rate = customers lost to failed payments (canceled with
payment_failedor moved tounpaid) ÷ paying customers at the start of the period.
Example: you start the month with 400 paying customers. 10 cancel on request and 4 are lost to failed payments. Voluntary churn is 2.5%, involuntary churn is 1%, and total customer churn is 3.5%. Run the same split on MRR to see revenue churn by type: MRR lost to each kind ÷ MRR at the start of the period. Downgrades and seat cuts belong on the voluntary side, or on their own line as contraction, because the customer chose them.
Three details keep the numbers honest:
- Date churn by
ended_at, notcanceled_at. For a cancel at period end,canceled_atis when the customer asked, not when they left. - Check your failed-payment setting. If failed subscriptions are marked
unpaidinstead of canceled, they never get apayment_failedreason, so count them by status. Stripe's Billing overview treats a subscriber as churned once all their subscriptions are canceled orunpaid. - Use Stripe's revenue recovery overview for the involuntary side. It shows your failure rate, your recovery rate and what retries and emails brought back.
What to do about each
Involuntary churn is a setup problem first, then a follow-up problem.
- Turn on Smart Retries, Stripe's emails for failed payments and expiring cards, and automatic card updates.
- Ask for a new card at once on hard declines and missing cards. Retries won't run on those.
- Ask valuable customers for a new card in the 30 days before it expires, not after the charge fails.
- When Stripe's retries end, send valuable customers a personal note with a card-update link. By Stripe's own figures, businesses using Stripe recover 55% of failed payments on average (Stripe Billing page, checked Oct 18, 2026). The customers still unpaid after that are where a note from you matters. Our guide to failed payment recovery covers what to send and when.
Voluntary churn is an early-warning problem.
- Watch usage and seats against each customer's own baseline, and check in when they fall.
- Send a save email the day a cancel is scheduled, with a pause or a smaller plan. Keep canceling one step.
- Total cancel reasons in dollars each month and fix the biggest one.
- Send a win-back note within 90 days to customers you'd want back.
If you bill by usage, voluntary churn often shows up as usage fading for weeks before anything changes in billing. Our guide to metered billing on Stripe explains why the invoice lags behind.
North Metric puts both kinds in one list, ranked by money at risk. It drafts a card-update note when Stripe's retries end, or at once for a hard decline, and a save email when a cancel is scheduled. You approve each one or set rules, and Stripe's own recoveries are never counted as money kept.
Fair questions.Straight answers.
A renewal payment fails and is never recovered: the card expired or was replaced, funds ran short, the bank declined it, or the card was reported lost or stolen. The customer often meant to stay, which makes it the cheapest churn to fix.