← All articles

SaaS

Why they cancelled: the exit questions a small SaaS asks and what the answers change

October 28, 2026

Between a fifth and a third of a small SaaS's lost customers never chose to leave: their card failed. Stripe's and Recurly's churn splits, why renewals fail (40.6% insufficient funds), what retries and emails recover (51% to 70%), the one exit question to ask, published save rates, the California cancel-button rule, a worked 500-customer example and a one-page monthly churn review.

A person at a laptop on a wooden desk, holding a green payment card in one hand

Every subscription business has a number it does not look at closely enough: the customers who left last month. Most small SaaS owners know the total. Fewer know how it splits between people who decided to go and people whose card simply stopped working, and fewer still have a record of why the first group left that is better than a guess.

This piece is about getting that record and using it. It covers the split between voluntary and involuntary churn with Stripe's and Recurly's published figures, why card payments fail and what each recovery step brings back, the exit question to ask and what each answer should change, the save rates cancel flows actually reach, the California rule that limits how you show a save offer, a worked example for a 500-customer product, and a one-page churn review you can fill in on the first working day of each month.

First split the churn: who chose to leave, and whose card failed

Voluntary churn is a customer who clicked cancel. Involuntary churn is a customer whose renewal payment failed and was never recovered. Many of them did not mean to leave at all. The two need different fixes, so the first job is to count them separately. Stripe published the split for 2024 from its subscription data; Churnkey reprinted it in its involuntary churn benchmarks (November 2025).

text
Stripe subscription data, 2024        Annual churn   Involuntary   Involuntary share
------------------------------------  -------------  ------------  -----------------
SaaS                                       38%            8%             22%
Digital goods                              38%           11%             29%
Business services                          40%           10%             26%
B2C, all industries                        39%            9%             24%
B2B, all industries                        38%            6%             16%

By average order value
  under $10                                40%           14%             35%
  $10 to $30                               37%            9%             23%
  $30 to $100                              34%            9%             26%
  $100 to $1,000                           30%            6%             19%
  $1,000 to $10,000                        24%            4%             15%

Recurly's churn benchmarks for its own billing network (July 2026 data) show the same shape. We worked out the involuntary share from Recurly's published voluntary and involuntary rates for each price band:

text
Recurly network, July 2026        Total churn   Voluntary   Involuntary   Involuntary share
--------------------------------  ------------  ----------  ------------  -----------------
SaaS                                 3.22%        2.16%        1.06%            33%
Price per customer $10-25/month      4.29%        2.99%        1.30%            30%
$25-50/month                         3.84%        2.73%        1.11%            29%
$50-100/month                        3.15%        2.41%        0.74%            23%
$100-250/month                       2.87%        2.40%        0.46%            16%
Over $250/month                      3.07%        2.90%        0.18%             6%

Two things follow. For a typical small SaaS at $10 to $100 a month, between a fifth and a third of lost customers are lost to payments, not decisions. And that share falls sharply with price: at over $250 a month almost nobody churns by accident, because business cards, invoices and a finance person who notices are all involved. If your product is cheap and sold to individuals, fix payments first. If it is expensive and sold to companies, the exit question matters far more.

Why card payments fail, and what each fix brings back

Churnkey looked at 5.4 million failed subscription payments across its customers. The decline codes are not what most people expect. Expired cards are a small slice, because card networks now update most expired cards automatically (Stripe and other processors do this through card account updater services). Most failures are about money in the account on the day.

text
Why renewals failed (Churnkey, 5.4M failed payments)     Share
-------------------------------------------------------  ------
Insufficient funds                                        40.6%
Transaction not allowed                                    8.8%
Highest risk level (blocked by fraud screening)            8.0%
Do not honor                                               7.6%
Previously declined, do not retry                          6.4%
Generic decline                                            5.8%
Incorrect number                                           4.7%
Try again later                                            4.1%
Partner insufficient funds                                 3.7%
Invalid account                                            2.7%
Expired card                                               1.1%
Everything else                                            6.5%

