Servicio generates invoices automatically the moment a visit is marked complete. You do not create invoices manually in normal operation — the visit creates them.
When an invoice is created
- On
visit.completedtransition. - The invoice inherits the ClientService's price as the base line item.
- Any visit-level line-item adjustments (extra chemicals, extra labor, materials) are added as additional lines.
- Total is computed in cents.
- Status starts at
sent(not draft) — it is assumed complete and issued in the same motion.
Invoice numbering
Format: INV-{tenant_id}-{YYYY}-{NNNNN}. Year-scoped, zero-padded, tenant-unique. Example: INV-14-2026-00142.
What goes on the invoice
- Your business info (from Settings → Branding).
- The client's name and address.
- Invoice number, issue date, due date.
- Line items from the visit.
- Subtotal + any tax line + total.
- A pay link (if Stripe Connect is configured).
- Your logo and brand color.
Invoice lifecycle
- sent — issued, emailed, not yet viewed
- viewed — client has opened the pay link
- partial — partial payment received
- paid — fully paid
- overdue — past due date, unpaid
- written_off — owner gave up on collection
- void — cancelled (never collected, not a write-off)
Adjusting an invoice after the fact
Open the invoice. The owner can add/edit/remove line items until it is paid. Once paid, the invoice is locked. To adjust a paid invoice, issue a credit note (coming Q3 2026) or process a refund.
When you edit a sent invoice's total, the dunning cadence resets — the system treats it as a new invoice for dunning purposes. This is intentional so that corrections don't trigger overdue reminders for the portion that was just added.