How-to Guide

How to Run Job Costing on a Construction Project: A Step-by-Step Guide for General Contractors

Intermediate12 min readZigaflow16 May 2026

What you will learn

  • How to structure cost categories so every pound spent on a job is tracked against a budget line, not lost in a general ledger.
  • The steps to lock in a cost budget from the estimate at the point a contract is signed, before work starts.
  • How to track materials costs using purchase orders and delivery notes rather than relying on month-end supplier invoices.
  • Why variation orders must be fully priced and approved in writing before any additional work begins.
  • The four-point close-out check that confirms your actual margin before the final invoice is raised.
  • How historical job data from completed projects improves estimate accuracy on future work.

General contractors average 5-6% net profit per project. This step-by-step guide shows how to track labour, materials, sub-contractors, and variations in real time - so you know your margin position before the final invoice goes out.

Construction is one of the tightest-margin industries in business. General contractors average 5-6% net profit on completed projects, and top performers reach 10-12% by running precise financial controls throughout every job - not just at the end. The difference between those two outcomes almost always comes down to job costing discipline. This guide explains how to build a job costing process that tracks labour, materials, sub-contractors, and variations in real time, so you know your margin position before you send the final invoice.

Why Job Costing Matters When Margins Are Tight

A 5-6% net margin leaves almost no room for untracked costs. On a £200,000 contract, a 5% margin gives you £10,000 profit. A single uncosted variation worth £4,000 in labour and materials cuts that in half. Two or three of those happening on the same job and you are completing a six-figure project for very little return.

The root problem is rarely that contractors under-price their work - it is that costs accumulate during the job and never get matched back to the revenue that should cover them. Labour runs over by a few days, materials get ordered without a purchase order, a sub-contractor invoices for extra days that were not formally agreed. Each of these is individually manageable, but without a system that captures them in real time, they only become visible when the final invoice is being raised - at which point it is too late to recover.

Contractors who track actual costs against estimates throughout a project achieve 15-25% better margins than those who rely on end-of-project reconciliation, according to 2026 industry data. The process below is how they do it.

The Four Cost Categories Every Contractor Must Track

Before setting up job costing for any project, establish these four categories as the framework for every cost that enters the job record.

Labour. Direct labour hours spent on site, including your own operatives and any employed staff. Track hours daily by operative, not weekly or by estimate phase. Labour is typically 20-40% of total project cost and the category most prone to quiet overrun - jobs that run two or three days longer than planned rarely trigger a change order conversation but consistently erode margin.

Materials. Every item ordered specifically for the job, from structural materials to fixings. Materials run at 30-40% of total project cost. The key discipline here is that every materials purchase must be linked to a purchase order raised before the goods are ordered, not after delivery.

Sub-contractors. Payments to specialist trades and labour-only sub-contractors. Sub-contractor costs typically represent 15-25% of project value on general contracting work. Every instruction to a sub-contractor should reference a written scope and agreed price - even on long-standing relationships.

Overheads and equipment. Plant hire, scaffolding, skip hire, fuel, and a proportion of your business overhead allocated to the job. Many contractors exclude these or estimate them loosely. Top performers target overhead at 8-12% of revenue and allocate it systematically across jobs rather than treating it as a fixed cost.

Step 1: Set Up the Job Cost Budget Before Work Starts

The job costing process begins the moment a contract is signed, not when the first invoice arrives. Setting up your budget at this stage takes 30-60 minutes and creates the baseline against which every subsequent cost is measured.

  1. Pull the accepted quote or estimate and convert each line into a budget entry against one of your four cost categories. If your estimate has 15 materials lines, enter them as 15 budget lines with individual amounts - not a single "materials" total. Granularity at this stage is what allows early warning during the job.
  2. Assign a job number. Use a consistent format - year followed by sequential number works well (for example, 2601 for your first job of 2026). This number goes on every purchase order, delivery note, and sub-contractor instruction raised against the job.
  3. Identify your planned invoicing milestones now. If the contract includes stage payments - for example, 30% on commencement, 40% on first fix completion, 30% on practical completion - record these dates and trigger amounts in the job record. You cannot chase stage payments you have not formally planned.
  4. Note any retention clauses. If the contract holds 5% until the end of a defects liability period, record the retention amount and the date it falls due. Set a calendar reminder or a task in your job management system for the retention chase - 5% of a large contract is worth pursuing.
  5. Create a works order for each phase of work that will be instructed internally - groundworks, first fix, second fix, and so on. Works orders are how you authorise your team to begin work and how you accumulate internal labour costs against the correct budget line.

Lock the estimate before job start

Once a contract is signed, lock the original estimate so it cannot be edited. Any scope or budget changes should be recorded as separate variation entries. This preserves the baseline for your final estimated-versus-actual comparison.

Step 2: Track Costs as Work Progresses

Active cost tracking requires a different discipline from estimating. The goal is to capture every cost at the point it is committed - when a PO is raised, when a sub-contractor is instructed, when labour hours are logged - not when the invoice arrives weeks later.

  1. Raise a purchase order for every materials order before the order is placed. The PO should state the job number, the supplier, the expected cost, and the expected delivery date. Ordering without a PO is what creates the gap between estimated and actual materials cost.
  2. When materials arrive on site, check the delivery note against the PO. Flag any short deliveries, substitutions, or items delivered but not ordered. Delivery note discrepancies that are not recorded at time of delivery become disputes later - or costs that simply disappear into the job.
  3. Log labour daily. Whether you use a site diary, a daily timesheet, or a field eForms app, the record should show operative name, task worked on, and hours. Week-by-week labour tracking is too coarse to catch overruns before they compound.
  4. When instructing sub-contractors, issue a written instruction that states the scope, agreed rate or fixed price, and expected programme dates. If the sub-contractor's actual costs will be confirmed by invoice later, log the committed cost against the job immediately so it shows in your live cost position.
  5. At least weekly, review the live cost-to-date against the budget. If any category is running at more than 70% of budget with more than 30% of the work remaining, raise it now - not at practical completion. Early visibility is what makes recovery possible.

