BlogProject financial management

Job costing for contractors: from estimate to forecast profit

How to calculate job cost, from estimate and buyout to WIP, profit fade and forecast profit.

Guide8 min read

Job costing tells you what each job really costs and earns. Done well, it also tells you what a job will cost before it is finished – which is the only point at which you can still do something about it. This guide covers the method the way contractors actually use it: from estimate to budget, cost codes, labour burden, commitments, change orders, WIP and the profit fade that catches out even well-run firms. Every step is shown on one example job.

How to calculate job cost in five steps

  1. Set up cost codes for each job – materials, labour, subcontractors, plant and job overheads, broken down as far as you want to see variances.
  2. Turn the estimate into a budget per cost code, and adjust it as orders and subcontracts are placed (buyout) and changes are approved.
  3. Record actual cost per cost code: bills, materials from stock, and labour hours × a burdened labour rate – not the wage.
  4. Add committed cost: purchase orders and subcontracts that are agreed but not yet billed.
  5. Forecast the rest: actual + committed + still to buy or do = cost at completion. Compare it with revenue at completion (contract value plus approved changes) to get forecast profit.

The rest of this guide goes through each step in more detail, with the numbers.

What job costing is – and is not

Job costing assigns revenue and direct costs – materials, labour, subcontractors, plant and job-specific overheads – to each job, so you can see the margin per job rather than only for the business. It is the opposite of process costing, where costs are averaged over many identical units. For a contractor every job is different, so averages hide exactly what you need to see.

Job costing is not the same as the job report in your accounting system. That report shows booked costs. Job costing for control also needs what is committed and what is still to come.

From estimate to budget: buyout

The estimate wins the job. The budget runs it. Between the two comes buyout: placing orders and subcontracts. Every buyout either saves or loses money against the estimate, and that difference should go into the budget the day the order is placed – not when the invoice arrives. On a £560,000 HVAC fit-out we use as the example in this guide, the insulation subcontract was estimated at £39,000 and let at £43,700. The −£4,700 is a loss that is locked in from day one, even though nothing has been billed.

Cost codes that work

A cost code structure should be detailed enough to show where a job is going wrong, and short enough that site teams code invoices correctly. In the US many contractors borrow from CSI MasterFormat – Division 23 for HVAC, Division 26 for electrical – and break it down into their own codes. In the UK and Australia firms often use their own trade-based codes. What matters more than the standard is that the same codes are used on every job, so estimators can compare.

Cost codeOriginal budgetActual to dateCommittedStill to buy / doForecast
110Air handling units and fans£165,000£162,800£0£0£162,800
120Ductwork and fittings£118,000£80,000£30,000£21,000£131,000
130Dampers, grilles and fire dampers£60,300£37,000£21,500£4,300£62,800
450Insulation subcontract£39,000£15,600£28,100£0£43,700
490Preliminaries£18,000£12,600£0£6,700£19,300
510Installation labour£73,500£59,640£0£25,200£84,840
520Project management and engineering£15,080£12,180£0£4,640£16,820
530Commissioning and handover£6,720£0£0£6,720£6,720
Total£495,600£379,820£79,600£68,560£527,980

The four numbers per cost code

BudgetWhat the estimatesaid, adjusted forbuyout and changesCommittedOrdered orsubcontracted,not yet billedActualBilled andbooked, plusaccrualsForecastActual + committed+ still to buy/do= cost at completion
Figure 1. Four numbers per cost code. Most job cost reports show only the third.

Forecast = actual + committed + still to buy or do. The rule that makes it work: when a bill is booked against a purchase order, committed goes down by the same amount actual goes up. The total does not move. Without that rule, forecasts count purchases twice.

Commitments are not only POs. Subcontracts are commitments the day they are signed. Labour is not a commitment – it is a forecast of hours, which is why labour is where forecasts are most often wrong.

Labour: why the wage is not the cost

The cost of an hour of labour is the wage plus everything the employer pays on top, divided by the hours that can actually be charged to jobs. A UK example for 2026/27:

Amount
Base wage (£20.00/h × 39 h × 52)£40,560
Employer NIC 15% above £5,000£5,334
Pension 3% of qualifying earnings (£6,240–£50,270)£1,030
Annual employment cost£46,924
÷ 1,640 chargeable hours£28.61/h
÷ 1,450 chargeable hours£32.36/h

The example is simplified: it ignores the Employment Allowance, holiday pay accrual and overtime. The same fitter costs about £28 or £32 an hour depending on how many hours reach a job – before vans, tools, supervision and training, which most contractors add to reach a working rate (£42 in the example in this guide). In the US the components differ – FICA, unemployment insurance, workers’ compensation and benefits – but the method is the same. Get the chargeable hours wrong and every labour line in every estimate is wrong.

