Ask most contractors what margin they made on their last job and they'll give you a number fast. Ask them how they got it, and the answer is usually some version of "the invoice minus what I remember spending." That number feels precise. It usually isn't.
The gap between what contractors think they made and what they actually made is rarely small. Run the real numbers on jobs where the owner was confident about the margin, and it's common to find the estimate was off by 10 to 20 percentage points — not because anyone was careless, but because a few costs never made it into the mental math in the first place.
Why the guess is usually wrong
Margin guesses go wrong in the same handful of places, over and over. None of them are exotic. All of them are easy to miss if you're estimating margin from memory instead of from tracked costs.
1. Labor burden isn't included
Most owners cost out labor at the crew's hourly wage. But the wage isn't what labor actually costs the business — payroll taxes, workers' comp, and any benefits typically add 25% to 40% on top. A crew member paid $28/hour can easily cost the business closer to $38–$40/hour once burden is included. Estimate a job's labor at the wage instead of the fully-loaded rate, and every labor-heavy job overstates margin before anything else goes wrong.
2. Overhead never gets allocated to the job
Insurance, the office, vehicles, the admin hours spent on scheduling and invoicing — these costs exist whether or not a specific job is running, so they're easy to leave out of a per-job margin calculation entirely. They're real costs of doing that job, they just don't show up on a single receipt. Spread across the year's revenue, overhead is often 8–15% of a typical job's value — money that's already gone before materials and labor are even counted.
3. Change orders get done, then forgotten
A customer asks for one more outlet, a slightly different fixture, an extra day of cleanup. It's a small ask, so it doesn't get written up or billed — it just gets done. Individually these are minor. Across a year of jobs, unbilled scope creep is one of the most consistent, least-visible drains on margin, because it never shows up as a cost or a loss. It just quietly disappears from the number that should have been there.
4. Revenue gets compared to the wrong cost number
The simplest error is also the most common: comparing what was invoiced to what was estimated, instead of to what was actually spent. Those are three different numbers, and only one of them — invoiced revenue minus actual cost — is the real margin. A job can be invoiced exactly as quoted and still lose money, if the estimate itself was too optimistic about cost.
A worked example
Take a $48,000 job. At bid time, the estimate looked like this: $12,000 labor, $18,000 materials, $6,000 subcontractors — $36,000 in direct cost, for an estimated 25% margin.
Now add what actually happened. Labor burden (payroll taxes and workers' comp, at roughly 30%) pushes labor from $12,000 to $15,600. Two material receipts got miscoded to the wrong job and never made it into this project's cost, understating materials by $1,400. A $2,000 change order — extra trim work the customer asked for mid-job — got done and never invoiced. And a reasonable overhead allocation for a job this size, spread across insurance, vehicles, and office time, adds another $2,200.
Actual cost: $15,600 + $19,400 + $6,000 + $2,200 = $43,200. Actual margin: ($48,000 − $43,200) ÷ $48,000 — about 10%. The job that looked like a 25% win at bid time closed at 10%. Nothing on this job went catastrophically wrong. The margin just got quietly eaten by four ordinary, common oversights — the same four almost every contractor is exposed to on almost every job.
What a 15-point gap costs you over a year
One job, one miscalculated margin, isn't the real problem. The real problem is what happens when every job runs the same gap and nobody notices, because each individual job still felt profitable enough. A contractor running $1.2M a year in revenue, believing they're clearing 25% but actually clearing 10%, is off by roughly $180,000 — not lost money exactly, but money they thought they had and didn't, which shapes every decision that follows: what to bid on next, whether to hire, what the business can actually afford.
It also compounds forward. Bids for the next round of jobs get built on the same optimistic cost assumptions that were wrong this time, so the gap doesn't correct itself — it repeats.
How to know your real number
Fixing this isn't about estimating more carefully. It's about comparing the estimate to what actually happened, on every job, while there's still time to act on the difference.
- Cost labor at the fully-loaded rate, not the wage, on every timesheet entry that gets tied to a job.
- Allocate a standard overhead percentage to every job's cost, even a rough one, rather than leaving it out entirely.
- Write up and bill every change order, even the small ones — or at minimum, log the extra cost so it shows up against the job even if you choose not to bill it.
- Check margin against actual cost, mid-job — not against the estimate, and not only after the final invoice goes out.
This is exactly the gap job cost tracking software is built to close. Instead of a margin percentage you calculate from memory once the job is done, project profit and loss updates as labor, materials, and subcontractor costs come in — and a plain-English Profit Health rating (Very High down to Unhealthy) tells you where a job stands while it's still running, not just at closeout.
The number that actually matters
Every contractor already tracks revenue — the invoices, the deposits, the bank balance. Far fewer track cost with the same discipline. Margin is only as accurate as the less-tracked half of that equation, which is exactly why so many contractors are confident about a number that turns out to be wrong.
You don't need a perfect system to close most of this gap. You need labor costed at what it actually costs, overhead accounted for somewhere, change orders written down, and a habit of checking the real number before the job closes instead of after. That alone closes most of the distance between guessing and knowing.
Common questions
What’s a good profit margin for a contractor?
It varies by trade and job size, but most project-based contractors target somewhere between 15% and 25% net margin per job. The number matters less than knowing your real number — a contractor who consistently hits an accurate 12% is in better shape than one who guesses 20% and is actually closer to 5%.
What’s the difference between markup and margin?
Markup is added on top of cost (cost × 1.25 = price). Margin is a percentage of the final price ((price − cost) ÷ price). A 25% markup is only a 20% margin — they’re not the same number, and mixing them up is one of the most common ways contractors overestimate what they actually made.
How do I include labor burden in my job costs?
Take your crew’s base wage and add payroll taxes, workers’ comp, and any benefits you cover, then apply that fully-loaded rate — not the base wage — to every hour logged against a project. If you don’t know your burden rate, your accountant or payroll provider can usually calculate it from last year’s totals in a few minutes.
How often should I check a job’s margin?
Weekly, while the job is still running. A mid-job check with real cost data is the only version of this that lets you actually change anything — a margin number you see for the first time after the final invoice is a postmortem, not a management tool.