StripeOne authorisation and one snippet

Catch the cancellation at the click. Not in next month's report.

Churnbrake sits on your cancel button. It asks what went wrong, offers a pause, a discount or a smaller plan to the people worth offering one to, and writes the answer straight back into Stripe — while the customer is still on the page.

Works with Stripe · One snippet · Live in an afternoon

app.yourproduct.com/settings/billing

Cancel subscription

Before you go — what stopped working?

  • Too expensive
  • Not using it enough
  • Missing a feature
  • Switching to something else

Take 30% off for three months?

You have been on Pro for 14 months. Keep everything, at €34 a month until March.

Keep my plan at 30% offNo thanks, cancel

Cancelling stays one click away on every screen.

churnbrakelistening on the cancel button

Plugs into the billing you already run

  • Stripe

Features

The last screen is the only one that still has their attention.

By the time churn is a number on a chart, the conversation is months over. Everything here happens in the seconds when somebody has decided to leave and has not left yet.

A cancel flow that branches

Ask why first, then answer that. Somebody leaving over price and somebody leaving over a missing feature should not meet the same screen, and only one of them can be talked out of it with a discount.

Offers that fit the reason

A pause, a discount for a fixed number of months, a smaller plan, or a period extended for free. Each one is a real change to the subscription in Stripe, not a note for somebody to action later.

Pause instead of cancel

The subscription stays in Stripe, collection paused, and resumes on the date it said it would. A customer who pauses for two months is a customer you still have — a customer who cancels is one you have to win back from nothing.

Failed payments, chased properly

Most involuntary churn is a card that expired. Retries timed to when they actually work, an email that says what to do, and a hosted page to fix it — before Stripe gives up and cancels on your behalf.

Every reason, counted

Each cancellation is tagged with why, what was offered, and what happened next. After a month it is a list of what to fix, ordered by what it costs you — which is a different document from a churn rate.

Rules on who sees what

Tenure, plan, spend to date, how many offers they have already taken. A fourteen-month customer is worth a real discount; somebody eight days into a trial is not, and should not be offered one.

How it works

Three steps, and none of them is a migration.

Churnbrake goes on top of the billing you already run. Nothing moves, nothing is rehosted, and if you switch it off tomorrow your cancel button works exactly as it did before.

  1. 01

    Connect Stripe

    One authorisation, no keys pasted anywhere. Churnbrake reads your plans and customers so an offer can be built out of what you actually sell, and writes back only the change a customer accepted.

  2. 02

    Drop in the snippet

    One script where your cancel button lives. It opens the flow in front of your own settings page — nothing is redirected, nothing is rehosted, and your billing screen stays yours.

  3. 03

    Publish the flow

    Write the questions, attach an offer to each answer, set who qualifies. Change any of it later from the dashboard, without a deploy and without asking anybody to ship code.

FAQ

The questions worth asking first.

Something missing? Ask directly.

Does this work if my cancel button is inside my own app?

That is the case it is built for. The snippet intercepts the click on whatever element you point it at and opens the flow over your page, so your billing settings stay where your customers already know to find them. Nothing is redirected to a hosted page.

What actually happens in Stripe when someone accepts an offer?

The subscription is updated then and there. A pause sets a collection pause with a resume date, a discount attaches a coupon for the number of months you set, a downgrade swaps the price. If the customer cancels anyway, Stripe cancels exactly as it would have without churnbrake in the way.

Is this not just a dark pattern?

It is one screen, and cancel is a visible button on it from the moment it opens — never hidden behind a scroll, a countdown, or a second confirmation. A flow that traps people produces refund requests and chargebacks, which cost more than the subscription it saved. Offering somebody a pause before they go is a conversation; making leaving hard is not, and churnbrake will not help you build the second one.

How much access to my Stripe account does it need?

Read on customers, subscriptions and prices so the flow knows who it is talking to and what it can offer. Write on subscriptions, so an accepted offer takes effect. It never touches payouts, balance or payment methods, and card details never reach us — they stay in Stripe, which is where they belong.

What about payments that fail rather than customers who quit?

Same product, different door. Churnbrake retries on a schedule that reflects when cards actually clear rather than a fixed interval, emails the customer a link to fix it, and stops the moment the payment goes through. Involuntary churn is usually the larger half and the easier half.

What do you store about my customers?

The Stripe subscription and customer id, the reason chosen, the offer shown and what happened next. No card details, no payment methods, no invoice contents — everything sensitive stays inside Stripe and is read only when a flow needs it.

How long does it take to get running?

An afternoon. Connecting Stripe is a click, the snippet is one line, and the default flow ships with the four reasons and the offers most subscription businesses would have written themselves. Editing it is the part worth spending time on.

Every cancellation you read about already happened.

Stand in front of the next one instead. Connect Stripe, drop in the snippet, and the flow is live before the afternoon is.