Subscription Invoices — SanadiqCloud Billing

Product version: 1.0.0+1 Last updated: 2026-08-03 Audience: Users with billing:read (billing:update to pay)

These are subscription invoices (plan charges and capacity-update invoices), not Sales/customer invoices.


A. Invoice List

Path: /billing/invoices.

Pending update payment CTAs open this list pre-filtered to status open.

Filter Options
Search Invoice number / id
Status All, draft, open, sent, paid, overdue, failed, cancelled, refunded, voided
Dates From / to

Columns

Number, Status, Issue date, Due date, Total.


B. Invoice Detail

Path: /billing/invoices/:id (or detail route used by the app).

  • Header totals and status
  • Line items table (description, qty, unit price, line total)
  • Pay when unpaid → Stripe Checkout in payment mode (POST /invoices/{id}/checkout)
  • Unpaid invoices may be edited (notes, due date, tax, discount) or deleted when permissions allow

PDF

The Flutter client can open a PDF when a document_url is present on the invoice payload. The billing API does not currently produce document_url, so PDF download is typically unavailable until that field is populated by a future change.

Typical subscription line items

When the billing service builds a subscription invoice from plan rates, lines commonly include:

Line Quantity Unit price
Monthly base fee Selected months rate_per_month
Per-employee fee Selected employees / seats rate_per_employee
Storage fee (GB above free allowance) Billable GB only rate_per_gb

Billable GB = max(selected storage GB − plan free_storage_gb, 0). If billable GB is zero, the storage line is omitted.

Adjust subscription creates an unpaid invoice for the update charge with itemized lines (prorated seat/storage increases and/or added-month components — see Subscription); paying it activates the staged changes. Prior invoices are not recalculated. Older unpaid update invoices generated before itemization may still show a single "Subscription update" line — delete and re-adjust to regenerate.

There is no separate Payments ledger page; payment happens from Plans, Subscription/Hub, or Invoice detail via Checkout.


Related: Overview | Subscription | Payments (Checkout)