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

  1. Open /invoices/new?kind=invoice.
  2. Choose a customer from Contacts.
  3. Add invoice lines. Use a product or service where available, or enter the line description, quantity, unit price, and tax.
  4. Review payment terms, issue date, due date, currency, reminders, and other information.
  5. 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.

  1. A Draft can be edited and marked sent or cancelled.
  2. Sending or confirming establishes the billable claim.
  3. Partial payment updates the paid and open balances atomically.
  4. Full allocation marks the invoice Paid.
  5. 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 seeWhat to check
Customer selector is emptyCreate the customer in Contacts first.
Confirm or Send is disabledAdd a customer and at least one valid line, then check your role and workspace state.
Payment link is missingConnect Stripe and confirm the invoice is eligible for online collection.
Amount fields are lockedPaid and voided documents protect historical money values. Use the proper reversal workflow.
Invoice remains partially paidThe recorded allocation is below the open balance. Open the Payments tab and review all allocations.
Report does not include a draftIssue or post the document. Drafts often stay out of financial totals.