Skip to content
reoffer
Cancellation offers for Stripe SaaS

Most cancellations aren’t final. Make the second offer.

Reoffer sits behind your cancel button. It asks why someone is leaving, shows the one offer that fits their answer, and changes their Stripe subscription only after they say yes.

No SDK. Swap one link. Works in feedback-only mode until you connect Stripe.

reoffer.com/r/
LALarkspur Analytics
Step 2 of 3

What’s making you leave?

  • It costs too much
  • Not using it
  • Need a break
  • Something’s broken

30% off your next 3 months

Growth drops from $49.00 to $34.30 a month until 12 Jan 2027, then returns to the regular price.

I understand my next 3 invoices will be $34.30.

Continue leavingKeep my plan at $34.30

Applied

Confirmed by Stripe

Illustration with sample data.

What Reoffer does

  • Runs through your Stripe

    An accepted offer becomes a real coupon, free cycle or pause on the customer’s subscription, made through Stripe Connect.

  • Offers follow the reason

    Price complaints, quiet accounts and product gripes each get the reply you chose for them.

  • Saves are confirmed

    A yes is logged as intent. It counts as saved only once Stripe reports the change went through.

  • Useful before Stripe

    Skip the connection and the page still collects reasons, then hands customers back to your billing page.

The problem

A bare cancel button tells you nothing.

One click, one lost subscription, and a gap in your MRR chart with no explanation attached.

Today

  1. 1

    Customer clicks Cancel

    That click is the whole conversation.

  2. 2

    Subscription ends

    No question asked, nothing offered.

  3. 3

    You notice next month

    In the MRR chart, with no reason.

A churned customer and a guess about why.

With Reoffer

  1. 1

    Customer clicks Cancel

    They land on your Reoffer page instead.

  2. 2

    They say why

    One of a few reasons, plus their own words.

  3. 3

    They see one fitting offer

    A discount, a free cycle, a pause, or a person.

  4. 4

    You see what happened

    Applied, declined or cancelled, with the reason attached.

Every exit leaves a reason. Some customers don’t leave at all.

Demo

Pick a reason. See the reply.

You choose one offer for each kind of reason. Here’s how a sample setup answers.

The customer said

It costs too much

“We like it, but the budget got cut this quarter.”

Your rule

Price → 30% off for 3 months

What they see

30% off your next 3 months

Stay on Growth at a lower price while things are tight.

Today
$49.00 a month
Next 3 invoices
$34.30 each
From 12 Jan 2027
$49.00 a month
Keep my plan at $34.30

If they accept: A coupon is added to the subscription.

Sample setup with made-up prices. Nothing on this page talks to Stripe.

How it works

Live in an afternoon.

Setup is settings, not engineering. The only change in your product is where the cancel button points.

  1. Step 1

    Connect Stripe

    Authorise Reoffer with Stripe Connect. We keep the account ID only. You never paste a key, and no access token is stored.

    Stripe account

    acct_••••4Q2mConnected · Live
  2. Step 2

    Choose an offer per reason

    Pick a discount, a free cycle, a pause or a person for each kind of reason, and decide who qualifies.

    • Price30% off · 3 months
    • Not using itPause · 60 days
    • Product issueTalk to a person
    • Other1 free cycle
  3. Step 3

    Point your cancel button at Reoffer

    Use your hosted page link, or have your backend create a one-time secure link per customer with a single API call.

    POST /api/v1/reoffers
    { projectId, stripeCustomerId, stripeSubscriptionId }
    → { url: "https://reoffer.com/r/…" }
  4. Step 4

    Read the outcomes

    Every session ends as applied, declined, cancelled or failed, with the customer’s reason attached.

    • li@quietpine.examplePause · 60 daysApplied
    • omar@brightloop.example30% · 3 monthsProcessing
    • ana@tallgrass.example—Cancelled

No Stripe connection yet? The page runs in feedback-only mode: it collects reasons and sends customers back to your billing page.

Offers

Three offers, one clear exit.

Every offer spells out the money and the dates before anyone agrees to anything.

  • A discount for a while

    Best for
    Price objections.
    The customer sees
    The percentage, how many invoices it covers, and the new amount.
    In Stripe
    A coupon on the subscription. The regular price returns afterwards.
  • A free billing cycle

    Best for
    People who never got going.
    The customer sees
    One cycle at $0 and when normal billing resumes.
    In Stripe
    A one-time 100% coupon on the next invoice. Not offered on annual plans.
  • A pause

    Best for
    Seasonal or temporary breaks.
    The customer sees
    How long the pause lasts and the exact restart date.
    In Stripe
    Payment collection pauses; the subscription stays. Monthly plans only.
  • Feedback only

    Best for
    No Stripe connection yet, or no offer fits.
    The customer sees
    The reason question, then your billing page or the Stripe portal.
    In Stripe
    Nothing changes. Reoffer never claims a change it didn’t make.
Outcomes

A yes isn’t a save until Stripe says so.

Each step is recorded separately, so the number you call saved is one your Stripe dashboard agrees with.

  1. Shown

    An eligible offer was on screen.

  2. Accepted

    The customer ticked the box and said yes. Nothing has changed yet.

  3. Processing

    Reoffer is making the change in Stripe.

  4. Applied

    Stripe confirmed it. The only state counted as saved.

Not applied. Declined, cancelled anyway, or refused by Stripe. Logged with the reason, never counted as saved.

Sample workspace · last 30 days
Cancel attempts
214
Offers shown
151
Saved (applied)
47
Est. revenue kept
$2,180/mo

Why people said they were leaving

  • Price34%
  • Not using it27%
  • Product issue21%
  • Other18%

Made-up numbers to show the layout. Not a customer result. Estimated revenue kept is a projection from applied offers at current prices, not booked revenue.

Who it’s for

For teams without a retention department.

You don’t need a churn specialist to run a decent cancel flow. You need the reason, one good offer, and an honest record.

  • Learn why people leave, in their own words
  • Answer the reason instead of showing everyone a coupon
  • Let Stripe do the billing maths
  • Rehearse the whole flow in Stripe test mode first
  • Report saves you can defend
  • Run several products from one account
Pricing

Pick a plan by size, not by features.

Every plan includes the full product. Plans differ only in how many products you run and how many reoffers are included.

  • Solo

    One product, one offer page, every offer type.

    $29/ month

    Products
    1
    Sessions included
    100
  • Recommended

    Growth

    For teams who check their churn number every week.

    $49/ month

    Products
    2
    Sessions included
    500
  • Studio

    For agencies and operators running several products.

    $99/ month

    Products
    10
    Sessions included
    1,500

Every plan includes

  • Hosted offer page with your logo and colours
  • Stripe Connect, test and live
  • Discount, free-cycle and pause offers
  • Offers matched to the reason given
  • Secure per-customer links via API
  • Analytics, session history and CSV export

A session is one customer opening your offer page. Monthly billing through Stripe. Cancel any time from your account settings.

FAQ

Questions founders ask first.

  • Only what the customer accepted: a coupon for a discount, a one-time 100% coupon for a free cycle, or paused collection for a pause. It works through Stripe Connect, so the change happens in your own Stripe account, and nothing changes until the customer says yes.

Give your next cancellation a second offer.

Set up the page, rehearse it in test mode, and go live when you’re happy with it.

Reoffer: cancellation offers for Stripe SaaS