Change orders: approved, pending and unpriced

Changes are where margin is lost or recovered. Keep three lists per job: approved change orders (in the contract value and the budget), pending changes (claimed or notified but not agreed – not in the forecast) and unpriced changes (instructed, being worked, not yet claimed). On the example job, CO-03 is approved for £11,200; CO-04 for £14,000 is notified but not agreed. The forecast margin is 7.6% without CO-04 and 9.8% with it. Recording CO-04 only when it is agreed would hide both the risk and the effort to recover it.

WIP: over- and underbilling

Under the cost-to-cost method used in US GAAP (ASC 606) and IFRS 15, progress is measured as cost incurred divided by total estimated cost. On the example job that is £379,820 ÷ £527,980 = 71.9%. Applied to the contract value of £571,200, earned revenue is £410,912. Billed so far is £362,000, so the job is underbilled by £48,912.

Billed to date£362,000Earned (cost-to-cost)£410,912
Figure 2. The example job: billed versus earned. Underbilling means cost has been incurred on work that is not yet invoiced – whether the suppliers have been paid is a separate, cash-flow question.

Sureties read underbillings with suspicion: they can mean slow invoicing, unapproved changes, or a forecast that is too optimistic – which is how profit fade hides. Overbillings look better but are not profit; they are the customer’s money funding the rest of the job. One technical point: materials delivered but not yet installed can distort cost-to-cost, and the standards allow them to be taken out of the progress measure.

Profit fade: how 11.5% becomes 7.6%

£64,400Estimatemargin+£2,200110Air−£13,000120Ductwork−£2,500130Dampers,−£4,700450Insulation−£1,300490Preliminaries−£11,340510Installation−£1,740520Project+£11,200CO-03revenue£43,220ForecastmarginAxis starts at £20,000
Figure 3. From estimated margin of £64,400 to forecast margin of £43,220 on the example job.

Profit fade is the gradual erosion of gross profit over the life of a job. The usual causes are optimistic estimates, underestimated labour rates or productivity, changes that cannot be billed, weak subcontractors and thin supervision. The example job shows several at once. Installation labour is heading for 2,020 hours against 1,750 estimated – the biggest single loss. Ductwork is over even after its budget was raised for CO-03. The insulation subcontract was let above estimate. Preliminaries run longer because the programme slipped. The AHUs came in slightly under. Each item is small; together they take the margin from 11.5% to 7.6%.

The point of job costing is that every one of these was visible weeks before the last invoice: the subcontract on the day it was let, the labour trend from the first month’s timesheets.

The job cost sheet

A job cost sheet for control needs, per cost code: original budget, approved changes, current budget, actual, committed, still to buy or do, forecast and variance. Add a list of change orders by status and a WIP line at the bottom. That is all – but it has to be updated weekly, and someone has to move each bill from committed to actual.

Spreadsheet or software

A spreadsheet works for a handful of jobs with one owner. It breaks when commitments, bills and timesheets change every day in other systems. Accounting systems are built around posted transactions and show actuals well – and increasingly budgets too; QuickBooks Online Advanced in the US, for example, added construction budgets and WIP reporting in 2026. Purchase orders, on the other hand, are typically non-posting documents in small-business accounting systems, so they do not show as cost on the job until the bill is entered. Check what your own system and plan show before you build a spreadsheet around it.

What this looks like in ProfitTracker

Estimated costs aligned with the forecast

ProfitTracker is built around the four numbers in this guide. Each budget line shows Planned + Committed + Incurred = Forecast against the budget, for materials, subcontracts and labour. A purchase order counts as committed from the day it is approved or sent; when the supplier bill is booked in the accounting system and matched to the order, committed goes down and incurred goes up by the same amount.

Bills booked in the accounting system are brought in by the daily sync, and labour hours come from the accounting system or an Excel import, valued at a cost rate per hour. Remaining hours are the estimate minus hours booked – so the labour forecast is only as good as the estimate the project manager keeps up to date.

Cost code 120 · Ductwork
Current budgetIncluding CO-03£126,600
IncurredBills booked in the accounting system£80,000
CommittedOrdered, not billed yet£30,000
PlannedStill to buy, not ordered yet£21,000
= Forecast cost · variance −£4,400£131,000
Figure 4. Illustrative example: how incurred, committed and planned cost add up to the forecast on the ductwork line of the example job.

Want to see forecast cost per cost code on your own jobs?

Sources

  1. CLA – profit fade analysis
  2. NASBP / Old Republic – underbilling
  3. CFMA – WIP
  4. Baker Tilly – uninstalled materials
  5. Viewpoint – committed costs
  6. IRIS – employer NICs
  7. LITRG – auto-enrolment
  8. MasterFormat

See how ProfitTracker could work for your business.

Keep the accounting software you already use.