Raised from the week, not from a spreadsheet
A client invoice is generated from approved weeks at the placement's charge rate. Because both sides come from one week, the margin on a placement is arithmetic rather than an estimate, and there is no month-end reconciliation between what you paid and what you billed.
Its own series, and its own life
Sales invoices run on the agency's own sequential series, separate from the self-billed purchase series. Each moves through RAISED, SENT, PAID or VOID.
Overdue is not a state anybody sets. It is derived from the due date and the state, so an invoice cannot be marked paid and still show as overdue, and nobody has to remember to run anything.
The VAT number gate
Payment terms and due dates
Each client carries its own payment terms in days. The due date is set from the issue date and those terms when the invoice is raised, so a client on 60 days and a client on 14 both get the date they actually agreed.
What the client sees
The client portal carries an invoice shelf, and it shows sent invoices only. An invoice that has been raised but not sent is an internal document, and showing it would be a conversation about a number the agency has not committed to yet.
There is a Xero export for this series too, so the sales ledger lands in the accounting package without rekeying.
Both sides of one week
Open the demo, find an approved week, and follow it into the self-billed invoice and the client invoice raised from it.