Subscriptions are created automatically as part of the provisioning flows. You never create a subscription directly — instead you call the appropriate provisioning endpoint and kurnl creates and links the subscription to the subscriber.

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.