Job costing for contractors: how to know which jobs actually make you money
Two contractors can run identical-looking years — same revenue, same crew, same number of jobs — and end up in completely different places. The difference is almost never the work. It's that one of them knows which jobs made money and which ones quietly ate the profit, and the other is running on gut feel.
That knowledge has a name: job costing. It's the unglamorous habit of tracking every dollar a job costs against every dollar it brought in, so 'I think that one went okay' becomes a number you can actually trust. Here's how it works for contractors — and how to do it without turning your evenings into bookkeeping.
What job costing actually is — and why gut feel lies
Job costing is simple to define and easy to skip: you track the true cost of a specific job — labor, materials, subs, the lot — against the revenue that job earned, and the gap is your real profit on it. Do it across every job and a pattern shows up fast. The kitchen remodels carry you; the small 'quick favor' jobs lose money every time; one repeat client turns out to be worth three of the others.
Gut feel can't see any of that, because the jobs that feel profitable and the jobs that are profitable aren't the same list. A busy job with a big invoice can hide a labor overrun that wiped out the margin. A quiet little job can be your best hourly rate of the year. Without the numbers, you're pricing the next job off a feeling about the last one — and feelings don't carry overhead.
The four buckets every job cost falls into
Before you can track costs, you have to agree on what counts as one. Almost everything a job consumes drops into one of four buckets — and the jobs that surprise you are usually the ones where a bucket got undercounted.
- Labor — usually the biggest line and the most undercounted. Track the burdened cost, not just the hourly wage: payroll taxes, workers' comp, and benefits are part of what that hour really costs you.
- Materials — what went into the job, including the waste, the second trip to the supplier, and the small stuff that never makes the estimate but always makes the receipt pile.
- Subcontractors — the electrician, the sub's invoice, anything you paid someone else to do. Tag it to the job before you pay it, or it disappears into 'general expenses' and the job looks better than it was.
- Overhead — the cost of being in business at all: truck, fuel, insurance, phone, the hours you spend quoting and chasing payment. It isn't tied to one job, but every job has to help carry it, or your margin is fiction.
Estimate it, then check what really happened
Job costing isn't only a look back — it starts the moment you price the work. A good estimate is really a budget: this much labor, these materials, this much for the sub, with a margin on top. Build it from real quantities instead of a round number — measure the space once in the Takeoff Builder and the dimensions drive the line items — and you've set the bar the finished job will be measured against.
The payoff comes when the job wraps and you put your estimate next to what it actually cost. Where did the labor run over? Which material did you under-price? That comparison is the most useful fifteen minutes in contracting, because it doesn't just grade the job you finished — it prices the next one. Bid the next kitchen off what the last kitchen really cost, not what you hoped it would.
The hard part isn't the math — it's capturing the costs
Here's where most job costing falls apart: the numbers are right, but they're incomplete. The receipt's in the truck console, the sub's invoice is buried in an email, the extra two hours on Thursday never got written down. Add it all up weeks later and the job looks more profitable than it was, because half its costs never made it onto the record.
The fix is to capture costs where and when they happen, on the job they belong to. Crews log their hours and snap receipts from their phone through the contractor portal, so labor and materials land on the right project the day they're spent — not reconstructed from memory on Sunday night. Vendor bills, mileage, and the rest of the back-office expenses attach to the job too, instead of pooling in one undated heap.
Capture at the source and job costing stops being a monthly archaeology dig. The costs are already where they need to be by the time you go looking.
Job costing only pays off if it isn't a second job
The reason most contractors don't job-cost isn't that they miss the value — it's that doing it by hand means exporting from one app, retyping into a spreadsheet, and hunting down what's missing. That's a second job, and it's the one that always gets skipped after a full day on site.
It gets easy when the estimate, the costs, and the invoice all live on the same job record instead of in five places. The plan, what you spent, and what you billed are already side by side, so profit per job is something you can see rather than assemble. Turn on the optional accounting add-on and those same records post into real double-entry reports — no separate set of books to keep in sync.
That's the whole idea behind business management software for contractors: not another dashboard to feed, but one record where the work, the costs, and the money already meet. See the estimating side of it in construction estimating software, or how the same record runs a whole shop in contractor CRM software.