top of page

How to measure involuntary churn rate?

The first step to managing churn is to track your voluntary and involuntary churn rates separately.


I cannot stress how important it is to break it down, especially as you begin to hit scale.


I’ll share a few ways you can calculate your involuntary churn rate, starting from the simplest to a more comprehensive one.




Method 1: Use Stripe


...or any billing provider.


Step 1: Export the Recoveries Report


Navigate to: Stripe Dashboard > Revenue Recovery > Failed Payments


Set your date range (e.g., last 3 months, or custom range).

For custom range, you may need to use Sigma. Open to view code.

You can customize the date window.

select reporting_currency, initial_payment_decline_reason as decline_reason, sum(initial_failed_amount) as initial_failed_amount, count(*) as initial_failed_count from recoveries where coalesce(initial_payment_failed_at, paid_at) between cast('2025-11-01 00:00:00' as timestamp) and cast('2025-12-01 00:00:00' as timestamp) and initial_payment_decline_reason is not null and initial_payment_failed_at is not null group by 1, 2 order by 3, 4

  



Click "Export" and download the recoveries data as CSV




This gives you the Recoveries_[date_range].csv file



Step 2: Get Your Starting Subscriber Count


Navigate to: Stripe Dashboard > Billing > Subscribers


Set the date to the start of your analysis period (e.g., Oct 1)


Note the total number of active subscribers



This is your denominator.



Step 3: Calculate Involuntary Churns from CSV


Open the CSV and filter/count rows where:

retries_exhausted = "true" AND

amount_paid = "0.00" AND

recovered_at is empty


This count is your involuntary churn.



Step 4: Calculate the Rate


Involuntary Churn Rate = (Involuntary Churns / Starting Subscribers) × 100


Example using your data:

  • Involuntary churn = 40 (from Step 3)

  • Starting subscribers = 1000 (from Step 2)

  • Involuntary churn rate = 40/1000*100 = 4%


This is a rough, back of the napkin method to calculate your involuntary churn rate.


❌ Don't use this Stripe's "Failed Payments" chart because it includes:

  • Payments that eventually recovered (through retries/dunning)

  • Temporary failures that customers fixed





You can extend this calculation to the voluntary churn piece as well.


Step 5: Extract the total churned subscribers.


Make sure you set the exact time period as your exported CSV. It might look something like (Oct 1st to Dec 23rd) if you're exporting mid-month.




Let's assume this was 200 subscribers when exported for ~2.5 months.


So subscribers lost due to voluntary churn is 200 minus 40.

= 160


Voluntary churn rate is 160/1000 = 16%


80% of your churn is voluntary (customers actively choosing to cancel), while 20% is involuntary (payment failures).



The biggest downside of this method is it only captures permanent involuntary churn (customers you lost), not total involuntary churn risk (all customers who experienced payment failures, including those you successfully recovered).



Method 2: Use Proper Tracking


Larger companies track churn at the moment of cancellation by capturing the cancellation trigger, not retrospectively analyzing payment data.


Step 1: Extract reason code

Every subscription cancellation gets tagged with a reason code:



This is how Stripe treats it:

  • "cancellation_requested" → Voluntary

  • "payment_failed" → Involuntary

  • "payment_disputed" → Involuntary (chargeback)



Voluntary churn would encompass when the user clicks on the cancel button, user doesn't renew, user downgrades to the free tier.


Involuntary churn would encompass if subscriptions are cancelled due to a payment failure and when dunning retries are exhausted.


Step 2: Use an internal system

Beyond Stripe, we would also want to use an internal system.


You should track all the payment methods you use, the locations where users come from, reasons why they churn, their card network, and so on.


Your churn rate calculation should also be a rolling churn rate instead of a point-in-time snapshot. The simple method won't work if you're growing fast.


You'll want a lot more granularity in the data. And you need help from data scientists.


Step 3: Draw conclusions and hypothesis

You'd want to start cleaning up the data for all your important regions (e.g., if the US is very important for subscriptions) so you can measure the idiosyncrasies of each market. You might find that Brazilian users tend to wait quite a while before subscribing, even way past their 30-day free trial, up to 45 days for conversion.


If you discover that you have higher involuntary churn, paired with customers returning about 60 to 90 days later, it might point at payment friction. You can switch payment providers in particular regions as an experiment.


Through data mining work, you'd discover insights like price sensitivity by region, preferred payment methods by country, and behavioral patterns that differ across markets.



Realization of churn

One accounting question that decides churn rate is when should a failed payment be realized? And when should a voluntary cancellation be realized?


I'll leave you with this note from Netflix to make a decision,

"A membership is canceled and ceases to be reflected in the above metrics as of the effective cancellation date. Voluntary cancellations generally become effective at the end of the prepaid membership period. Involuntary cancellations, as a result of a failed method of payment, become effective immediately."


Stripe allows you to customize this in their platform.





Benchmarks

Involuntary churn benchmarks across billions in subscriptions look somewhat like this:

Industry

Total Annual Churn

Annual Involuntary Churn

% of Total from Involuntary

Digital goods

38%

11%

29%

Business services

40%

10%

26%

Personal services

36%

9%

25%

Education

40%

10%

24%

Merchandise

39%

9%

23%

SaaS

38%

8%

22%

Travel & lodging

43%

8%

18%

Leisure

36%

6%

17%

Insurance

37%

3%

9%


Business Model

Annual Churn

Annual Involuntary Churn

% from Involuntary

B2C

39%

9%

24%

B2B

38%

6%

16%

Price Tier

Annual Churn

Involuntary Churn

% from Involuntary

<$10

40%

14%

35%

$10–$30

37%

9%

23%

$30–$100

34%

9%

26%

$100–$1,000

30%

6%

19%

$1,000–$10,000

24%

4%

15%

>$10,000

15%

4%

24%


Hope this helps :)


~ Khushi Lunkad


 
 
 

Comments


bottom of page