Customer statement (printable)
One customer's whole money picture on a page: their orders, the payments received against each, and every order's ledger-computed balance (GET /fin/orders/:id/balance — the ledger is the arithmetic authority; the page only displays strings). Print produces a clean statement — all app chrome is print-hidden.
If you are building a front end
Your front end calls this over the same-origin `/api/v1` proxy — no backend code to write, no schema to design. Endpoints: GET /crm/contacts/:id, GET /ord?crmContactId=, GET /fin/payments, GET /fin/orders/:id/balance.
Bring any front end — hand-written, or generated with Lovable, v0, Bolt, Claude, or Cursor. You get auth, a multi-tenant database, payments through your own Stripe, and email/SMS without writing or hosting a backend.
- How to turn it on
- Statement button on every contact detail page.
- Who can use it
- inherits crm/ord/fin read permissions; money masked per invoices.view.
- The API behind it
GET /crm/contacts/:id, GET /ord?crmContactId=, GET /fin/payments, GET /fin/orders/:id/balance- Where it lives
- /crm/contacts/:id/statement
See it in context
Quoting, invoicing & payments — the full walkthrough, step by step: Estimate → quote → invoice → money in YOUR Stripe. We never hold your funds.
Machine-readable
This page is generated from our published capability catalog. Point your AI assistant at /features.json (or /llms.txt) and it can read every feature, how to enable it, and the endpoints behind it — then build against them.