When to use this
Use CKO-04 when:- You are an incumbent or existing ISP bringing your own subscribers to the kurnl network
- You handle your own billing entirely — no Stripe or kurnl invoices needed
- You want to provision subscribers programmatically from your own back-office system without a marketplace flow
How it works
One API call does everything:- Creates the subscriber record in kurnl (or reuses an existing account by email)
- Creates and activates the subscription
- Provisions the switch port via SSH (sets VLAN, bandwidth limits, optional MAC binding)
Making the call
provisioning.completed webhook.
Where does the location hash come from?
Unlike CKO-03, there is no marketplace redirect to supply thelocation_hash. You get it one of two ways:
- From your provisioning records — if you previously mapped your subscriber addresses to kurnl location hashes during onboarding
- From the kurnl dashboard — for manual provisioning, look up the port in Dashboard → Network and copy the location hash
No Stripe / no kurnl invoices
CKO-04 does not create any Stripe payment records or Invoice Ninja invoices. Billing is entirely your responsibility. kurnl tracks the subscription for network management purposes (deprovisioning on cancellation, reporting), but does not bill the subscriber on your behalf.If you want kurnl to handle subscriber billing (invoices, Stripe payment links, self-service portal), use CKO-01 (the kurnl marketplace checkout) or CKO-03 instead.
Cancellation
When a subscriber’s service ends, call the subscription cancel endpoint so kurnl can deprovision the port:Field reference
| Field | Type | Required | Notes |
|---|---|---|---|
plan_version_id | UUID | Yes | The plan version to activate |
location_hash | string (10 hex) | Yes | Port location identifier |
email | string | Yes | Subscriber account email |
firstname | string | Yes | |
lastname | string | Yes | |
street | string | Yes | Billing address |
housenumber | string | Yes | |
postalcode | string | Yes | |
city | string | Yes | |
province | string | Yes | |
country | string | No | Default: "Canada" |
phonenumber | string | No | |
mac_address | string | No | Enables port security |
external_subscription_id | string | No | Your own reference ID for this subscription |