Tracking a purchase order is usually treated as a buying question: has it been sent, confirmed, delivered? On a project it is also a cost question. From the moment a PO is confirmed, the money is committed – and the job’s margin has already changed, weeks before the supplier’s bill reaches the ledger. This guide follows one supply agreement through its life with dates, then covers three-way matching, month-end accruals for goods received but not invoiced, blanket orders and call-offs, currency and a PO log that stands up to audit.
The cost exists before the invoice
A booked-cost report answers “what have we been billed?”. Project control needs “what have we committed to?”. The gap is the value of open orders and subcontracts – on a £560,000 HVAC fit-out at the end of October, £79,600, or about a sixth of the forecast cost.
The life of one purchase order
Ductwork on that fit-out is bought under a frame agreement with three call-offs as the site progresses:
Five dates matter and they are all different: when you commit, when goods arrive, when the bill is booked, when it is paid, and when the last delivery is due. Project cost follows the first, accounting the third, cash the fourth, and the programme the second and fifth.
Three-way match
Before a supplier bill is approved, three documents should agree: the PO (what we ordered, at what price), the goods receipt (what actually arrived, from the delivery note) and the bill (what the supplier asks to be paid). Mismatches are where duplicate billing, short deliveries and price creep surface. On site-delivered jobs the receipt step is the one that gets skipped – the delivery note stays in the site cabin. A photo of the delivery note logged against the PO line on the day solves both control and accruals.
Received, not invoiced: the month-end accrual
At 31 October 2026, the second call-off has been delivered and installed, but £8,500 of it has not been billed. The cost belongs to October. The usual treatment is to accrue it – often called GRNI, goods received not invoiced – and reverse it when the bill arrives:
| Debit | Credit | |
|---|---|---|
| 31 Oct: goods received, not invoiced | Job cost – ductwork £8,500 | Accrued liabilities £8,500 |
| 1 Nov: reverse | Accrued liabilities £8,500 | Job cost – ductwork £8,500 |
| Bill arrives | Job cost – ductwork £8,500 + VAT | Accounts payable |
Skip it, and October looks better than it was and November worse. On one job the effect is small. Across all jobs at a quarter-end it can be material, and it is exactly what auditors test. If POs and receipts live in one place, the GRNI list is a report, not a round of phone calls.
Blanket orders and call-offs: what is actually committed?
Blanket orders and frame agreements give better prices and less stock on site, but a blanket order is not automatically a binding commitment for its full value. It depends on what the agreement says. A frame “up to £120,000” that you may call off from commits you to nothing beyond what you order. A minimum purchase obligation, or a firm quantity with scheduled deliveries, commits you to that minimum or quantity even before it is called off. Read the agreement, then keep five numbers apart:
| Ductwork agreement | What it means | |
|---|---|---|
| Agreed frame | £120,000 | The ceiling. Not a commitment in itself |
| Minimum commitment | £60,000 | Binding even if not called off. Already exceeded here |
| Called off (ordered) | £110,000 | Three call-offs: £50,000, £38,500 and £21,500 |
| Received | £88,500 | Call-offs 1 and 2 delivered; call-off 3 due 18 Nov |
| Billed | £80,000 | Call-off 1 in full, £30,000 of call-off 2 |
| Committed, not billed | £30,000 | Called off minus billed: £8,500 received not billed + £21,500 not yet delivered |
The job forecast carries the £30,000 as committed. The £10,000 left on the frame is not committed – if the job still needs it, it belongs in “still to buy”, at the agreed price. Had the minimum been £115,000, the extra £5,000 above what has been called off would be a commitment too, because you have to pay for it whether or not you need it. Track each call-off as its own order or line, not just the agreement total; otherwise “£30,000 open” cannot tell you whether the material is on site or not yet made.
Currency and price variance
Equipment bought in euros or dollars adds two uncertainties: the rate on the bill and the rate on payment. Keep the open balance in the PO currency and convert at today’s rate in the forecast, not the estimate rate. Price variances between PO and bill – freight, surcharges, indexation – should be approved explicitly and land on the cost code. Small extras across many POs are a classic leak.
Subcontracts are commitments too
For a mechanical contractor, subcontracts – insulation, controls, cranage – are often a fifth of the cost. They are commitments from the day they are signed, but they are billed through applications for payment, not POs. On the fit-out, the insulation subcontract was let at £43,700; £15,600 has been applied for and certified, so £28,100 is still committed. Track subcontract value, certified to date, retention held and remaining value side by side with POs. In the UK the Construction Act payment notice and pay less notice deadlines apply to your subcontractors as they do to you, so the dates belong in the same log.
Three reports to run every week
- Open commitments by job and cost code – POs and subcontracts, value still to bill.
- Received, not invoiced – the accrual list and the chase list for missing bills.
- Overdue deliveries – lines past their expected date; they move the programme and the cash forecast.
A PO log that works
| Column | Holds |
|---|---|
| Job and cost code | Where the cost belongs |
| PO number and line | Including call-off |
| Supplier, currency, terms | Payment terms and delivery terms (Incoterms) |
| Ordered | Quantity and value |
| Received | Quantity and date from delivery note |
| Billed | From booked bills |
| Open | Ordered minus billed, never below zero |
| Of which received, not billed | Basis for the accrual |
| Expected delivery | Drives programme and cash flow |
The weak point is the received and billed columns: someone has to post every delivery note and every bill against the right line. Miss one, and the numbers are wrong without anyone noticing. Reading bills from the accounting system and matching them to POs removes the re-keying of bills, but the receipt still has to be recorded by someone on site.
Commitments and actuals through the lifecycle
In ProfitTracker a purchase order is raised on the job and the budget line it belongs to. From the day it is approved or sent, its value counts as committed on the job. Goods receipts are recorded per line – partial deliveries, back orders, damaged items and attachments – and late deliveries are flagged.
Booked supplier bills are read from the accounting system in the daily sync, and you match them to the order. Committed goes down and incurred goes up by the same amount, so nothing is counted twice. Closing a PO removes the remaining balance from committed.
| Called offOrdered under the agreement | £110,000 |
|---|---|
| ReceivedCall-offs 1 and 2 delivered | £88,500 |
| IncurredBills booked and matched | £80,000 |
| CommittedCalled off, not billed yet | £30,000 |
| = Total on the cost code | £110,000 |
Want to see commitments and actuals on your own jobs?