When a cancellation case is created
A cancellation case can be started for any subscription inactive, paused, or past_due status. Subscriptions that are already cancelled cannot open a new case.
Cases are created in two ways:
- Store API: A customer initiates a cancellation request through
POST /store/customers/me/subscriptions/:id/cancellation. This creates a case and surfaces it in the Admin cancellations queue for operator handling. - Admin: An operator opens a case directly from the subscription detail page.
Cancellation case states
Retention offer types
Before finalizing a cancellation, you can apply one or more retention offers to try to keep the subscriber. Each offer is recorded as a retention offer event in the case history.Applying a pause offer closes the cancellation case as
paused. Applying a discount or bonus offer closes the case as retained. In both outcomes, the subscription is not cancelled.Finalizing a cancellation
If no retention offer resolves the case, you finalize the cancellation from the case detail page. Finalization requires a churn reason to be recorded before it proceeds. When you finalize:- The subscription moves to
cancelled. cancel_effective_atis set.next_renewal_atis cleared, stopping all future renewal scheduling.- The case closes as
canceled.
Cancellation reason categories
When you record or update a churn reason on a case, you classify it into a reason category. These categories are used for reporting and help surface churn patterns in the Admin analytics. Common categories include product dissatisfaction, pricing concerns, and temporary pauses versus permanent cancellations. You can update the reason and category on an open case at any time without affecting the case status.Coexistence with dunning
A cancellation case and a dunning case can be active for the same subscription simultaneously. A subscriber inpast_due status — where dunning is actively retrying the payment — can still enter a retention flow or be finalized for cancellation. Dunning owns the payment recovery process; the cancellation case owns the churn handling process. Neither domain takes over the other’s state.
Store API self-service cancellation
Customers can initiate their own cancellation request through the Store API without needing Admin intervention to start the process. ThePOST /store/customers/me/subscriptions/:id/cancellation endpoint creates a cancellation case and routes it to the Admin queue, where your team can review it and apply a retention offer or proceed with finalization.
This flow keeps the customer-facing experience smooth while giving your team control over the final outcome.