Verbal instructions to sub-contractors

A common source of margin loss is unpriced extras performed by sub-contractors on verbal instruction. The sub-contractor invoices at the end of the job for work that was never costed or included in their agreed price. All instructions beyond the original scope must be in writing and priced before work begins.

Step 3: Price and Record Variations Before Any Extra Work Starts

Variation orders deserve their own step in this process because they are where the most common and most expensive job costing failures occur. Every scope change - however small - must go through the same sequence.

  1. When a change is requested, log it immediately as a variation record against the job. Note the date the instruction was received, who gave it, and a brief description of the change.
  2. Price the variation fully before agreeing to proceed. Include labour at your fully burdened hourly rate (not bare time), any additional materials, sub-contractor costs, and an overhead allocation. Factor in time impact - if the variation delays another part of the programme, that delay cost belongs in the variation price.
  3. Issue the variation order in writing to the customer or main contractor, stating the agreed additional cost and any programme impact. Do not begin additional work until you have written acceptance.
  4. Once approved, update the job cost budget with the variation revenue and any new cost entries. The variation should be visible as a separate line in both the budget and the actual costs - not absorbed into existing lines where it becomes invisible.
  5. Confirm that the variation is included in your invoicing schedule. If you are at a stage payment point, the variation should be invoiced as a separate line. If the main contract invoicing is not at a natural stage, agree a separate payment timing for the variation at the point of approval.

Time impact variations

Programme disruption caused by a customer-requested change is a legitimate recoverable cost in most standard construction contracts. Calculate the daily cost of having operatives on site unable to complete planned work, and include this in the variation price. Many contractors absorb these costs without realising they are recoverable.

Step 4: Close Out the Job Before Raising the Final Invoice

The close-out stage is the last point at which you can protect your margin before the invoice is raised. This four-point check should happen before the final invoice is drafted.

  1. Reconcile all supplier invoices against purchase orders and delivery notes. Every supplier invoice should match a PO and a delivery note. Flag any invoices without a matching PO and investigate before paying - these are costs that may not have been budgeted.
  2. Confirm all variation revenue is captured. Check the variations log against the main contract amount on the invoice. If a variation was agreed and performed but is not in the draft invoice, add it now. Post-invoice recovery of agreed extras is significantly harder than including them in the final bill.
  3. Review the labour record for the full job duration. Confirm total hours are consistent with the estimate plus any approved variations. If hours are materially higher, identify which phase overran and document the reason - this is the data that improves your estimating on the next similar job.
  4. Check retention status. If you are raising the final invoice following practical completion, confirm the defects liability period start date and the retention release date. Set a calendar reminder or a task in your job management system for the retention chase - 5% of a large contract is worth pursuing.

Common Job Costing Failures and How to Avoid Them

Even with a structured process, the same failure modes appear repeatedly across general contracting businesses.

Costing at job end instead of in real time

Waiting until the job is finished to reconcile costs means every problem is discovered after the opportunity to correct it has passed. Labour overruns, unmatched supplier invoices, and unpriced variations are all recoverable if caught during the job. Discovered after practical completion, they simply reduce your margin.

Single materials budget line

Grouping all materials into one budget entry makes it impossible to see which materials are running over until the total is already significantly beyond budget. Set individual budget lines for materials categories - structural, first fix, second fix, finishes - that mirror how you estimated them.

Use historical job data to improve future estimates

Every job close-out produces an estimated-versus-actual report. Keep these records organised by job type and size. After six to twelve months you will have reliable actual cost data for labour hours per phase, materials usage per square metre, and sub-contractor rates - which means your next estimate of a similar job will be significantly more accurate.

Running Job Costing in Zigaflow

Zigaflow's job management module connects quotes, works orders, purchase orders, delivery notes, and invoices in a single job record, so cost data accumulates against the job automatically as work progresses rather than requiring manual consolidation at the end. Purchase orders link to the original quote lines and to delivery notes for three-way matching. Works orders track internal labour instructions. The accounting sync to Xero, QuickBooks, and FreeAgent means your job cost data flows into your accounts without double entry.

For contractors running multiple active jobs, the job list view shows live cost positions across all projects - so you can see at a glance which jobs are tracking on budget and which need attention before the situation becomes difficult to recover.

If you would like to see how job costing works in practice, the Zigaflow demo walks through the full job lifecycle from quote to final invoice.

Accurate job costing does not require expensive software or dedicated finance staff. It requires a structured process applied consistently: budget before work starts, track costs as they arise, price every variation in writing, and reconcile before invoicing. General contractors who build these habits into every job are the ones converting thin margin estimates into actual profit at the end of the year. The four-step process in this guide gives you the framework to start.

See it in Zigaflow

Invoices
See it in action

Ready to put these ideas
into practice?

Book a free demo and see how Zigaflow fits your team.

Book a free demoView pricing