View billing and plan
Billing is Owner-only. Admins, Operators, and Viewers receive 403 on /owner/billing — this is enforced server-side by RequireOwner() middleware, not just hidden in the UI. An Admin who asks to see invoices needs either a read-only export from you or a transfer of ownership.
Billing failure notices (email, in-app) are delivered only to the Owner. Set a forwarding rule or a shared Owner inbox if you need finance to see them.
Procedure
- Open Owner → Billing from the left nav.
- Review the Current plan card: plan name, seat count, camera count, storage tier, next renewal date.
- Check Usage this period: cameras active, events generated, storage consumed, AI events billed. Costs scale with all four.
- Scroll to Payment method. The card number is masked to the last 4 digits. Click Update to change the card on file.
- Scroll to Invoice history. Each row shows date, amount, status, and a Download PDF link. Download a PDF for accounting.
What happens after you confirm
- Updating the payment method takes effect on the next billing cycle. In-flight renewals charge the old card.
- PDF invoices are generated on renewal and retained for seven years. Older invoices are still downloadable.
- Changing the LLM model (Admin capability, D82) changes per-event AI cost immediately. That line item moves on the next bill — review the LLM pricing table before your Admin switches models. See Configure the LLM model.
- Billing failures trigger an email and an in-app notification to the Owner. Miss three renewals and the org moves to a read-only state; operators can still view but cannot record new events.
Common variations
- Export invoice history to CSV: click Export at the top of the invoice table. The CSV includes the same fields as the PDFs plus a machine-readable line-item breakdown.
- Read-only share with finance: use the Export above. There is no “finance reader” role in v1 — that is deferred to custom roles (D86).
- Switch plan tier: click Change plan in the Current plan card. Downgrades take effect at the next renewal; upgrades are prorated immediately.
If this didn’t work
- If Owner → Billing is missing from your nav, you are not the Owner. Only one user per org holds Owner at any moment (D79). See Transfer ownership if you should be the Owner.
- If the page loads with 500 and your deployment is self-hosted, billing integration is not configured. On v1 this is expected — the plan always reads
self-hosted. Contact NovaVMS if you need hosted billing. - If a PDF download fails, confirm your browser is not blocking third-party storage. Invoice PDFs are served from object storage with short-lived signed URLs.
Related
- Roles and permissions — why only Owner sees this page
- Configure the LLM model — Admin capability that drives per-event AI cost
- LLM pricing — cost per event by provider and model