Skip to content
Guide

Job Costing: Did the Job Actually Make Money?

Estimates say what you intended; actuals say what happened. How to compare the two, why small overruns cost so much margin, and what to change afterwards.

7 min readBy Miguel Iglesias ValenzuelaReviewed and updated September 23, 2026

A quote is a prediction, and predictions are worth checking. Most trades businesses only ever see the bank balance, which mixes every job's outcome into one number: a great job can hide two bad ones, and a busy quarter can hide a year that made no money. Job costing is the habit of separating them — per job, four lines, one comparison.

Why a small overrun is a big deal

Here's the arithmetic that surprises people the first time they run it. A job is quoted at $4,000 with an estimated cost of $2,600, so it's priced to a 35% margin. It actually costs $3,050 — an extra day and a second parts trip.

One job, planned versus actual (illustrative)
LinePlannedActual
Contract price$4,000.00$4,000.00
Job cost$2,600.00$3,050.00
Gross profit$1,400.00$950.00
Gross margin35.0%23.75%
Cost variance+$450.00 (+17.3%)
Profit variance−$450.00 (−32.1%)

The cost rose 17.3% and the profit fell 32.1%, because the overrun is measured against a much bigger base than the profit is. That's the whole reason to check: on paper this job 'went a bit over'. In the accounts it handed back a third of its profit. Holding the planned 35% margin on the real cost would have needed a price of $4,692.31.

The four lines to compare

  • Labor: hours actually spent (including travel, pickup runs and cleanup) at the burdened rate you used in the estimate. An hour of unbilled overtime is still a cost.
  • Materials: supplier invoices, not the numbers from the quote — including waste, delivery fees and the small consumables nobody writes down.
  • Subcontractors and other direct costs: what the sub actually invoiced, plus disposal, permits and equipment rental.
  • Overhead: did the job's gross profit cover its share of the business's fixed costs, or did it only look profitable because overhead lives somewhere else?

Where to look when a job overruns

Work through the estimate line by line and ask what you assumed. This is a checklist of the inputs worth testing against your own numbers — not a finding about your business:

  • The hour count. Estimates built from a best-case day are optimistic by construction; if the crew took 22 hours where you wrote 16, the estimate didn't have a cost problem, it had an hours problem.
  • Waste and consumables. Under-counting waste on tile, siding, paint or wire is a quiet percentage loss on the material line.
  • Trips. Extra journeys for forgotten parts rarely appear in any line — they hide inside labor.
  • Rework. Any return visit for free work erases the margin on the original job, and it belongs in its own column so you can see how much you're doing.
  • Scope that grew verbally. If the customer asked for extra work mid-job and it wasn't written up, the estimate wasn't wrong — the process was.
  • Price held while costs moved. Long-dated jobs quoted without an expiry date absorb material price increases as a margin cut.

One-offs versus a pattern

A single miss can be luck: a hidden rotten frame, a supplier shortage, a week of rain. Three similar jobs all missing by the same kind of amount is not luck, it's an input that's wrong in your standard estimate — and it will keep costing you on every job until the input changes. That distinction is why the results are worth keeping rather than just reading once. Track the same job type until you can see a range instead of a guess.

What you change afterwards should match the diagnosis. If the hours were undercounted, adjust the hours for that job type. If waste was undercounted, adjust the waste percentage. If trips were the culprit, add a trip line. Adding a blanket cushion to every quote is the least informative option, because it hides which input was wrong and prices your good estimates out of the market.

Compare a finished job with its estimate in the job profitability calculator →

Time-and-materials jobs need the same check

On time-and-materials work the overrun lands on the customer, so the immediate cost is theirs rather than yours — which is exactly why the estimating lesson gets skipped. Keep comparing anyway: if you know that a job type takes 22 hours on average, your flat quotes for it stop being guesses, and clients get a number instead of an open meter. That's the bridge between hourly and flat-rate pricing, and it's built out of job costing records.

Frequently asked questions

What is job costing?

Job costing is recording what each job actually cost and comparing it with what you estimated. On a finished job that means four lines: labor at the burdened rate for the hours actually spent, materials at invoice including waste and delivery, subcontractor and other direct costs, and whether the job's gross profit covered its share of overhead. The comparison is the point — a cost number on its own tells you nothing about whether your estimate was right.

Why did a 17% cost overrun cost me a third of my profit?

Because costs come out of profit, and profit is the smallest number in the job. On a $4,000 job estimated at $2,600 of cost, the planned margin is 35%. If it actually costs $3,050, the margin falls to 23.75%: costs rose 17.3%, but profit fell 32.1%. The smaller your margin, the harder the same overrun lands — on a 15% margin job, that overrun would wipe out most of the profit entirely.

How do I make this a habit instead of a one-off?

Attach it to something you already do. A workable version: when you invoice a job, copy four numbers onto one line of a spreadsheet — price, estimated cost, actual cost and actual hours. The comparison happens for you, and after ten jobs of a type you have a range for that work instead of a single optimistic guess. Businesses that try to do full line-item job costing on every job usually stop within a month; the four-number version survives because it takes about two minutes.

My job came in under the estimate — is that just extra profit?

Check first whether the work is finished and paid for. Two things fake a good result: unpaid hours (yours or a crew member's, never entered) and costs that appear later — a warranty callback, a material invoice that arrives next month, a punch list you haven't returned for. If those are clean, genuinely coming in under budget is a real result worth understanding, because it may mean your estimates are systematically padded.

Tools for this

Ready to run the numbers?

Open the Job Profitability Calculator and apply this guide with your own figures.

Open the Job Profitability Calculator →

Keep reading