How to win back churned customers on Chargebee
Winning back churned Chargebee customers: non-renewing vs cancelled, removing scheduled cancellations, the reactivate API, coupons on reactivation, and timing.
On Chargebee, a churned customer is rarely gone for good. The subscription record, the customer, and often the payment method are all still there. Chargebee can bring a cancelled subscription back with one API call, which makes win-back much cheaper than a new sale, if you set it up deliberately.
This guide explains the two moments you can act on (before the cancellation takes effect, and after), the Chargebee operations for each, and a reason-based sequence to run on top. It sticks to Chargebee’s documentation: Subscription Cancellation, the Reactivate a subscription API, the Update a subscription API, the knowledge base articles on applying a coupon while reactivating and reactivating via checkout, and the event types reference (all accessed November 2026).
Two states, two windows
A Chargebee subscription that is on its way out is in one of two states.
| State | What it means | How to win it back | Event that opens the window |
|---|---|---|---|
non_renewing |
Cancellation scheduled for the end of the term; still active | Remove the scheduled cancellation | subscription_cancellation_scheduled |
cancelled |
Ended | Reactivate the subscription | subscription_cancelled |
Per the Cancel a subscription API, an end-of-term cancellation moves the subscription to non_renewing and sets its remaining billing cycles to 0. It becomes cancelled when the term ends.
Window 1: non-renewing subscriptions
This is the cheapest save. The customer still has access, nothing needs re-entering, and Chargebee’s “Remove scheduled cancellation” operation puts the subscription back on its normal renewal schedule.
Chargebee helps you time it. Its event types include subscription_cancellation_reminder, sent 6 days before a scheduled cancellation takes effect. That event is a natural trigger for a “Your plan ends on Friday” email with a “Keep my plan” button.
The Self-Serve Portal also has a setting to let customers remove a scheduled cancellation themselves. If you use the portal, turn it on; a customer who changes their mind should not need to contact you.
Know the reason before you write. Chargebee’s cancellation docs note that cancel_reason_code may not be returned for non-renewing subscriptions by default; a site-level setting includes it in the Retrieve Subscription response, so you can act on the reason before the cancellation runs.
Window 2: cancelled subscriptions
The reactivate endpoint
Chargebee’s Reactivate a subscription endpoint is a POST to /api/v2/subscriptions/{subscription-id}/reactivate, for subscriptions in cancelled status. Two parameters matter for win-back:
reactivate_from: the date the subscription counts as reactivated. Omit it to reactivate immediately. Backdating requires that backdating be enabled for reactivation.invoice_immediately: whether charges raised at reactivation are invoiced right away or added to unbilled charges. The default comes from your site settings, and it only covers charges raised by that call.
Successful reactivation sends subscription_reactivated (or subscription_reactivated_with_backdating when the date is in the past).
Reactivating with a discount
The reactivate endpoint does not take coupons. Per Chargebee’s knowledge base, use the Update a subscription API instead: it accepts coupon IDs, and its reactivate flag reactivates a cancelled subscription in the same request. The flag defaults to true when you pass subscription items or coupons, unless you set it to false.
That gives you a clean “come back at 30% off for 3 months” path: create a coupon with a limited duration in Chargebee, then reactivate with it through the update call when the customer accepts.
What does not work
- Checkout: Chargebee’s knowledge base says the “create checkout to update a subscription” call cannot be used to reactivate or resume subscriptions. If the customer needs to enter a new card, collect it separately, then reactivate.
- Decommissioned subscriptions cannot be reactivated.
Building the win-back flow
Step 1: collect the reason at cancellation
Chargebee’s Reason Codes give you a native list that appears in the app and the Self-Serve Portal, and that the cancel API accepts as cancel_reason_code. Set it up before anything else. A win-back sequence without reasons is a generic “We miss you”.
Step 2: separate involuntary churn
The event types reference says subscription_cancelled includes a cancel_reason when the cancellation came from non-payment or a missing card. Those customers did not choose to leave. Do not send them a win-back offer; send them a card update request and reactivate when they pay.
Step 3: match the message to the reason
| Reason | What to send |
|---|---|
| Too expensive | A time-limited coupon, applied through reactivation |
| Not using it enough | What changed, and a smaller plan |
| Missing a feature | A note when it ships; no coupon |
| Switched to another tool | One honest message, then stop |
| Seasonal or temporary | A check-in when they said they would be back |
| Non-payment | Not a win-back: a payment update request |
Step 4: space the messages
Three touches after cancellation is enough: around day 30, day 60 and day 90. Stop at the first reply, unsubscribe or reactivation (subscription_reactivated).
Step 5: make coming back one click
Every email should link to a page in your app that, on confirmation, calls reactivate (or update with the coupon). If the card on file is no longer valid, ask for a new one on that page first.
Step 6: respect consent
A former customer is not automatically a marketing contact. Check your consent basis per region, keep the message tied to their reason, and include a one-click unsubscribe.
Measuring it
Measure two rates separately:
- Non-renewing saves: subscriptions that left
non_renewingwithout being cancelled, divided by allsubscription_cancellation_scheduledevents in the period. - Reactivations:
subscription_reactivatedevents within 90 days of cancellation, divided by voluntary cancellations, split by reason and by whether a coupon was used.
Then check who is still paying 90 days after coming back. A reactivation that cancels again at the end of the coupon is a delay, and it tells you the coupon was the wrong offer for that reason.
Common mistakes
- Treating
non_renewingas churned. The customer is still active and still reachable in the app. This is your best window, not a lost cause. - Sending offers to involuntary churn. A customer whose card failed needs a payment link, not a discount.
- Leading with the biggest coupon. Start with relevance; offer a discount only where the reason calls for one.
- Reactivating without a valid card. The subscription comes back and fails at the next renewal. Check the payment method first.
Doing this with NoChurn
Reactivation, coupons and billing stay in Chargebee; NoChurn calls Chargebee’s API to apply them. NoChurn collects the reason through its cancel flow (with a one-click cancel always visible), separates involuntary churn, and sends win-back emails at day 30, 60 and 90 based on the reason. Each customer also has a churn score from 0 to 100, and if you connect a help desk, past support conversations inform it. See NoChurn + Chargebee.