> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atllasx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Win-back Offers

> Set the discount the AI is allowed to offer a cancelling customer, and choose what it applies to.

The win-back offer is what the AI is allowed to offer a cancelling customer to keep their subscription.

## Setting the Offer

1. On the **Workflows** page, click the edit (pencil) icon on the trigger row you want to change — each trigger (cancellation, trial) has its own campaign, so its offer and script are edited separately
2. The workflow wizard reopens in place at its **Offer** step — adjust the percentage (0–90), then click **Save changes**

(The call script itself is reviewed and edited in the full campaign editor, where you can also preview the call to your own phone.)

This is a flat discount off the customer's subscription. Setting it to **0** turns the call into a feedback-only conversation — the AI still calls to find out why the customer is leaving, but has nothing to offer and won't try to change their mind.

<Note>
  The offer percentage only applies to workflows created by your Stripe
  connection — RevenueCat saves are funded from your Apple offer-code pool
  instead. See [Connecting
  RevenueCat](/docs/revenue-recovery/setup/connecting-revenuecat).
</Note>

## Choosing What the Offer Applies To

By default, the win-back discount applies to the customer's **current plan** — the same subscription they're cancelling, just discounted. You can instead have the offer apply to your **annual plan, paid upfront**, so a saved customer commits to a full year rather than staying on their existing (often monthly) plan.

1. Open the workflow's campaign in the full campaign editor and find the **Revenue Recovery** settings
2. Under **Offer applies to**, choose **Their current plan** (default) or **Annual plan, paid upfront**
3. If you choose **Annual plan, paid upfront**, pick one of your active yearly Stripe prices from the **Annual plan to offer** dropdown

<Note>
  This choice is only available for Stripe-managed recovery campaigns.
  RevenueCat/App Store campaigns configure their annual offer in App Store
  Connect instead — the AI just describes that same offer on the call.
</Note>

The dropdown is pulled live from your connected Stripe account and only lists your active yearly prices. If you don't have one yet, it shows **"No active yearly plan found on your Stripe account — create one in Stripe first, then pick it here."** — create a yearly recurring price in Stripe, then come back and select it. Until an annual plan is chosen, the campaign keeps offering the customer's current plan.

### What the Member Gets

The discount (for example, 50%) is applied to the annual plan for the first year; it then renews at the full annual price — the coupon is one-time, just like the current-plan offer.

### How Members Are Charged

* **Already lapsed** — a member whose subscription has already ended pays the full discounted first year up front.
* **Still subscribed and cancelling** — a member who's still active but cancelling is switched to the annual plan immediately and charged the discounted annual price **minus a proration credit for the unused time left on their current plan** — standard Stripe proration, so their first charge can be a little less than the full discounted year.

## Testing different offers

Instead of relying on a single flat offer, you can test a few script-and-discount combinations against each other — see [A/B Testing](/docs/revenue-recovery/analytics/ab-testing).