Insufficient funds is a timing problem. The same card often works three days later, after payday. That is what retries are for, and why a retry at a smarter time beats a retry at a fixed time. "Do not retry" and "incorrect number" are the opposite: no retry will ever work, and only the customer can fix them, by entering a new card.

text
What each recovery step brought back (Churnkey data)        Recovered   Avg. days
----------------------------------------------------------  ----------  ---------
Stripe Smart Retries only                                      51%         5.5
Smart Retries + Churnkey's timed retries                       55%         4.8
Retries + in-app "update your card" wall + dunning emails      70%          -

Dunning emails, each on its own        Opened   Clicked   Recovered
-------------------------------------  -------  --------  ----------
Email 1                                 55.8%     7.1%       2.8%
Email 2                                 48.0%     3.2%       1.9%
Email 3                                 39.7%     4.2%       1.7%
Email 4                                 29.8%     3.2%       1.5%
Email 5                                 20.6%     2.9%       1.5%

The order of work is clear from that table. Turn on smart retries (in Stripe: Billing, Revenue recovery, Retries) and you get about half of failed payments back without writing a line of code. Each email adds one or two points, so four or five short, plain emails over two to three weeks are worth sending, and they should go to whoever holds the card, which in a business account is often not the person who uses your product. The last and largest jump comes from telling the user inside the product: a banner or a blocking screen that says the payment failed and shows an "update card" button. A logged-in customer sees it at the moment they want the product, which no email achieves.

A failed payment that is never fixed can also come back to you as a dispute, if the customer later notices a charge they did not expect when a retry goes through. Our piece on chargebacks at a small SaaS covers which ones you can win and what a dispute costs either way.

The exit question: one required answer, one optional sentence

For the customers who do decide to leave, the cancel page is the only moment you are sure to have their attention. Ask one question there, make it required, and keep it single-choice so every cancellation gets an answer you can count. Then offer one optional free-text box. Most people skip it; the few who write something tell you more than the rest of the survey.

How the answers usually fall is less certain than vendors suggest. A widely quoted ProfitWell breakdown of more than 23,000 cancellations put price at 29 per cent, missing features at 22 per cent and not using the product enough at 19 per cent; we could only find it quoted by others, not the original report. Churnkey's State of Retention report (2023 data, more than a thousand businesses) names budget limits as the dominant reason without a share. Expect "too expensive" near the top of your own list, and do not take it at face value: it is also the answer that ends the conversation fastest. Check it against usage. A customer who says the price is the problem but logged in twice in the last month is telling you about value, not price.

A reason list that works for most small products, with what each answer should change:

text
Reason (in this order)            Offer in the cancel flow              What it changes if it keeps coming up
--------------------------------  ------------------------------------  ----------------------------------------
I only needed it for a project    Pause for 1-3 months                  Offer a pause on the pricing page too;
                                                                        consider a cheaper "dormant" plan
I'm not using it enough           Pause, or a short call / setup help   Onboarding: what first week did these
                                                                        customers have? Check their usage
It's too expensive                Cheaper plan, then a time-limited     Plans: is there a gap between free and
                                  discount (one, not a ladder)          your first paid plan? See the price test
It's missing something I need     Ask which feature (one text box);     The roadmap: count the features named;
                                  no offer                              write back when it ships
I'm switching to another tool     Ask which one; no offer               Your comparison page and positioning
It's not working / too many bugs  Contact support, with a real person   A bug list from the last 30 days of
                                                                        cancellations, read by the developer
My company is closing / other     None                                  Nothing; do not pester

Seven options is enough. Put them in an order that is not alphabetical and does not lead with price, so the first answer on the list is not the lazy one. Store the answer, the free text, the plan, the months the customer paid and their last login together, because the reason on its own tells you little.

Save offers: what the published save rates are, and what a save is worth

A cancel flow is the survey plus an offer matched to the answer. The vendors that run these flows publish save rates, meaning the share of people who started cancelling and did not finish. They vary a lot by audience:

