BuildAssistBuildAssist
Resources / Operations

Job Costing for Small Contractors: A Plain-English Guide

What to track, how often, and the simplest way to see whether a job actually made money. 8 min read.

Revenue is not profit, and the bank balance is not job costing

A job can feel profitable while it's running because deposits are coming in and crews are busy. The problem shows up later: labor ran long, material purchases landed in different accounts, a subcontractor invoice arrived after closeout, and the final margin is suddenly much smaller than the estimate. Job costing solves one basic question: what did this specific job actually cost compared with what we expected it to cost? Small contractors don't need hundreds of cost codes to start — they need consistent project IDs, a small set of useful categories, timely entry, and a weekly habit of reviewing estimate versus actual.

Every cost needs a job and a bucket

If a purchase, labor hour, subcontractor invoice, rental, or permit belongs to a project, it should be coded to that project. A practical starter structure: labor, materials, subcontractors, equipment/rentals, permits/direct fees, and other direct costs.

Don't over-code on day one. A cost code is only useful if someone codes it consistently and management actually uses the information. Start broad, then add detail where repeated variance shows you need it.

Labor is where visibility disappears first

Material receipts are visible. Labor drift can hide inside the schedule — if a two-person crew needs three extra days, the job can lose margin without a single surprising invoice. Track three numbers: estimated hours, actual hours (recorded to the correct job and phase), and loaded labor cost using what your business actually bears, not just the wage. The weekly question worth asking: where are actual labor hours running ahead of percent complete? That's an early warning you can still act on.

Don't wait for invoices to know what a job has already spent

A subcontract may be approved today and invoiced next month. If your report only includes paid invoices, the project can look healthier than it really is. Track three views: actual cost (already posted), committed cost (approved purchase orders or subcontracts not yet fully invoiced), and forecast cost at completion. Profit fades quietly when known future costs are missing from the job report — a useful report looks forward, not only backward.

Review six lines every week

Job costing only works if the numbers are reviewed while the job can still change. Waiting until closeout turns job costing into history.

  1. Contract value — current approved revenue, including approved changes.
  2. Estimated cost — original or current budget by cost bucket.
  3. Actual cost to date — posted labor, material, subcontract, and direct cost.
  4. Committed cost — known costs not yet fully posted.
  5. Forecast to complete — what the team believes remains to finish the work.
  6. Forecast margin — expected final revenue minus expected final cost.

When a cost bucket is off, ask for one sentence: what happened, whether it's recoverable, and what action is needed. The commentary is often as valuable as the number.

Unpriced changes can destroy otherwise good data

A field change increases cost immediately. Revenue may not increase until it's documented, priced, approved, and billed — if cost moves but contract value doesn't, margin reports become misleading. Use one clear status for every change: potential, priced, approved, billed, collected. No verbal change should disappear into the job.

Closeout is where your estimating system gets smarter

The value of job costing compounds when completed jobs improve the next estimate: compare estimated versus actual by bucket, identify the largest variances, separate estimating misses from production issues, and update assemblies or pricing where the evidence is strong. Create feedback, not blame — if every overrun becomes a search for who made a mistake, people will hide problems until it's too late to use the information.

The bottom line

Job costing isn't accounting for accounting's sake — it's a feedback system for estimating, purchasing, production, and pricing. Start with a few clean cost buckets, code costs promptly, review them weekly, and make each completed job teach the next one.

Want visibility into real job margins?

We'll help you set up a lightweight job-costing system your team will actually use.