Strata Docs

Invoices & Billing

An invoice is created automatically the moment an order is marked as delivered. Strata calculates the totals from the order line items, applies any applicable tax, and sets the invoice status to "sent" — no manual step required. For subscription services, invoices are generated on each recurring billing date without operator involvement.

Invoice Fields#

NameTypeRequiredDescription
publicIdstringYesURL-safe invoice reference shown to clients, e.g. "INV-2024-0042". Used in the client portal and PDF header.
orderIdstring (UUID)YesReferences the Order that generated this invoice. One order produces exactly one invoice.
lineItemsJSONBYesArray of line item objects — each with a description, quantity, unit price, and line total. Stored as JSONB for flexible schema evolution.
subtotalnumberYesSum of all line item totals before tax, in minor currency units (e.g. cents).
taxAmountnumberYesTax charged on this invoice, in minor currency units. Zero when no tax rate applies.
totalnumberYesFinal amount due: subtotal + taxAmount. This is the amount the client pays via Stripe Checkout.
currencystring (ISO 4217)YesThree-letter currency code inherited from the service, e.g. "usd" or "gbp".
status"draft" | "sent" | "paid" | "overdue" | "voided"YesCurrent payment state of the invoice. See Invoice Statuses below for the full lifecycle.
dueDatestring (ISO 8601)YesUTC date by which payment is expected. Invoices whose dueDate has passed and status is "sent" are automatically moved to "overdue".
paidAtstring (ISO 8601)NoUTC timestamp set by the Stripe webhook when payment is confirmed. Null until the invoice is paid.

Invoice Statuses#

NameTypeRequiredDescription
draftstatusNoInvoice has been created but not yet sent to the client. Visible only to operators. Editable at this stage.
sentstatusNoInvoice has been sent to the client with a Stripe Checkout payment link. Awaiting payment.
paidstatusNoPayment confirmed by Stripe. The paidAt timestamp is set automatically. No further action required.
overduestatusNoDue date has passed and the invoice remains unpaid. Strata transitions "sent" invoices to "overdue" automatically at midnight UTC on the due date.
voidedstatusNoInvoice has been cancelled and is no longer collectable. No payment can be taken against a voided invoice.

Creating an Invoice Manually#

In addition to automatic generation, you can raise an invoice manually at any time — for example, to bill for ad-hoc work or to issue a corrective invoice.

  1. Open Billing > Invoices > New Invoice

    Navigate to the Billing section from the left sidebar, select the Invoices tab, then click the "New Invoice" button in the top-right corner.

  2. Add line items and amounts

    Enter a description, quantity, and unit price for each line item. Strata calculates the subtotal and applies the configured tax rate automatically. Add as many rows as needed.

  3. Set a due date

    Choose the date by which payment is expected. The invoice will transition to "overdue" automatically if it remains unpaid past this date.

  4. Send to client

    Click "Send Invoice". The client receives an email containing a Stripe Checkout link. They can pay by card directly from the link — no client portal login required.

Subscription Invoices & PDF Export#

Subscription invoices are generated automatically on each monthly billing date — no operator action is needed. A PDF copy of any invoice is available from the invoice detail view via the "Download PDF" button, and is also attached to the payment confirmation email sent to the client.