Guide · facts checked 4 Nov 2026
Stripe customer portal cancellation settings, one by one
Stripe's customer portal lets customers cancel on their own, and you set four things around that: whether the cancel takes effect at period end or immediately, which reasons customers can pick, an optional retention coupon, and an optional pause. Each is a few clicks in Settings, and each has a limit worth knowing before you rely on it.
The settings at a glance
| Setting | What it does | Limit to know |
|---|---|---|
| Cancel subscription | Lets customers cancel in the portal. On by default. | You choose period end or immediately. |
| Cancellation reason | Records a reason when a customer cancels. | 8 preset reasons; free text only after Other reason. |
| Retention coupon | Offers a coupon before the cancel goes through. | One coupon per portal configuration, the same for every reason. |
| Pause subscription | Lets the customer pause for a duration you choose. | Redesigned portal only; once every 12 months per subscription; you switch it on in Settings. |
Cancel at period end or immediately
In the portal configuration the cancel mode is at_period_end or immediately. With at_period_end, Stripe says customers can still renew the subscription until the billing period ends. That window is your second chance, and the one to build around: see how to build a cancel flow with Stripe.
There is also a proration setting for cancels, which controls whether Stripe creates prorations when a subscription is cancelled. Stripe also notes that cancelling at period end is handled differently in the portal depending on the subscription’s billing mode, so check its billing-mode comparison page if you use flexible billing.
Cancellation reasons
You pick which of the 8 reasons customers see: too expensive, need more features, found an alternative, no longer need it, customer service, ease of use, quality, and other. If a customer selects Other reason they can optionally type free text. The answers land on the subscription page, in Stripe Sigma and in the subscription webhook. The field names are in the cancellation_details guide, and what each reason means is in reading cancel reasons.
The retention coupon
Under Settings → customer portal → Cancellations, you select a coupon under Retention Coupon. Stripe describes it as a way to try to deflect the cancellation, and says you can build a coupon inline if you do not have one yet.
The coupon is one setting per portal configuration. It is not tied to the reason the customer picked, so a customer who says they no longer use the product sees the same discount as one who says it costs too much. If you want an offer that depends on the reason, use Stripe’s retention rules or your own flow, and check any result against a holdout: what counts as a save.
Pause in the portal: conditions
Stripe’s pause feature lets a customer pause for a duration you choose, from up to five preset options of up to three years each, and resume automatically at the end. It starts at the end of the current billing period. The conditions, from Stripe’s pause page:
- Only available in the redesigned customer portal.
- The subscription uses flexible billing mode and the
charge_automaticallycollection method, and its status isactiveorpast_due. - It is not scheduled to cancel and has no attached subscription schedule.
- It has not been paused in the last 12 months in live mode: customers can pause each subscription once every 12 months.
Stripe does not control access to your service, and the subscription stays active until the pause date. Do not suspend access when the pause is scheduled: suspend it on customer.subscription.paused and restore it on customer.subscription.resumed. While paused, the customer can resume early or cancel, but cannot change plan. Whether a pause beats a discount is the question in pause vs discount vs downgrade.
Where the portal stops
Each portal configuration holds one cancel setting with no product or price filter. To treat customers differently you create several configurations and choose one in code when you open each session, and you still get one coupon per configuration, not one per reason. An offer that follows the reason, a message written to the sentence the customer typed, or a save count against a holdout is the job of your own flow or a tool built for it.
Go past one coupon for everyone
Run a sample cancel session: play a subscriber, give a reason, and see an offer chosen for that reason and the Stripe change behind it.
90 seconds, no sign-up. You play the subscriber; the AI answers, and “Cancel anyway” is always one click away.