At period end (default)
cancelAtis set tocurrentPeriodEnd. The status does not change: the customer has paid until then, they keep access.- A daily cron (03:00 UTC) moves the subscription to
canceledonce the date is reached, whatever its status at that point — includingpausedorpast_due. - No further invoice or reminder goes out for the next cycle. If its anticipated invoice had already been issued at D-3, it is voided when the cancellation executes.
200
There is no route to revoke a scheduled cancellation. A second
cancel reschedules it
(same date), it does not undo it. To keep the customer, you will have to recreate a
subscription at the due date.Immediately
status: "canceled",canceledAtset,cancelAtreset tonull.- The anticipated invoice for the next cycle is voided in the same transaction: if that void fails, nothing is cancelled and the call returns 500 — retry.
- No refund is triggered.
The subscription.canceled event goes out twice
This is the trap of this route. On a scheduled cancellation:
An immediate cancellation emits it only once, with
status: "canceled".
During a trial
PrefercancelImmediately: true: see Trials.