Billing with Zephyr
kstack implements no billing. Here is what the provisioning contract expects from each side.
kstack deliberately implements no billing. It exposes a provisioning API and stores no price beyond a display price.
The division
| Owns | What |
|---|---|
| kstack | What a product is: plan, grants, allowances, residency, VPS size, kind |
| Zephyr | How it is sold: price, cycles, page, checkout, invoice, dunning |
A Zephyr product binds to one kstack plan by id. One price everywhere — the customer picks a location at checkout, and there is no per-location price.
What happens on a paid invoice
- Zephyr marks the invoice paid.
- It calls the provisioning API with the plan the customer bought.
- kstack creates the account, the subscription and the resources the plan grants.
- The agent on the target node converges the machine.
Nobody retypes anything, and a missed payment runs the same path in reverse through suspension.
What kstack owns, and Zephyr must not duplicate
- whether a node is serving — kstack measures this
- what is placed on a machine, its rendered config, its tenant containers
- a website, zone, mailbox or database, and its lifecycle
What Zephyr owns, and kstack must not duplicate
- whether a customer exists, is billable, or is suspended for non-payment
Using something else
You can. The provisioning API is public and documented, and the panel itself is a client of it with no private endpoints. Zephyr is simply the path that needs no integration work.
Was this helpful?
Still stuck? Contact support.

