Sign in

Blog · Board and management reporting · Software

SaaS churn reasons: connect cancellation codes to lost ARR

Rank recorded SaaS cancellation reasons by lost ARR, tenure and product usage. Build a reproducible spreadsheet breakdown, reconcile the losses and separate recorded explanations from evidence of a cause.

The short answerSaaS churn reasons are the explanations recorded when subscriptions end, such as price, missing features, reduced need or payment failure. Rank them by lost annual recurring revenue as well as customer count, then compare tenure and prior usage. Keep unknown reasons visible and treat cancellation responses as evidence to investigate, rather than proof of what caused a customer to leave.

SaaS churn reasons become useful when recorded cancellation explanations are tied to lost ARR, customer tenure and usage before departure. Rank the revenue exposure and the number of customers separately, keep missing reasons visible, and use the result to choose what to investigate. A cancellation code records an explanation; it does not prove a cause.

Start with a reason dictionary and a fixed loss period

Use subscriptions that actually ended during the reporting month. A request submitted in July for an August termination belongs in August's realized loss table. Keep requests for future cancellations in a separate follow-up list.

Agree on a short dictionary before grouping the records: Price, Features, No need, Service, Payment and Unknown, for example. Preserve the original response alongside the mapped code. A comment about a missing integration should remain available for review even when its reporting group is Features.

There is a practical reason to inspect the collection method. Stripe's cancellation documentation lists selectable explanations including expense, features and reduced need, with optional text for Other. A menu choice is different evidence from a documented customer interview. Preserve the evidence type and collection date so they can be compared honestly.

Give each loss one primary reason. Keep secondary tags separately; otherwise one departed customer can contribute its whole ARR to several reasons. For the overall loss definition, use the churn glossary; this workflow concerns the evidence behind the losses.

Prepare one row per lost subscription

For a fictional US SaaS company, all eight subscriptions below ended in July 2026. Each belongs to a different customer. MRR is the contracted recurring amount immediately before termination; exclude one-time services, taxes and variable usage charges from this example.

Tenure is completed months at termination. Active and contracted seats cover the last complete month before the cancellation request, using the same definition of active for every account.

Account Primary reason MRR (USD) Tenure (months) Active seats Contracted seats Lost ARR (USD)
A101 Price 1,000 3 10 50 12,000
A102 Price 500 4 5 25 6,000
A103 Features 3,000 18 70 100 36,000
A104 Features 2,000 12 40 80 24,000
A105 No need 1,500 24 15 30 18,000
A106 Unknown 1,000 2 8 20 12,000
A107 Payment 500 10 12 20 6,000
A108 Price 500 9 15 25 6,000
Total 10,000 120,000

The column order is A through G. In G2, annualize the recurring monthly amount:

=C2*12

Fill down through G9. Add a tenure helper in H2 and a seat-utilization helper in I2, then fill both down:

=IF(D2<6,"Early","Established")
=IF(F2=0,"",E2/F2)

Early means fewer than six completed months; Established means six or more. Format I as a percentage and retain a blank for an invalid zero-seat denominator. These are supplied business rules, not inferred explanations for leaving.

Rank the reasons by ARR and customer count

Put each reason in K2:K6. Use L for customer count, M for lost ARR and N for its share of total lost ARR:

=COUNTIF($B$2:$B$9,K2)
=SUMIFS($G$2:$G$9,$B$2:$B$9,K2)
=M2/SUM($G$2:$G$9)

Fill down, then sort by M descending. The Google Sheets SUMIFS documentation describes summing a range against multiple criteria; the same approach also supports the tenure split below. Covirage is not affiliated with Stripe or Google.

Recorded reason Customers Lost ARR (USD) Share of lost ARR
Features 2 60,000 50.0%
Price 3 24,000 20.0%
No need 1 18,000 15.0%
Unknown 1 12,000 10.0%
Payment 1 6,000 5.0%
Total 8 120,000 100.0%