text
Source (data period)                                    Who                         Save rate
------------------------------------------------------  --------------------------  ------------------------
Churnkey State of Retention (2023, 1,000+ businesses)   B2B companies               "upwards of 40%"
                                                        B2C companies               20-22%
Churnkey, martech and salestech customers (12 months)   B2B software                32.0%
RevenueCat, Apple retention messages (Mar-Sep 2026,     iPhone apps, median         16.7%
  309 apps, ~22M messages)                              top 10% of apps             42% or more
RevenueCat, same data: offers accepted                  discount offers shown       about 1.1%
                                                        plan-switch offers shown    about 0.6%

The RevenueCat line is the sobering one. Most of a save rate is people who open the cancel page and then do not cancel, often because they only wanted to check the date or the price. Very few people take the discount itself. RevenueCat also found that apps using the cancel-time messages did not cut cancellations clearly more than comparable apps that did not, within the margin of chance.

And a save is not a customer kept. Churnkey reports that paused subscribers resume 54 per cent of the time on average (43 to 89 per cent depending on set-up), while only 22 per cent of discount saves stay, because someone who had already decided to leave takes the cheaper month and leaves one cycle later. Recurly's 2026 State of Subscriptions found that 38 per cent of consumers would rather pause than cancel, and that three in four paused subscribers came back within months. For a small product, that makes the pause the first offer to build, and the discount the last.

Two numbers from Churnkey's 2024 report are useful when you design the screens: people who are about to cancel spend up to 80 seconds deciding, and their tolerance for friction ends at about five steps. Two screens (the question, then one offer or the confirmation) are plenty.

The rule: the cancel button stays on the screen

The FTC's "click to cancel" rule was struck down by the Eighth Circuit on 8 July 2025, days before it was due to take effect, so there is no federal rule on cancel flows beyond the older Restore Online Shoppers' Confidence Act. The state laws remain, and California's is the one to design for. Under Business and Professions Code section 17602, as amended from 1 July 2025, a business that lets customers cancel online may show a discount or other retention offer only if it shows, at the same time, a prominently placed "click to cancel" link or button that stays on the screen, and it must process the cancellation promptly once that button is used.

In practice: one offer, the cancel button visible beside it, no extra confirmation emails or phone calls before the cancellation takes effect, and the cancellation confirmed on screen. It is also simply good business. A customer who has to fight to leave does not come back, and tells people.

Worked example: where a small SaaS gets more back

Take a product with 500 customers at $30 a month and 25 new customers a month. Total churn is 4 per cent a month, Stripe's SaaS figure, of which 22 per cent is involuntary: 3.12 per cent cancel and 0.88 per cent are lost to failed payments, already after Stripe's Smart Retries. Working back from Churnkey's 51 per cent recovery for Smart Retries alone, about 1.8 per cent of renewals fail each month, roughly nine customers. We then compare adding the full recovery set-up (70 per cent recovered), a cancel flow at a B2C-like 20 per cent and a B2B-like 40 per cent save rate (half pauses, half discounts, kept at Churnkey's 54 and 22 per cent), and both.

text
Scenario (12 months, from 500 customers)            Monthly   Customers   Gained    MRR in     MRR
                                                     churn     month 12    vs today  month 12   gained
---------------------------------------------------  --------  ----------  --------  ---------  ------
Today: Smart Retries only, no cancel flow             4.00%       548          -     $16,452       -
Fix failed payments (retries + card wall + emails)    3.66%       566         +18    $16,983    +$531
Cancel flow, 20% save rate                            3.76%       561         +12    $16,819    +$367
Cancel flow, 40% save rate                            3.53%       573         +25    $17,195    +$743
Both: payments fixed + 20% cancel flow                3.42%       579         +30    $17,363    +$911

For a product sold to individuals, fixing failed payments is worth more than a cancel flow, and it is the easier job: settings, five emails and one banner. A cancel flow only pulls ahead when the save rate reaches B2B levels. The discount also costs something: at 20 per cent saves and half of them discounts, about 1.6 customers a month take, say, 30 per cent off for three months, which is about $42 of revenue a month given away, small next to the $367. Together, the two changes add about $5,300 of revenue in the first year and leave the product $911 a month higher going into the second, from a start of $15,000 a month. (The model is simple on purpose: flat new sales, flat churn rates. The inputs are the published rates above.)

