Most read endpoints have no explicit permission (any tenant member can see their own plan/usage); management actions require billing.manage or billing.view.

Method & PathPermissionPurposeSide effects
GET billing/plans—Plans with FX-resolved pricing—
GET billing/subscription—Active subscription + entitlements—
GET billing/usage—Usage vs plan caps—
GET billing/transactionsbilling.viewBilling transaction history—
GET billing/invoices / GET billing/invoices/{uuid}billing.viewList / detail—
GET billing/invoices/{uuid}/pdf / /receiptbilling.viewStream invoice PDF / payment receipt PDF (paid only)—
POST billing/invoices/{uuid}/retrybilling.manageReopen checkout for an outstanding invoiceCalls gateway checkout
POST billing/discount/previewbilling.managePreview a promo code (never throws)—
POST billing/quotebilling.manageBuild a server-authoritative, time-locked checkout quotePersists a BillingQuote; 422 if live FX is unavailable
POST billing/subscribebilling.manageSubscribe or change planRequires TOTP for paid plans; identity step-up for a paid→free downgrade
POST billing/checkout/syncbilling.manageVerify a pending checkout with the gateway directlyWebhook-loss fallback; idempotent against the webhook path
GET billing/addons—Add-on catalogue (extra users; transaction blocks on Growth) — add-ons recur with the plan—
POST billing/addonsbilling.manageSet add-on quantitiesDecreases apply immediately; increases return a checkout URL for a prorated charge, after which the add-ons recur on every renewal invoice
POST billing/subscription/{subscription}/cancelbilling.manageCancel (immediate or at period end)—

Platform admin billing

Method & PathPurpose
GET admin/plans, POST admin/plans, PATCH admin/plans/{plan}Plan CRUD
DELETE admin/plans/{plan}Delete (or deactivate if in use)
POST/PATCH/DELETE admin/plans/{plan}/prices/{price}Per-country/interval price rows
GET admin/billing/reconciliationCross-tenant invoice ↔ payment ↔ gateway settlement matching
GET/POST/PATCH/DELETE admin/discountsPromo code CRUD

All /admin/* routes require the platform middleware, independent of tenant RBAC. See API — Platform Admin.