How to Calculate Involuntary Churn Rate (Formula + Examples)
The exact formulas for involuntary churn rate — customer-based and MRR-based — plus payment failure rate, recovery rate, and net involuntary churn, with worked examples and where to find each number in Stripe.
Rechurn Team
Payment Recovery Experts
Why "Churn Rate" Isn't Enough
Most SaaS dashboards give you one churn number. That number mixes two very different things: customers who decided to leave, and customers whose payment failed and never got fixed. If you've read involuntary vs voluntary churn, you know why that distinction matters — the fixes are completely different.
This post is the practical follow-up: the exact formulas, worked examples with real numbers, the mistakes that quietly distort the result, and where to pull each input from Stripe.
There are four numbers worth tracking:
| Metric | Answers the question | |---|---| | Payment failure rate | How often do renewals fail on the first attempt? | | Recovery rate | Of what fails, how much do we get back? | | Involuntary churn rate (customers) | What share of customers do we lose to unrecovered failures? | | Involuntary MRR churn rate | What share of recurring revenue do we lose to unrecovered failures? |
The first two are process metrics — they tell you where the leak is. The last two are outcome metrics — they tell you how big it is.
Formula 1: Payment Failure Rate
Payment failure rate = Renewal payments that failed on first attempt
÷ Total renewal payments attempted
× 100
Count renewal attempts, not charges. If one invoice was attempted four times, that's one failed renewal, not four.
You can compute it by count or by volume (currency). Volume is usually more useful because a failed $2,000 annual renewal matters more than a failed $9 monthly one. Stripe's own revenue recovery analytics uses the volume version: the percentage of subscription payment volume that failed on the first attempt.
Example:
| Input | Value | |---|---| | Renewal invoices attempted in September | 1,200 | | Failed on first attempt | 96 | | Payment failure rate | 96 ÷ 1,200 = 8.0% |
Formula 2: Recovery Rate
Recovery rate = Failed renewals eventually paid
÷ Failed renewals
× 100
"Eventually" needs a defined window — typically the length of your retry schedule plus a grace period (e.g. 30 days after the first failure). Recovered by any means counts: an automatic retry, the customer updating their card, a manual charge.
Example (continuing):
| Input | Value | |---|---| | Failed renewals in September | 96 | | Paid within 30 days of first failure | 51 | | Recovery rate | 51 ÷ 96 = 53.1% |
Info
Stripe's recovery analytics reports recovered volume split by method — Retries (Stripe retries), Emails (Stripe emails), and Other (charges made via the API or Dashboard, which includes third-party email tools). It also notes that the current and previous month can show a temporarily low recovery rate because payments are still "in recovery".
To see how your number compares, check the failed payment recovery rate benchmarks.
Formula 3: Involuntary Churn Rate (Customer-Based)
Involuntary churn rate = Customers lost to unrecovered payment failures in the period
÷ Active customers at the start of the period
× 100
A customer is "lost" when the subscription ends because payment never succeeded — in Stripe terms, when the subscription moves to canceled or unpaid after the final retry.
Example:
| Input | Value | |---|---| | Active customers on September 1 | 1,150 | | Failed renewals never recovered | 45 | | Of those, customers whose subscription ended | 41 | | Involuntary churn rate | 41 ÷ 1,150 = 3.6% |
Why 41 and not 45? Four customers with unrecovered invoices were still inside their retry window on September 30 — their subscriptions were past_due, not yet ended. They belong to October's number if they don't pay. This is the most common source of disagreement between two people computing "the same" metric.
Variant: Stripe's denominator
Stripe's subscriber churn rate uses a slightly different denominator: churned subscribers in the past 30 days divided by active subscribers 30 days ago plus new subscribers in the past 30 days. If you want your involuntary number to be comparable with Stripe's overall churn figure, use the same denominator:
Involuntary churn rate (Stripe-style) = Involuntarily churned subscribers (30d)
÷ (Active subscribers 30 days ago + New subscribers in 30d)
Either is fine. Just pick one and never mix them.
Formula 4: Involuntary MRR Churn Rate
Customer counts treat a $9 plan and a $900 plan equally. For revenue impact, use MRR:
Involuntary MRR churn rate = MRR lost to unrecovered payment failures in the period
÷ MRR at the start of the period
× 100
Normalize annual plans to monthly (annual price ÷ 12), the same way Stripe calculates MRR.
Example:
| Input | Value | |---|---| | MRR on September 1 | $58,000 | | MRR of the 41 involuntarily churned subscriptions | $1,640 | | Involuntary MRR churn rate | $1,640 ÷ $58,000 = 2.8% |
When the MRR rate is lower than the customer rate (2.8% vs 3.6% here), your failures skew toward cheaper plans — typical for consumer cards on low price points. When it's higher, larger accounts are failing and each one deserves manual follow-up.
Stop losing revenue to failed payments
Rechurn recovers failed charges automatically with AI-powered dunning sequences. No monthly fee — 15% of what we recover, only when we recover it.
Run My Free AuditFormula 5: Gross vs Net Involuntary Churn
It helps to separate what's at risk from what's actually lost:
Gross involuntary churn (at risk) = MRR of all failed renewals ÷ Starting MRR
Net involuntary churn (lost) = Gross involuntary churn × (1 − Recovery rate)
Example:
| Step | Calculation | Result | |---|---|---| | MRR attached to failed renewals | 96 failures, avg $41.50 MRR | $3,984 | | Gross involuntary churn | $3,984 ÷ $58,000 | 6.9% | | Recovery rate (by volume) | — | 55% | | Net involuntary churn | 6.9% × (1 − 0.55) | 3.1% |
This decomposition is the most useful view for deciding what to do next:
- High gross, high recovery — you have a failure problem. Look at prevention: expiring cards, card updater, pre-dunning.
- Normal gross, low recovery — you have a recovery problem. Look at your retry schedule and dunning emails.
- Both high — start with recovery; it pays back faster.
Every point of recovery rate you add moves net churn directly. In the example, going from 55% to 70% recovery drops net involuntary churn from 3.1% to 2.1% — about $600 MRR kept every month, compounding.
Worked Example: One Month, All Five Numbers
Putting it together for a SaaS at $58K MRR:
| Metric | Formula | Result | |---|---|---| | Payment failure rate | 96 ÷ 1,200 | 8.0% | | Recovery rate (count) | 51 ÷ 96 | 53.1% | | Involuntary churn rate (customers) | 41 ÷ 1,150 | 3.6% | | Involuntary MRR churn rate | $1,640 ÷ $58,000 | 2.8% | | Gross → net involuntary churn | 6.9% × 0.45 | 3.1% |
Want to project what a better recovery rate is worth in revenue? Plug your numbers into the recovery ROI calculator.
Common Mistakes That Distort the Number
1. Counting retries as separate failures
Stripe records a charge for every retry attempt. If you export failed charges and count rows, a single invoice retried eight times becomes eight "failures". Always deduplicate by invoice (or by subscription + billing period) before counting. The guide to finding failed payments in Stripe shows how.
2. Mixing in voluntary cancellations after a failure
Some customers see the failed payment email and cancel on purpose. That's voluntary churn triggered by a failure, and lumping it into involuntary churn inflates the number (and makes dunning look worse than it is). In Stripe, subscriptions canceled by the retry process have cancellation_details.reason = payment_failed; explicit cancellations through the API or Dashboard have cancellation_requested. Split on that field.
Warning
Subscriptions that end in unpaid status are not canceled, so they carry no cancellation reason — but Stripe's analytics still count them as churn and remove them from MRR. If your failed-payment setting is "mark as unpaid", you must include unpaid subscriptions explicitly or you'll undercount. See past_due vs unpaid vs canceled.
3. Time-window mismatch
A payment that fails on September 28 is usually still being retried on October 1. If September's denominator includes it but its outcome lands in October, both months are wrong. Fix it with a cohort approach: attribute each failure to the month it first failed, and measure its outcome after a fixed window (e.g. 30 days). Accept that the most recent month is provisional.
4. Treating annual plans like monthly ones
An annual renewal that fails removes 12 months of revenue in one event. In MRR terms it's just annual ÷ 12, which hides how much cash is at stake. Track annual renewal failures separately — they're rarer, larger, and worth a personal email rather than an automated sequence alone.
5. Including first payments and trials
A card that fails on the very first charge after signup is an acquisition problem, not churn — the customer was never retained. Stripe's revenue recovery overview excludes the first invoice payment following a trial for this reason. Do the same.
6. Measuring only customers, never revenue
A 2% customer rate can hide a 5% MRR rate if your biggest accounts are the ones failing. Always report both.
Where to Get Each Input in Stripe
| Input | Where in Stripe |
|---|---|
| Failed payments, failure rate, recovery rate (by volume) | Dashboard revenue recovery overview (docs) |
| Recovered volume by method (Retries / Emails / Other) | Same page, "Recovered volume by method" breakdown |
| Top decline codes | Same page, "Failed volume by decline reason" (top five codes) |
| Starting MRR, active subscribers, subscriber churn rate | Dashboard → Billing overview (docs) |
| Per-customer MRR changes (to isolate churned MRR) | Billing overview → downloadable report "Customer MRR changes" |
| Why each subscription ended | API: subscription.cancellation_details.reason (payment_failed vs cancellation_requested) |
| Subscriptions currently at risk | Subscriptions filtered by status past_due |
Two gaps to be aware of. First, Stripe's overall churn metrics don't split voluntary from involuntary — you have to join the MRR changes report with cancellation reasons yourself. Second, the recovery overview covers recurring subscription payments only. We cover these blind spots in detail in what Stripe's recovery analytics doesn't tell you.
Tip
If you'd rather not assemble this by hand, the free Rechurn audit pulls most of these inputs in about 3 minutes using a restricted, read-only Stripe key (checked to be read-only, then discarded). It shows MRR at risk from past_due subscriptions, failed payment volume over the last 30 days, recoverable subscriptions, a breakdown by decline code, retry patterns, and card brand/country — with a CSV export. No account needed.
How Often to Measure
- Monthly, as a cohort: failures that first occurred in month M, outcome measured 30 days later.
- Weekly, for
past_dueMRR only — it's your early-warning signal. A jump in past-due MRR shows up weeks before it becomes churn. - After any change to your retry settings, dunning emails, or checkout — so you can attribute the effect.
For context on what "normal" looks like, see what percentage of SaaS churn is involuntary and the broader SaaS churn rate benchmarks.
Key Takeaways
- Track four numbers, not one — payment failure rate and recovery rate (process), plus customer and MRR involuntary churn rate (outcome)
- Involuntary churn rate = customers lost to unrecovered payment failures ÷ customers at start of period — and the MRR version uses revenue in both places
- Net involuntary churn = gross (at-risk) churn × (1 − recovery rate) — it shows whether you have a failure problem or a recovery problem
- Deduplicate by invoice — counting retry attempts as failures is the most common error
- Split on
cancellation_details.reasonand includeunpaidsubscriptions — otherwise voluntary cancellations leak in andunpaidchurn leaks out - Use cohorts with a fixed recovery window — the latest month is always provisional
- Stripe gives you most inputs but not the split — join the data yourself, or pull it with a free audit
Want to see what this looks like on your Stripe?
Paste a read-only Stripe key — no account needed. We'll show you past-due MRR, failed-payment volume, and how much is still recoverable. Free, 3 minutes, key discarded after.
Ready to recover your lost revenue?
Join hundreds of SaaS companies using Rechurn to automatically recover failed payments. Set up in 5 minutes, no code changes required.
Run My Free AuditFree 3-minute audit. No credit card required.
Related articles
Involuntary vs Voluntary Churn: Why 40% of Lost Revenue Is Preventable
Understand the difference between involuntary and voluntary churn. Learn why 20-40% of SaaS churn comes from failed payments — and how to fix it.
What Percentage of SaaS Churn Is Involuntary?
20-40% of all SaaS churn is involuntary, caused by failed payments rather than customer dissatisfaction. Here's the data breakdown by company size and stage.
Failed Payment Recovery Rate Benchmarks (2026)
What is a good failed payment recovery rate? 2026 benchmarks from Baremetrics, Churnkey, Recurly, Stripe and others — plus why the numbers disagree and how to measure yours comparably.