Guide · facts checked 6 Nov 2026
Build or buy a cancel flow? What each costs for a Stripe SaaS
Under about 20 cancel attempts a month, use what Stripe already gives you: the portal's cancellation reasons and one retention rule. Build your own when you want control and have the days to keep it working. Buy when the vendor's price is below the revenue it recovers, and compare flat fees against a per-save fee using your own plan price.
Four options
| Option | You get | You do |
|---|---|---|
| Stripe's portal and retention rules | 8 preset reasons, free text, rules that show a discount or lower-plan offer by reason, tenure or spend, a report of saves | Configure it in the Dashboard. No offer text is written per customer. |
| Build it yourself | Any screens, any offer, any logic | Build the screens, handle webhooks, apply coupons and plan changes through the API, log decisions, keep it working |
| A flat-fee vendor | A finished flow, surveys, offers, reporting | Install it and pay the monthly fee whether or not it saves anyone |
| A pay-per-save vendor | A finished flow | Install it and pay only on a save |
What building it yourself includes
The cancel screen is the small part. The list people underestimate:
- Webhook handling that distinguishes a scheduled cancellation from an immediate one, ignores duplicates and verifies signatures. The Stripe cancel flow guide has a tested handler to start from.
- Applying the outcome: a coupon, a scheduled plan change, a pause or
cancel_at_period_end, each a different API call with its own failure modes. - Limits: one discount per customer, no offer in the first month, a ceiling on discount depth.
- A record of every decision, so a customer who disputes a charge can be answered.
- Measurement: a holdout group, or you cannot tell a save from a customer who would have stayed. See what counts as a save.
- Upkeep: Stripe changes its API. Pausing in the customer portal arrived in API version
2026-10-28.endive, for one example; your code owns every such change.
Count the days against what the flow recovers. A founder with a handful of cancel attempts a month rarely recovers enough to repay a custom build.
What buying costs: prices read on 6 Nov 2026
Prices below come from each vendor's own pages. “Month with no saves” is what you pay when the flow saves nobody.
| Option | How you pay | Month with no saves |
|---|---|---|
| Stayput | Free in early access, up to 100 AI cancel sessions a month; pay per save is 20% of the first renewal a save produces | $0 |
| Churnkey Starter | $250 a month billed yearly, for teams under $5k a month in churn volume | $250 |
| Churn Buster, cancel flows | From $269 a month by MRR tier; month to month | from $269 |
| ProsperStack | $200 a month for 50–500 cancel sessions; $75 per extra 50 | $200 |
| CancelFlow | $9, $25 or $59 a month by number of embeds and requests | $9+ |
The flat fees are a fair price for a product that does what yours needs. The question is volume: a flat fee of $250 needs $250 of recovered revenue a month to break even, before the vendor does anything useful for you. One vendor also publishes an open-source React SDK: Churnkey’s pricing page says it is free on every plan and that you can “self-host cancel flows entirely without a Churnkey account” (page read 6 Nov 2026), so build and buy are not always a binary choice.
How many saves a month justify a flat fee
A per-save fee of 20% of the first renewal is a fixed amount per save. A flat fee beats it once you save more subscribers a month than the fee divided by that amount.
| Your plan price | 20% of one renewal | Saves a month before $200 is cheaper | Before $250 is cheaper | Before $269 is cheaper |
|---|---|---|---|---|
| $19 | $3.80 | 53 | 66 | 71 |
| $29 | $5.80 | 35 | 44 | 47 |
| $49 | $9.80 | 21 | 26 | 28 |
| $99 | $19.80 | 11 | 13 | 14 |
Now find your own number. If you get 60 cancel attempts a month and one in five accepts an offer and stays, that is 12 saves, below every cell on the $29 row. If you get 600 attempts, the flat fee wins and you should buy it.
A decision rule
- Fewer than 20 cancel attempts a month: Stripe's portal reasons and one retention rule are enough to start. Add a pay-per-save tool when you want the offer and wording written for each subscriber, because a month with no saves costs nothing.
- 20 to a few hundred a month, no engineer to spare: a pay-per-save tool or a cheap flat plan. Compare on the table above with your plan price.
- You have an engineer and a specific flow in mind: build it, starting from the webhook handler, and add a holdout from day one.
- Several hundred or more cancel attempts a month: a flat-fee vendor is usually cheaper per save, and its offer-testing tools matter more at that volume.
Whichever you choose, ask the same three questions: what happens in a month with no saves, what exactly counts as a save, and who settles a disagreement about it.
Try it before you build or buy anything
Run a sample cancel session: it takes 90 seconds, you play the subscriber, and it shows the decision and the Stripe change without connecting an account.
90 seconds, no sign-up. You play the subscriber; the AI answers, and “Cancel anyway” is always one click away.