Skip to main content
Cancel a pending, active, or past-due subscription. The behavior depends on the current subscription status.
Authentication: API Key (merchant, owner role)
This endpoint also has a customer-side flow with session-token auth: see Cancel Subscription (Customer).

Cancellation Behavior

  • pending: Directly canceled, status becomes canceled — it never passes through canceling
  • pending plan-change subscription: also becomes canceled directly, but the PSP cancellation for that scheduled subscription is dispatched right away, so it neither activates nor charges at the planned switch time. The original subscription is left untouched: it stays canceling and does not return to active
  • active: PSP cancellation is triggered (takes effect at billing period end). Local status becomes canceling, then updated to canceled via Webhook when the period ends
  • past_due: PSP cancellation is dispatched immediately, not deferred to period end. Local status becomes canceling, then updated to canceled via Webhook once the PSP confirms. No “cancellation scheduled, access until X” email is sent on this path, because the billing period has already lapsed
A canceling subscription can normally be reverted with Reactivate Subscription, but a subscription that had an unpaid charge at the moment cancellation was requested cannot be reverted and that endpoint returns 400. Cancelling a past_due subscription always falls into this category.
A subscription that is canceling because of a confirmed plan change can never be reverted, not even after that change is voided by cancelling its pending new subscription: the payment channel put the original subscription into pending cancellation when it confirmed the change and offers no way back. It moves one way to canceled; to keep the buyer paying, place a new order.

Request Body

Example Request

Success Response (200) — Active Subscription

Success Response (200) — Pending Subscription

Response Fields

Errors

Retry policy: Never retry 4xx — fix the request and resubmit. Retry 5xx with exponential backoff (start 5s, max 3 attempts).