Most builders find out a job lost money when the final invoice lands. By then it's history. Job costing is how you know where a project stands while you can still do something about it — and it comes down to three numbers most software gets wrong.
What construction job costing actually is
Job costing is tracking every dollar against the job that caused it, rather than against the month it landed in. Your bookkeeping tells you the business spent forty thousand dollars on lumber in March. Job costing tells you which jobs that lumber went into, and whether each one is still inside the number you quoted.
That is the whole distinction, and it is why a profitable-looking year can contain jobs that lost money. Revenue and expenses netted off across every project hide the one that went wrong. Costed per job, it has nowhere to hide.
Budget, committed, and actual — know the difference
Your budget is what you quoted. Committed cost is money you've obligated but not yet paid — the purchase orders you've issued to suppliers and subs. Actual (billed) cost is what approved vendor bills have added. Remaining budget is what's left after actual cost. If your software only shows budget and a made-up "spent" figure, you're flying blind on the two numbers that predict trouble.
- Budget — the number you contracted to build for
- Committed — open purchase orders not yet billed
- Actual — approved vendor bills, your real cost to date
- Remaining — budget minus actual
What it looks like in dollars
Take a bathroom renovation part-way through. Four cost codes, a budget set at quote time, purchase orders signed with the trades, and supplier bills arriving as work completes.
- Drywall — budget $4,000, committed $4,200, invoiced so far $2,100
- Plumbing — budget $8,000, committed $8,000, invoiced $8,000
- Tile — budget $6,000, committed $7,400, invoiced $0
- Electrical — budget $5,000, committed $4,800, invoiced $4,800
Read only the invoices and this job looks comfortable: $14,900 spent against a $23,000 budget, about 65% of the money for work that is most of the way done. Read the committed column and the picture changes. You have signed for $24,400 — already $1,400 over budget, and the tile invoice has not arrived yet.
Nothing has gone wrong that anyone could see in a bank balance or a bookkeeping report. The tile PO went out $1,400 high and the drywall PO $200 high; electrical came in $200 under, which is what nets the overage to $1,400. All three were signed weeks before a single invoice would have shown it. Read the total alone and the underage quietly hides part of the overage — which is why the variance is worth reading per cost code, not just at the bottom. This is the gap committed cost exists to close, and the reason a spreadsheet that only records paid bills tells you about a margin problem after it has already happened.
Tie purchase orders and bills to the job
Committed cost is invisible without purchase orders. Issue a PO to a supplier against a specific job, and that job's committed cost updates immediately — so a $30,000 material order is on the budget before it's billed, not after. When the vendor bill arrives, match it to the PO and approve it, and it becomes actual cost that reduces remaining budget in real time.
Protect margin with change orders
Scope creep is where residential margin dies. Every verbal "sure, we can do that" is money given away unless it becomes a priced, approved change order that updates the contract and the budget. Job costing only tells the truth if every change flows into it.
How BuildersBridge helps
BuildersBridge shows every active job as one live row: budget, committed cost from open POs, actual cost from approved bills, and remaining. Approve a vendor bill and the remaining-budget figure moves the same second. Purchase orders, vendor bills, and approved change orders all roll into the number automatically, so you know a job's margin throughout the build — not at the end of it.