No storefront plugin required. Integration is plain server-to-server HTTP — a redirect your
page reads, a callback you fire when payment succeeds, and (if you bill directly) a suspend/restore
call. It works the same whether your checkout is a WooCommerce store, a custom cart, or a billing
platform like Stripe Billing. Your team owns the code and the release timeline; nothing of kurnl’s
runs inside your site.
Choose your path first
Everything below the next table describes CKO-03, where the shopper starts on the kurnl marketplace. If your customers buy on your site, you want CKO-04 and a different set of calls — skip ahead to Provider-initiated.What you build (CKO-03)
1
Read the handoff
A subscriber picks your plan on the kurnl marketplace and is redirected to your checkout URL with
a
session_id. Your page reads the session to learn which plan and location the subscriber chose.2
Tell kurnl when payment succeeds
After the subscriber pays on your page, your backend calls one endpoint —
POST /external-checkout/complete — with the session and the subscriber’s details. kurnl creates
the subscriber and, depending on the building’s line type, either activates and provisions the
switch port directly (first-line buildings) or creates a PENDING_INSTALL subscription with an
operator install job (everything else) — see the CKO-03 guides.3
Suspend / restore — only if you own billing
If you collect the recurring charge yourself, call
POST /external-checkout/subscription-status
from your billing lifecycle: suspend on a failed payment, restore when it recovers. kurnl
mirrors the change on the port with no invoices or fees of its own.End-to-end flow (CKO-03)
- After payment (and after calling
/complete), your store redirects the shopper back to the kurnl marketplace return URL with thesession_idso they can watch provisioning progress — see Sell through WooCommerce.
Choose your integration path
Not every partner integrates the same way. Pick the path that matches how you sell and bill.
For session-based
/complete calls, the building’s line type decides the outcome:
first-line buildings provision the port immediately, while second/third-line or
unclassified buildings create a PENDING_INSTALL subscription plus an operator
install job (no job_id in the response) — see
Direct delivery and Home-drop delivery.
Unsure which path fits? Ask who owns the funnel. If the shopper reaches you
from the kurnl marketplace, you want CKO-03 direct — read the direct-delivery
guide end to end; the other CKO-03 variants are variations on the same three steps.
If the shopper never touches the marketplace because your own site takes the order
and the payment, you want CKO-04, and none of the session mechanics on this page
apply to you. Selling through a WooCommerce store? See
Sell through WooCommerce for the WooCommerce-specific
choices on top of these APIs.
Authentication
Two headers cover every partner call. Both are issued from the provider dashboard: the API key on the API Key page (/api-keys), the shared webhook secret on the
Checkout page (/checkout-settings).
The partner API base is
https://middleware.bso-projects.com/partner. See
Authentication for the full guide and
API Overview for base URLs and rate limits.
Before you go live
1
Try it in the sandbox
Exercise the full flow against safe, throwaway data before touching real subscribers or the switch.
See Sandbox Setup.
2
Stand up a webhook endpoint
Point a
webhook_url at your system so you receive subscription.activated,
provisioning.completed, and provisioning.failed. Verify the HMAC signature — see Webhooks.3
Decide who owns recurring billing
If kurnl bills, you’re done after
/complete. If you bill, wire up
suspend / restore so a failed payment actually cuts service.Next steps
Direct checkout guide
The most common path, start to finish — session, callback, provisioning.
API Reference
Every partner endpoint with request/response shapes and error codes.
Webhooks
The events kurnl sends you, the payload envelope, and signature verification.
Sandbox
Test credentials and a safe environment to build against first.