Price leads by customer count, but Features accounts for half the lost ARR: 60,000 / 120,000 = 50.0%. That makes feature-related evidence the larger revenue investigation, without establishing that building a feature would have saved those contracts. Percentages are rounded to one decimal place.

The denominator includes Unknown. Coding coverage is seven known reasons out of eight losses, or 87.5% of customers. By ARR it is (120,000 - 12,000) / 120,000 = 90.0%. Those are different checks, and both should accompany the ranking.

Add tenure and usage without inventing a cause

To calculate Early lost ARR for the reason in K2:

=SUMIFS($G$2:$G$9,$B$2:$B$9,K2,$H$2:$H$9,"Early")

Repeat with Established for the other column.

Reason Early lost ARR (USD) Established lost ARR (USD)
Features 0 60,000
Price 18,000 6,000
No need 0 18,000
Unknown 12,000 0
Payment 0 6,000
Total 30,000 90,000

The two early Price accounts each used 20.0% of contracted seats: 10 / 50 and 5 / 25. The established Price account used 15 / 25 = 60.0%. That suggests different interview questions about adoption and value, even though all selected Price.

The seat-utilization workflow explains how to establish a consistent activity window. Do not expand this cancellation-only table into a claim that low usage predicts churn: that would also require comparable retained accounts. Likewise, a tenure group's share of losses is not its churn rate without that group's starting customer or ARR exposure. Use average SaaS churn for the separate benchmark question.

Reconcile before assigning investigation owners

The reason totals must equal the cancellation register: eight lost subscriptions and $120,000 of annualized recurring revenue. The tenure totals must also equal $120,000: $30,000 plus $90,000. Finally, $10,000 of lost MRR multiplied by 12 must equal the same ARR total.

Finance owns that reconciliation and the recurring-revenue policy. Customer success owns reason completeness and supporting notes. Product reviews the Features records; sales and customer success review Price with tenure and usage attached; billing operations reviews Payment. Assign an evidence-gathering action and an owner before proposing a remedy.

Where the breakdown goes wrong

  • Requested and effective cancellations mixed together. The reason table will not tie to realized losses if it includes subscriptions still active at month-end.
  • One customer counted once per canceled seat. Aggregate seat events to the agreed subscription or customer level before counting departures.
  • Unknown records removed. This overstates every known reason's share and hides weak collection coverage.
  • Usage measured after the decision. An account winding down can look inactive because it has already decided to leave.
  • Multiple tags each given the full ARR. Keep a single primary-reason total, or use explicitly allocated weights that sum to the original loss.

Review your own cancellation file in Covirage

Bring your cancellation register, recurring-revenue export and prior usage file with stable subscription IDs and supplied reason codes. Covirage maps the columns, its tools compute and check the breakdowns, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account, which takes about a minute, then set up your business and bring a sample of your own data.

See Covirage for SaaS teams for the supporting industry context.

Questions people ask

What is the difference between voluntary and involuntary churn?

Voluntary churn follows a customer's decision to stop subscribing. Involuntary churn follows an unsuccessful payment or another administrative failure without an explicit cancellation decision. Keep these separate in the reason table so payment recovery work does not become a product or pricing recommendation.

Should cancellation reasons be ranked by customers or revenue?

Use both. Customer counts show how widespread a recorded issue is, while lost ARR shows its recurring revenue exposure. A reason mentioned by many smaller customers can rank below one reported by a few larger accounts. Neither ranking establishes the reason's underlying cause.

How should missing cancellation reasons be handled?

Retain them as Unknown and include their lost ARR in the denominator. Report coding coverage by customer count and revenue. Do not redistribute unknown losses across known reasons, because that assumes customers who did not answer resemble those who did.

Can low product usage prove why a customer canceled?

No. Low usage can support a question about adoption, but it can also follow an earlier decision to leave or a seasonal business change. Use a fixed period before cancellation and compare similar accounts before deciding what additional customer evidence to collect.