Job Costing for Contractors: Why Your Software Still Can't Tell You If a Job Made Money
Job costing for contractors only works if the data behind it is real. See why built-in job costing fails and what an automated system actually needs.
A general contractor showed us his "profitable jobs" report from ServiceTitan last month. Every job on the list was green. Then his bookkeeper closed the books for the quarter and the real number came in almost eight points lower than what the software had been telling him all year. Nothing was broken. The software just didn't know what it didn't know, because nobody had fed it the full cost of the labor doing the work.
That gap is more common than most owners want to admit. Job costing for contractors is supposed to answer one question: did this job make money? Most platforms on the market today, Jobber, ServiceTitan, QuickBooks, all claim to answer it. What they actually do is show you whatever numbers got typed in, which is a very different thing from tracking what happened on the job site.
The Margin You Think You Have vs. the One You Actually Have
Ask a contractor what their margin is and you'll usually get a confident answer somewhere in the 35 to 40% range. Pull the actual numbers, the fully burdened labor, the materials that got misposted, the change order that never made it into the estimate, and the real figure is closer to 15 to 22%. That's not a rounding error. That's the difference between a healthy business and one that's quietly losing money on half its jobs without knowing it.
The data backs this up in a way that should worry more owners than it does. Roughly 63% of contractors can't accurately state their profit margin on a completed job, because they don't have a systematic way to track it. Untracked expenses, fuel, materials, subcontractor costs, tool rentals, quietly eat 15 to 25% of margin on the average job. And for general contractors specifically, margins already sit at 1.4 to 2.4%, which means a 3% miscalculation on a single project doesn't just hurt. It wipes the job out entirely.
None of this is because contractors are careless. It's because job costing for contractors was never designed to catch what happens between the estimate and the invoice. It was designed to store numbers, not verify them.
Why Job Cost Tracking Fails Inside the Software You Already Own
We hear a version of the same sentence from almost every contractor we talk to: "we already have job costing, it's built into our software." That's true, and it's also the problem. Built-in job costing is a container. It holds whatever gets put into it. It doesn't check whether the number is real, current, or complete. Here are the five places we see that break down most often.
- Labor burden isn't allocated. Most estimates and most actuals only account for base wages. Payroll taxes, benefits, and workers' comp typically add another 25 to 35% on top of that, and it's the single most commonly missed cost in the entire estimate.
- Field-to-office disconnect. Technicians log their time in the evening, or once a week during payroll, instead of in real time. Every hour between the work happening and the entry getting made is an hour where the actual cost drifts further from what the software believes it is.
- Material costs land on the wrong job. A supplier invoice gets coded to the wrong job number, a receipt never gets entered at all, or a job code gets fat-fingered in the field. The software has no way to know the number is wrong. It just records it.
- Nobody runs the comparison until billing. The actual-vs-estimated view exists in almost every platform on this list. It's usually just never opened until the invoice goes out, which is exactly the point where it's too late to fix anything.
- Change orders get approved without touching the budget baseline. The scope changed, the price was fair, but the original budget number never moved. Now every job with a change order looks like it ran over, even the ones that didn't.
None of these are software failures in the way people mean when they say "our system is broken." The system works exactly as designed. It's a ledger, not a monitor. Automated job costing is the difference between those two things.
What Real-Time Job Cost Tracking Actually Requires
Fixing this isn't a matter of using the software harder. It requires a different workflow underneath the software you already have, one where the numbers arrive automatically instead of getting typed in after the fact.
| Cost Component | What Native Software Does | What Automated Job Costing Adds |
|---|---|---|
| Labor burden | Tracks base wage only | Auto-applies burden rate (taxes, benefits, workers' comp) to every logged hour |
| Field time capture | Relies on end-of-day or end-of-week manual entry | Syncs from time-tracking hardware or app in real time |
| Material costs | Depends on manual coding of invoices and receipts | Routes supplier invoices to the correct job automatically via integration |
| Actual vs. estimate | Available, but rarely checked until billing | Flags variance automatically at set thresholds, mid-project |
| Change orders | Tracked as a separate line item | Updates the budget baseline the moment a change order is approved |
Contractors who track actual versus estimated costs in real time, instead of waiting for project completion, report 15 to 25% better margins. Real-time visibility flags a variance within hours. A monthly reconciliation surfaces the same overrun weeks after the money is already spent and there's nothing left to do about it but note it for next time.
"But We Already Handle This." Three Objections We Hear Constantly
"We use QuickBooks for job costing." QuickBooks job costing is manual. It reports exactly what someone typed in, not what actually happened on the job. If the field data feeding it is late or wrong, the report is late or wrong too, just with more decimal places.
"Our foremen track this on paper." Paper tracking runs 48 to 72 hours behind the actual work, and industry estimates put the transcription error rate at 20 to 30% once it's re-entered into a system. By the time the number lands in your software, the job it describes is already finished.
"We do a job review after every project." Post-project reviews are useful for the next bid. They don't help the job you're reviewing, because you're looking at it after the money's already spent. Catching an overrun at the 60% completion mark, while there's still time to adjust labor or scope, is a completely different exercise than diagnosing it in the rearview mirror.
Check Your Own Numbers Before You Assume You're Fine
Most owners haven't run this test, and it takes less time than you'd think. Pull your three most recent completed jobs and ask four questions about each one.
- Does the labor cost on the closed job include payroll taxes, benefits, and workers' comp, or just the hourly rate?
- Were the actual hours logged in real time, or reconstructed later from memory and timesheets?
- Did every material invoice for that job land on the correct job code, or did you have to go hunting for a few of them?
- If there was a change order, did the original budget number ever get updated, or is the job still being measured against the price you quoted before the scope changed?
If you answered "just the hourly rate," "reconstructed later," or "had to go hunting" to any of those, the margin your software is showing you for that job isn't the real one. That's not a criticism of how the business is run. It's just what happens when job costing depends on someone remembering to do a dozen small things correctly, every single day, on every job.
What This Actually Costs to Fix
We're not going to pretend this is a $99-a-month plugin. Automating job costing usually means connecting the systems you already use, time tracking, accounting, project management, so the data flows without someone re-typing it. Depending on how many systems need to talk to each other and how much custom logic your estimating process requires, that typically lands somewhere between $8,000 and $45,000, similar to the range we see across most workflow automation builds. Simple burden-rate automation and time-sync projects sit at the low end. Full margin-by-job reporting across multiple systems, with variance alerts built in, sits at the top.
Compare that to the cost of not knowing. A contractor running even $2 million a year in revenue, losing 15% of margin to untracked costs, is leaving well over $100,000 on the table annually. The automation pays for itself inside the first two or three jobs it catches.
We've built exactly this kind of system for field service and construction clients, and the pattern holds every time: the software isn't the problem. The data discipline behind it is. Fix that, and the job costing you already have starts telling you the truth.
If you want a clear look at where your own numbers are leaking, that's the first conversation worth having. We do this kind of workflow automation build regularly, alongside broader custom software projects for contractors who've outgrown what their off-the-shelf tools can track. You can see the kind of results this produces in our Grit Construction case study, or read more about how we approach workflow automation for field service and construction teams. If your job costing numbers don't add up, let's talk about what's actually happening in the field.
