Skip to content

Features

The parts that run the cancellation moment

Everything below works today. What doesn't exist yet is written out just as plainly at the end of the page.

Offer types

Five types, all genuinely applied in Stripe

One cancellation session shows exactly one offer. There is no chain of escalating offers and no pressure.

  • Percentage discount

    A set percentage for a set number of billing cycles

    For customers leaving over price. The discount takes effect from the next invoice, and the acceptance screen states that with the actual date.

    Not shown when the subscription already has an active discount.

  • Free billing cycles

    One or more cycles at no charge

    Buys time for a customer who hasn't seen the value yet. When the free period ends, the subscription resumes at its normal price automatically.

    Not shown to subscriptions still in a trial.

  • Payment pause

    30, 60, or 90 days

    For customers who want a temporary break. Collection resumes automatically when the pause ends, and the customer gets a reminder before it does.

    Whether access continues during the pause is your decision.

  • Plan downgrade

    A lower-priced plan you have pre-approved

    For the customer who will keep using the product but not at this price. The switch takes effect next period; no proration is applied.

    Not shown if the customer is already on the target plan.

  • Invoice credit

    An amount deducted from the next invoice

    A one-off gesture that leaves the plan price untouched. The amount goes to the customer's balance, comes off the next invoice, and any remainder carries forward.

    It is not a coupon, so it does not clash with an existing discount.

Built right

What a system that moves money has to get right

  • Rule-based matching

    Plan, subscription age, monthly amount, failed payment count, and cancellation reason decide who sees which offer. Rules are ordered and the first match wins.

  • Billing impact before acceptance

    The new amount, the next charge date, and when the effect ends are written on screen. The numbers come from a Stripe preview, not from our own arithmetic.

  • Immutable consent record

    The exact text the customer saw when they accepted, its version, and a timestamp are stored. Editing the copy later does not alter past records.

  • Indeterminate outcomes are never retried

    If Stripe times out, the change may already have been applied. Nothing is retried; the record waits until reconciliation reads the truth from Stripe.

  • Test mode

    Connect with a Stripe test key and run the whole flow against a fake subscription. See what would be shown without any money moving.

  • A full quota never closes the page

    If you exhaust your monthly session quota, offers stop being shown but the cancellation page keeps working. Your customer is never stuck unable to cancel.

Capabilities

The system behind the offer

Showing an offer is the easy part. The hard part is deciding who sees what and when, and writing the money change correctly.

  • Rule engine

    Price, product, billing interval, subscription age, monthly amount, failed payment count, customer country and cancellation reason. The more specific rule wins; ties are broken by priority, then by creation time. The decision is made on the server and it is a pure function: the same input always produces the same result.

  • Cooldown

    Once an offer has been applied, the same subscription sees no new offer until the cooldown expires; the default is 180 days. The clock belongs to the subscription: opening a new link, clearing cookies or starting a new session does not reset it.

  • Hosted cancellation page

    Your server opens a session and you redirect the user to the single-use URL it returns. We host the page; you write the logo, accent colour, brand name, heading, intro copy and reason list in your own words. The logo URL must be https.

  • Connected through Stripe Connect

    You connect your own Stripe account through the authorization flow. Your secret key is never seen or stored, the account is checked for charges being enabled, and live and test modes are kept apart. You can revoke access from the Stripe dashboard at any time.

  • Reason survey and reporting

    Seven canonical cancellation reasons fall into four groups; free text is optional. Reporting gives shown, accepted and applied counts, recovery rate, monthly revenue saved, the reason breakdown and per-offer performance.

  • A service recovery path

    Not every reason can be answered with money. Offering a discount to someone reporting a missing feature or a technical problem changes the subject; the right answer is a human one. On this path nothing is written to Stripe and the subscription does not change: a support request is opened and the project owner is notified.

  • Rollout stages and an emergency stop

    Applying offers opens in stages: disabled, internal, pilot and general, with an optional daily cap on applications. The emergency stop overrides all of it. The system fails closed: if the rollout settings cannot be read, applying stops on its own.

  • Audit log

    Who changed what, and when. Consent records, session events and the audit log are immutable at the database level; they cannot be edited or deleted after the fact.

Limits

What this product does not do

A retention offer is a money movement. Writing as though we can do something we cannot would leave you exposed in front of your own customer at the first real cancellation. So the limits stand as plainly as the features.

  • Only Stripe is supported. No other payment provider is in this release.
  • Multi-item subscriptions, metered subscriptions and subscriptions bound to a Stripe subscription schedule are out of scope.
  • Percentage discounts apply to monthly subscriptions only; free billing cycles to monthly and weekly; pauses to monthly only.
  • A cancellation session shows exactly one offer; no second offer follows a declined one.
  • Background jobs run as scheduled tasks inside the application process; there is no separate durable queue.
  • Analytics export is limited to a CSV of the session list; there is no ready-made data warehouse connector.

Turn the cancel button into a second chance

Connect Stripe, define one offer, redirect the button. Every cancellation you miss today is a question you'll never get to ask.