lbreeze
\← All articles

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

  1. Zephyr marks the invoice paid.
  2. It calls the provisioning API with the plan the customer bought.
  3. kstack creates the account, the subscription and the resources the plan grants.
  4. 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.