Two actions fix an invoice that should not stand. A void cancels an invoice made in error. A write-off closes the unpaid part of an invoice you will not collect. You will be able to do either with a written reason, and to see both afterwards.
Before you start #
- You need the owner or manager role. Advisors, the dispatch desk, technicians and drivers are refused.
- Every void and write-off needs a reason of up to 300 characters.
- There are no credit notes. A void covers an invoice raised in error, a write-off covers the unpaid rest of an invoice, and neither refunds money.
Void an invoice #
- Open the invoice from Billing. Under Payments, find the Void or write off section.
- In the card Void this invoice, write the Reason (required, up to 300 characters).
- Select Void invoice. The page says "The invoice is void."
- The invoice keeps its number and shows the status Void, with a note that repeats your reason. It leaves receivables, new statements and the money reports.
- The call, quote and yard fees the invoice was made from are free again, so you can make a correct invoice.
The Void this invoice card shows on open and draft invoices. An invoice with a payment on it cannot be voided. Write off the balance instead. A void invoice takes no payments, from staff or from a card link.
Write off a balance #
- Open the invoice. In the card Write off what is owed, the Amount to write off starts at the full balance. Lower it to write off part.
- Write the Reason (required, up to 300 characters).
- Select Write off. The page says how much is written off.
- The balance falls by the amount. An invoice written off in full shows as Paid, and a line under the summary reads "Written off: ... counts as paid."
- Read what was recorded in the Voids and write-offs table: Kind, Amount, Reason, By and When.
The Write off what is owed card shows on open invoices with a balance. The amount cannot be more than what is owing.
Technical details
- The web page sends
POST /invoices/{id}/voidwith areason, andPOST /invoices/{id}/write-offwith areasonandamount_cents.GET /invoices/{id}/adjustmentsfills the table. A retry that carries the sameIdempotency-Keyheader records nothing more. - Both actions are kept for good in
invoice_adjustments. A void is recorded once per invoice, with the invoice total as its amount. - A write-off adds a payment row with the processor
writeoffand the reference "Write-off: ...", so the balance, the aging and the statements agree. On a statement it shows among the payments for that invoice, on the day of the write-off. - Statements already issued are snapshots and stay as they were. The next statement starts from the corrected balance.
- Each action writes an audit entry (
invoice.void,invoice.write_off), an entry in the integration outbox and a webhook event (invoice.voided,invoice.written_off). - Yard storage days that were billed on a voided invoice stay counted as billed. Add a fee by hand if you want those days billed again.
To pay money back on a payment, or lower the balance without voiding, see "Refund a payment or add a credit note".
If something goes wrong #
- "Write the reason.": both cards need a reason before they send.
- "Enter an amount above zero." and "That is more than the balance.": change the amount to something between 0.01 and the balance.
- "has a payment on it, so it cannot be voided": write off the balance instead.
- "Only N cents are owing": lower the amount.
- "has no balance to write off": the invoice is already paid.
- "is already void": nothing more to do.