Finance
Invoices and estimates
Create estimates and invoices, issue them, collect payment, use payment links, and reverse mistakes correctly.
Open Finance → Invoicing at /invoices. The page combines three working sets: All Invoices, Estimates, and Recurring. It also shows value trends, status distribution, aging alerts, and recently deleted records.
Access and permissions
Reading requires the Invoices module. Creating, editing, sending, changing lifecycle state, recording payment, generating payment links, voiding, moving to Trash, and restoring require SUPER_ADMIN or MANAGER. A read only user can inspect permitted invoices without mutation controls.
Create an invoice
- Open
/invoices/new?kind=invoice. - Choose a customer from Contacts.
- Add invoice lines. Use a product or service where available, or enter the line description, quantity, unit price, and tax.
- Review payment terms, issue date, due date, currency, reminders, and other information.
- Use Confirm to create and issue the document, or Send to issue and deliver it through the configured email path.
The form starts as an unsaved document. Leaving before a successful create discards the customer and lines. Wait for the new invoice route or success notification before navigating away.
Create and convert an estimate
Open /invoices/new?kind=estimate or select the Estimates tab and New Estimate. Record the customer, lines, validity, and expected terms. When accepted, use the conversion action to create the invoice while preserving the estimate outcome and link.
Invoice lifecycle
The customer invoice status set is Draft, Sent, Partially Paid, Paid, Overdue, Cancelled, and Void.
- A Draft can be edited and marked sent or cancelled.
- Sending or confirming establishes the billable claim.
- Partial payment updates the paid and open balances atomically.
- Full allocation marks the invoice Paid.
- Void is the controlled lifecycle reversal for an issued document when the action is available.
Do not edit historical money fields to simulate a reversal. Use a credit note or void workflow so the audit and accounting effect remains explicit.
Record payment
Open /invoices/[id] and select Record payment. A payment can be allocated to one or more invoices, and the server prevents an allocation above the permitted balance. The Payments tab on the invoice shows the allocations.
For customer self service, use the payment link control after Stripe customer payments are connected under /settings/payments. You can generate or revoke a link. Stripe receipts retain their provider identifiers for reconciliation.
Credit notes
Use the credit note action from the invoice for a post issue reduction or reversal. Credit notes are separate records under /credit-notes, linked to the source invoice. Their applied amount appears in the invoice Credits tab.
Trash and restore
Moving an eligible invoice to Trash removes it from active totals and makes it restorable at /invoices/trash. This is for unwanted drafts or records that are safe to archive. It is not a substitute for voiding, cancelling, or crediting a business document.
Common problems
| What you see | What to check |
|---|---|
| Customer selector is empty | Create the customer in Contacts first. |
| Confirm or Send is disabled | Add a customer and at least one valid line, then check your role and workspace state. |
| Payment link is missing | Connect Stripe and confirm the invoice is eligible for online collection. |
| Amount fields are locked | Paid and voided documents protect historical money values. Use the proper reversal workflow. |
| Invoice remains partially paid | The recorded allocation is below the open balance. Open the Payments tab and review all allocations. |
| Report does not include a draft | Issue or post the document. Drafts often stay out of financial totals. |