The one-page churn review, once a month

None of this helps unless someone looks at it. Thirty minutes on the first working day of the month, on one page, is enough for a small company. Here is the page with an example month for the product above, after both fixes:

text
CHURN REVIEW: September                          This month   Last month   Note
-----------------------------------------------  -----------  -----------  ---------------------------
Customers at start of month                          566          559
New customers                                         25           25
1. Renewals that failed                                9            10
   recovered by retries                                5             5
   recovered by email / card wall                      1             1
   lost (involuntary churn)                            3             4     2 x "do not retry"
2. Customers who opened the cancel page               16            17
   saved: paused                                       2             2     1 of August's pauses resumed
   saved: plan change or discount                      1             1
   cancelled (voluntary churn)                        13            14
3. Reasons given (cancelled + saved)
   only needed it for a project                        4             3
   not using it enough                                 4             4     3 of 4 never finished setup
   too expensive                                       3             5
   missing something                                   3             2     2 x CSV export
   switching tool                                      1             2     named: one competitor
   other                                               1             1
Total churn                                     16 (2.8%)     18 (3.2%)
Customers at end of month                            575          566

One change for next month: CSV export (named twice in two months)

Fill in sections 1 and 2 from your billing system and section 3 from the survey table. Read every free-text answer, which takes ten minutes at this size. Then write one line: the single change the month's answers point to. Over a year, those twelve lines are a better roadmap than most feature-request boards.

Setting it up in an afternoon

1. Split the number. In Stripe, Billing shows failed and recovered payments; count cancellations from subscription cancel events. Put the two counts side by side for the last three months.

2. Turn on smart retries and automatic card updates, and set the subscription to wait until the last retry before cancelling, not to cancel on the first failure.

3. Write four short dunning emails to the billing contact: the failure (same day), a reminder (day 3), the date access stops (day 7), and the last notice (day 14). Plain text, one "update card" link each.

4. Add the in-app banner for any account with a failed payment, with the update button.

5. Put the one-question survey on the cancel page, the reasons above, required, with one optional text box. Store the answer with plan, tenure and last login.

6. Add one offer, matched to the answer: pause for "project" and "not using it", a cheaper plan for "too expensive". Keep the cancel button on the same screen.

7. Review once a month on the page above, and change one thing.

If "too expensive" keeps coming first, look at the prices themselves before you add discounts. Our article on raising prices on customers you already have goes through how small vendors decide, and the calculator below tests a price change before you announce it.

Test a price change before you make it: customers per plan, old and new price and the churn you expect. See the new monthly revenue and how many customers you could lose and still come out ahead. Free, in your browser.

Open the price increase calculator

Sources

Churnkey: Involuntary churn benchmarks and tactical advice (November 2025, updated December 2025; Stripe 2024 data on churn by industry, B2B/B2C and order value; Churnkey data on 5.4M failed payments: decline codes, retry and dunning recovery); Recurly: Churn rate benchmarks (July 2026 network data, voluntary and involuntary churn by industry and price per customer; State of Subscriptions 2026 pause figures); Churnkey, saas.group and Usersnap: State of Retention 2024 (2023 data, B2B and B2C save rates, decision time, steps); Churnkey: martech and salestech (save and recovery rates, trailing 12 months); Churnkey: Pause offer at cancellation (54% resume, 22% of discount saves kept; updated June 2026); RevenueCat: Apple retention messaging benchmarks (March to September 2026, 309 apps); Lago: SaaS cancellation flows (quotes the ProfitWell breakdown of 23,000 cancellations); California Business and Professions Code section 17602 (online save offers and the click-to-cancel button); Davis Wright Tremaine on AB 2863 (amendments in force from 1 July 2025); Gunderson Dettmer: Eighth Circuit vacates the FTC click-to-cancel rule (8 July 2025). The worked example is our own calculation from these published rates.