Accept a retention offer
Applies the retention offer a customer accepted instead of cancelling.
Pass the cancellation reason the customer picked and the offer it maps to. offerType has to be the offer configured for that reason in the dashboard retention settings; any other pairing is rejected with 400. Eligibility is checked again at this point, so an offer that was eligible when you fetched it can still be refused if, for example, the subscription was paused or scheduled to cancel in between.
What happens depends on the offer:
DISCOUNTcreates a single-use coupon for the configured percentage and billing cycles and attaches it to the subscription. The response includes the discounted amount and when the discount ends.PAUSEpauses the subscription forpauseMonths, which must be one of the durations returned by Get retention offers. Billing and access resume on the returned date, exactly as a merchant-initiated pause would.SUPPORTrecords that the customer took the support offer and returns the configured support URL to send them to. Nothing changes on the subscription.
Every acceptance is recorded against the subscription and counted by the organization’s offer repeat policy, so a customer cannot stack discounts or pause indefinitely by reopening the cancellation flow.
Authorizations
The Server API Key obtained from the kelviq application. Pass as a Bearer token in the Authorization header. Example: 'Authorization: Bearer YOUR_API_KEY'
Path Parameters
The unique identifier of the subscription.
Body
The offer to apply. Must be the offer configured for cancellationFeedback.
DISCOUNT, PAUSE, SUPPORT "PAUSE"
The cancellation reason the customer picked.
TOO_EXPENSIVE, MISSING_FEATURES, SWITCHED_SERVICE, UNUSED, CUSTOMER_SERVICE, LOW_QUALITY, TOO_COMPLEX, OTHER "UNUSED"
Required when offerType is PAUSE. Must be one of the durations returned by Get retention offers.
x >= 13
Response
The offer was applied. The fields after cancellationFeedback depend on offerType.
"Subscription paused successfully"
DISCOUNT, PAUSE, SUPPORT TOO_EXPENSIVE, MISSING_FEATURES, SWITCHED_SERVICE, UNUSED, CUSTOMER_SERVICE, LOW_QUALITY, TOO_COMPLEX, OTHER DISCOUNT only.
20
DISCOUNT only.
3
DISCOUNT only. When the discount stops applying, or null when it applies to a single invoice.
DISCOUNT only. The amount billed per period before the discount.
"50.00"
DISCOUNT only. The amount billed per period while the discount lasts.
"40.00"
PAUSE only.
3
PAUSE only. When billing and access resume.
SUPPORT only. The support URL to send the customer to.
"https://cal.com/acme/15min"