Billing is invoice-driven. Orders create invoices, invoices collect payments, and every movement of money is recorded in the transaction ledger. Recurring cycles are generated by the scheduler rather than on demand.
Invoice lifecycle
| Status | Meaning |
|---|---|
| draft | Created but not yet issued to the client. |
| unpaid | Issued and awaiting payment. |
| paid | Settled in full; provisioning may proceed. |
| overdue | Past due date — dunning reminders apply. |
| cancelled | Voided; no longer collectable. |
Recurring billing
Billing automation runs daily at 00:30. It generates invoices for services due in the next cycle, applies proration where configured, and marks invoices overdue once the due date passes. Because it is scheduled, the scheduler container must be running — without it, no recurring invoice is ever raised.
Payments
- Stripe and PayPal are supported. Both are enabled per tenant, with credentials stored in tenant settings rather than environment variables.
- Gateway callbacks arrive as webhooks and are signature-verified before being applied.
- Manual payments can be recorded against an invoice for bank transfer or cash.
Dunning
Overdue invoices trigger reminder notifications on a schedule. Reminder templates are editable per tenant and per locale under notification templates.