Committed costs and forecast final cost: why subbies find out about margin loss too late
Reza6 min read
Subbies find out about margin loss too late because most job reports only show what has been paid. Committed cost — orders raised but not yet invoiced — is where the overrun hides. Track budget, approved variations, committed and actual cost on every cost code, and forecast the final cost while you can still act.
Draft.This article hasn’t had its final edit yet, so treat anything specific in it as provisional.
Ask most subbies how a live job is tracking and you will get one of two answers: "fine, I think" or a number from the accounts that is three weeks old. Neither tells you whether the job will make its margin. By the time the bills say it won't, the money was committed long ago.
Why do subcontractors find out about margin loss so late?
Because the usual report — spend to date against budget — counts money when the invoice arrives, not when the decision to spend it was made.
On a cladding job the big decisions happen early. You order the panels, the subframe and the fixings. You book the crew. You issue stock from the yard. Each of those commits money weeks before an invoice reaches the accounts. A report that only counts paid invoices will show the job comfortably under budget right up until the moment it isn't.
That is not a failure of discipline. It is a failure of where the numbers live: the estimate in one spreadsheet, the orders in an email thread, the bills in the accounting package and the hours on a timesheet. Nobody has all four in front of them at once.
What are the numbers that actually tell you where a job will land?
There are six, and they only work when they sit side by side on the same cost code.
| Number | What it is | Where it comes from |
|---|---|---|
| Original budget | What you priced each cost code at when you won | The winning estimate |
| Approved variations | Changes to the contract the builder has agreed | Variations, once approved |
| Committed | Money agreed but not yet invoiced | Purchase orders raised |
| Actual | Money already spent | Bills, labour and stock issued to the job |
| Forecast final cost | Where each cost code will finish | Actual, committed and what is left to spend |
| Profit remaining | What is left of the margin you priced | Contract sum to date less forecast final cost |
The first row is where most subbies already go wrong. If the budget is retyped from the estimate, it starts drifting on day one — a line missed, a rate typed wrong, a scope merged. Every number below it is then measured against the wrong thing.
How do you stop the budget drifting from the estimate?
Don't create a copy. In Subino, awarding the job locks the contract to the winning revision, and the budget reads straight from that cost sheet, cost code by cost code (win it, and the estimate is the budget). Nothing is re-typed, so nothing can drift from the price you won.
After that, changes go through variations. Approved variations sit beside the original budget instead of being blended into it, so you can always see what you won and what changed.
When should committed cost hit the job?
The day you order. That is the whole point of a purchase order.
In Subino, an RFQ and purchase order is raised from the job against a cost code, and the committed cost is on the job the day you order. When the supplier's price is agreed for the whole job, you can lock it as a master order and draw purchase orders from it in batches as the work needs them, tracked line by line against the master.
When the bill arrives, it should reduce the order rather than be counted again. Subino reads the supplier invoice for you to check, proposes the purchase order it belongs to — from the PO number on the invoice, or the supplier's only open order — and you confirm it before saving (bills read for you, matched to their order). Linked, it comes off that order first, so nothing is counted twice.
What counts as actual cost on a subbie's job?
More than the bills. A subcontractor's actual cost is usually three streams:
- Supplier and subcontractor bills. Matched to their order, so the committed figure falls as the actual rises.
- Labour. The crew clock on to a job and a scope from their phone (time clock, against the scope), so hours land on the work they were spent on.
- Stock from the yard. If you hold factory stock, issuing it to a job puts its cost on that job's budget under the item's own cost code, at the average price you paid (issue it to the job from your phone). The factory stock page has the detail.
Miss any one of those and the forecast is optimistic by exactly that amount.
How do you forecast the final cost of a job?
A common, honest method is: actual cost to date, plus committed cost not yet billed, plus your estimate of what is still to spend to finish. Do it per cost code, not for the job as a whole — a job total hides one code sliding behind another that is under.
Here is the checklist I use on a live job each week:
- Are all orders raised for work already agreed? An unordered commitment is invisible.
- Are this week's bills matched to their orders?
- Is labour for the week approved against the right scopes?
- Has any stock gone to the job?
- Are new variations priced, sent and recorded?
- Which cost codes have a forecast above their revised budget — and why?
In Subino the budget review shows original budget, variations, committed orders and actual cost — bills, labour and stock — on every cost code, with a forecast final cost and the profit remaining. You find out a code is sliding in the week it happens, not at close-out.
What does a sliding cost code look like in practice?
It rarely looks like a disaster. It looks like a subframe code that is "about half spent" on a job that is about half done — reassuring, until you notice that every order for the rest of the subframe has already been placed. Spend to date says half. Committed plus actual says the code is already at its budget, with the last level still to install and the extra brackets the site asked for not yet ordered.
Seen that week, there are still choices: price the extra brackets as a variation, talk to the supplier about the next draw-down, or move a crew. Seen at close-out, there are none.
Who should look at the forecast, and how often?
Weekly, by whoever owns the job's money — usually the estimator who priced it or the person running it. The crew do not need to see margin, and in Subino they don't: the crew, the office and management each see what their role allows because the database enforces it (permissions in the database, not the buttons).
What about the whole book, not just one job?
Once each job is honest, the book is too. The work-in-progress view shows, across every live job, per cent complete by cost, revenue earned against what you have billed, cost to complete and expected gross profit. It is the number that tells you whether you are funding the builder.
How do you stop finding out about margin loss too late?
Margin is lost when money is committed, not when it is invoiced. Make the won estimate the budget without retyping it, put committed cost on the job the day you order, match bills to their orders, count labour and stock, and look at the forecast per cost code every week.
That is the idea behind Subino: one system for the whole job, entered once. The Run the money section covers the rest, and pricing shows what each plan includes. If you would like to see a live budget built from a job you have priced, book a 15-minute demo.
Frequently asked questions
What is committed cost in construction?
Committed cost is money you have agreed to spend but have not yet been invoiced for — mainly purchase orders raised and subcontract packages let. It is a real cost from the day you order, even though it will not reach your accounts until the supplier's bill arrives, which is why reports that ignore it look healthier than the job really is.
What is forecast final cost?
Forecast final cost is your best estimate of what a job will have cost by the time it is finished, cost code by cost code. A common way to build it is actual cost to date, plus committed cost not yet billed, plus what you still expect to spend to complete. Against the budget it shows which codes are over; against the contract sum, the profit remaining.
Why isn't spend to date enough to track a job?
Because spend to date only shows what has been invoiced and paid. Orders already placed, labour already worked and stock already used can all sit outside it for weeks. A cost code can look half spent while it is already fully committed, and the overrun only appears when the last bills land.
How does the estimate become the budget in Subino?
Awarding the job locks the contract to the winning revision, and the budget reads straight from that cost sheet, cost code by cost code. Nothing is re-typed, so the budget cannot drift from the price you won. Changes after that go through variations, so the contract you won stays the contract you won.