Comparison

A cancel survey and discount for Stripe, beyond the portal's one coupon

If you bill on Stripe, its hosted Customer Portal already covers the basics for free: it can offer a retention coupon when someone cancels, and ask the ones who leave anyway why. For a lot of businesses that is the right place to start. AcornRetain is for when one coupon for everyone stops being enough. You write the question, each answer gets its own offer, our server checks who is eligible, and you read every answer, including what people type. It runs on the Stripe account you already bill from, and it needs a cancel button in your own app and a server of your own.

What you keep

You get each of these here, as you do in Stripe. If you are already running a cancel flow, this is the part you are not giving up.

  • A discount offered the moment a subscriber goes to cancel, made from a coupon that already exists in your Stripe account and applied to the subscription for you.
  • A cancellation reason from a list you write. Stripe lets you define your own reasons for the portal with its Feedback Options API, added in API version 2026-09-30. In AcornRetain you write the question and its answers.
  • Reasons kept where you can read them. Stripe stores the chosen reason on the subscription, readable in the Dashboard, in Sigma, in the subscription.updated webhook, and through the API. AcornRetain keeps each answer on the session.
  • Billing stays in Stripe. Your subscriptions, coupons, and prices stay where they are, and nothing moves to a new billing provider.

Where AcornRetain differs

An offer per answer, not one coupon for everyone

In the portal settings you pick one retention coupon, and everyone who cancels there is offered it. A different coupon per customer means your server creating each portal session with its own coupon. Either way, the reason comes from the people who cancel anyway, so it cannot choose the offer. In AcornRetain the answer comes first and picks the offers: a discount for price, a pause for a break, a plan change for someone who needs less.

Room to say more after any answer

Since API version 2026-09-30, Stripe takes your own list of reasons for the portal; before that it offered a fixed list, with free text on Other. AcornRetain lets you add a text box after any answer, so "Too expensive" can come with what they would pay, and a free-text step at the end if you want one.

More than a discount

A coupon is the portal's only retention offer, and subscribers cannot pause there. AcornRetain offers discounts, pauses, plan changes, and trial extensions, each applied to the live Stripe subscription. A pause stops billing, not access: the subscriber keeps using your product unless you gate it.

You decide who gets an offer

AcornRetain checks each subscriber against the offers they have already been granted, on our server, before anything is shown. By default a subscription that already has a discount is not offered another, and a trial is extended once. A cooldown between offers and a cap on pauses are off until you set them.

Answers and saves in one place

Stripe keeps the reason on each subscription for you to look up or query. AcornRetain shows a Top cancel reasons chart, a session list you can filter by reason where each session opens to the answer and what they typed, an Answers page with every written answer in a date range, and save rate and estimated revenue saved per app. Slack alerts carry the answer, a documented session.completed webhook sends every answer to your own systems, and every session exports to CSV.

The trade: your own button and server

Stripe hosts the portal, and it can run with no code of yours. AcornRetain opens from a cancel button in your own app, and your server signs the Stripe customer id. It cannot run inside Stripe's hosted portal, so if your subscribers cancel there and you have no server, it is not for you today. If you do have both, you can turn off cancellation in the portal and keep invoices and payment-method updates there.

When Stripe is the better choice

If one coupon for everyone saves enough cancels, the reasons Stripe collects tell you what you need to know, and your subscribers cancel in the hosted portal with no server of yours behind it, stay with Stripe's built-in flow. It is free and already in your account, and AcornRetain cannot sit in front of that portal today. Turn it on and leave it until its limits cost you more than a tool would.

What switching involves

You are not moving off Stripe; AcornRetain runs on it. Install the AcornRetain app from the Stripe App Marketplace, with no secret key to paste, and build the survey and offers in our dashboard. The flow opens from the cancel button in your own app, and your server signs the Stripe customer id and passes the subscription id. Run it end to end in Test mode against Stripe test-mode subscriptions while the portal's coupon stays on; Test mode is free and unlimited. When yours is doing more, turn off cancellation in the portal settings and keep invoice history and payment-method updates there.

The setup guide covers the whole path, and support will look at your existing flow with you if you would rather not rebuild it from a blank page.

Questions people ask

Doesn't Stripe already have a cancellation discount?
It does. In the Customer Portal settings you can pick a retention coupon, and everyone who cancels in the portal is offered it before they go. To give different customers different coupons, your server creates each portal session with its own coupon. A coupon is the only retention offer the portal makes, and the reason comes from the people who cancel anyway, so it does not choose what they are offered. AcornRetain is for teams who want each answer to get its own offer, and a check on who can take it.
How do I add a cancel survey to Stripe?
In Stripe, turn on cancellation reasons in the Customer Portal settings: subscribers who cancel in the portal pick a reason from a list, and since API version 2026-09-30 you can write your own reasons with the Feedback Options API. In AcornRetain, you write one question and its answers in the dashboard, add a text box after any answer, and give each answer its own offers. AcornRetain opens from a cancel button in your own app and needs a server that signs the Stripe customer id, so it cannot sit in front of Stripe's hosted portal.
How do I offer a discount when someone cancels a Stripe subscription?
Make the coupon in Stripe first; both routes use one. In the Customer Portal settings, pick it as the retention coupon and everyone who cancels in the portal is offered it, or have your server create each portal session with the coupon that customer should see. In AcornRetain, import the coupon into your Offers library and attach it to the answers it suits. When a subscriber accepts, our server checks your eligibility rules and applies it to their subscription. AcornRetain never creates coupons, and it needs a cancel button in your own app and a server of your own.
How do I see why customers cancel in Stripe?
Stripe stores the reason a subscriber picks in the portal on the subscription itself. You can read it on the subscription page in the Dashboard, query it in Sigma, receive it in the subscription.updated webhook, or fetch it through the API. AcornRetain keeps the answers from its own survey, including anything typed into a text box: a Top cancel reasons chart, a session list you can filter by reason, an Answers page with every written answer, a CSV export of every session, Slack alerts, and a session.completed webhook with every answer. It only sees cancels that go through its flow, from a cancel button in your own app.
Can I use Stripe's built-in coupon and AcornRetain together?
Yes. They run on the same Stripe account, so a common path is to keep the portal coupon on while you build and test an AcornRetain flow in Test mode, then turn off cancellation in the portal once yours is doing more. Invoice history and payment-method updates can stay in the portal, so subscribers still manage billing there and cancel from the button in your app.
Do I still bill through Stripe if I use AcornRetain?
Yes. AcornRetain is not a billing provider and does not replace Stripe. You connect it by installing the AcornRetain app from the Stripe App Marketplace, with no secret key to paste, and it applies offers to the subscriptions already there. If your billing runs on a provider other than Stripe, AcornRetain is not the tool for you.
Is it worth paying when Stripe's version is free?
Only once the free version costs you more than the tool does. AcornRetain is free for your first 10 live sessions a month and $49 a month flat after that, and Test mode is free and unlimited. The honest test is whether an offer per answer, pauses, plan changes and trial extensions, a check on who can take an offer, and reading every answer keep more revenue than that fee. If they do not yet, stay on the built-in coupon.

Try it before you switch anything.

Test mode is unlimited on every plan, so you can run the whole flow on test subscriptions in Stripe before a live subscriber sees it.

Get started

Stripe is a trademark of its respective owner. AcornRetain is not affiliated with, endorsed by, or sponsored by Stripe. This page describes our own product and our understanding of a publicly documented alternative; check their current documentation and pricing before you decide.