A stack of invoices and a job list
Month end. Twenty subcontractors have invoiced for window cleaning, grounds maintenance, specialist floor work and reactive repairs. Each invoice is formatted differently. Some list job numbers, some list site names, some just say 'works as agreed, October'.
The accounts assistant opens the job management system in one window and the invoice in another and tries to match them. A job appears on two invoices. Another is invoiced at a rate higher than agreed. One was never marked complete in your system, so nobody knows whether it happened. The assistant parks the difficult ones in a folder and pays the rest, because the subcontractors are chasing.
Why invoice checking is so slow
We have written separately about keeping subcontractor insurance and qualification paperwork up to date. This is the other half of subcontractor admin: making sure you pay for what was done, at the rate agreed, once.
The information needed to check an invoice exists, but in three places. The job and its completion status are in your job system. The agreed rates are in a rate card or email. Evidence of completion, if any, is in photos, sign-off sheets or a subcontractor's own portal. The invoice itself is a PDF that references none of these consistently.
Because checking properly takes so long, many firms check only the large invoices, or spot-check at random, and pay the rest on trust. That works until it does not.
None of this assumes bad faith. Most mismatches are honest: a job invoiced before it was closed in your system, an old rate left on a subcontractor's template, a visit logged under a different site name. Honest mistakes still cost money if nobody catches them.
What unchecked invoices cost
| Problem | Effect |
|---|---|
| Duplicate billing | The same job paid twice across two invoices |
| Rate drift | Rates creeping above what was agreed |
| Unverified work | Paying for jobs with no evidence they were done |
| Re-billing gaps | Work you should have recharged to your client missed |
| Slow payment | Good subcontractors kept waiting while invoices are queried |
The re-billing gap is easy to overlook. When a subcontractor does reactive work that your client should pay for, a slow or incomplete match can mean you pay the subcontractor and never invoice the client.
How we automate the match
- Invoices collected from a dedicated email address or a supplier upload page, so they all arrive in one place.
- Each invoice read with OCR and a language model to extract the supplier, invoice number, lines, sites, dates, quantities and amounts, whatever the layout.
- Every line matched to a job in your job management system through its API, using job number where given and site, date and description where not.
- Checks on each matched line: the job is marked complete, completion evidence exists, the rate matches the subcontractor's rate card, and the job has not already been invoiced.
- Invoices where every line passes go to Xero or QuickBooks as bills ready for approval. Lines that fail go to an exceptions queue with the reason shown.
- Rechargeable jobs flagged so a client invoice is raised for them, and a monthly view of spend per subcontractor, per site and per job type.
A person approves every payment. The system prepares and checks; it does not pay anyone on its own.
What month end looks like now
Most invoices arrive, match and pass without anyone touching them until approval. The accounts assistant works through a short exceptions list: a missing job number, a rate that does not match, a job with no completion record. Each exception comes with the reason, so the query to the subcontractor is specific.
Good subcontractors get paid more promptly because their invoices are not held up by everyone else's. And for the first time you can see what each subcontractor costs you by site, which is useful when retendering.
Signs you need this
- Subcontractor invoices are checked against jobs by hand, if at all
- Invoices arrive in many formats with inconsistent references
- You have paid for the same job twice
- Agreed rates live in emails rather than a rate card
- Rechargeable work is sometimes never billed to the client