Subscription lifecycle
How subscriptions are created
Managing active subscriptions
Suspend and restore are available on the partner API:POST /partner/external-checkout/subscription-status (auth X-Webhook-Secret, action: "suspend" | "restore"). Suspend blocks the switch port; restore re-provisions it.
Plan change is also available on the partner API: POST /partner/subscriptions/{id}/change-plan (auth X-API-Key, scope provisioning:write), plus a GET .../preview to check eligibility first. It applies immediately, once per calendar day (UTC).
Activation and cancellation remain dashboard-only (Settings → Subscribers) — they trigger switch commands and billing adjustments not exposed on the partner API.
Webhook events
kurnl emits exactly these six events:
There are no
subscription.suspended or subscription.reactivated events — suspend/restore transitions are not webhooked; the subscription-status response is the confirmation.
See Webhooks for payload shapes and retry behaviour.