True job margin is revenue minus every cost the job actually caused. Start with a burdened labor rate — base wage plus employer taxes, workers' comp, benefits and paid time off, divided by productive hours rather than paid hours. Add materials at delivered cost including waste, plus subcontractors, rentals and permits. That gives gross job margin. Then allocate overhead on a consistent basis to get net job margin, which is what the job genuinely contributed. Most small businesses skip the burden and the allocation, which is why a company full of profitable-looking jobs can still have no money at the end of the year.
Every contractor has a job they still talk about — the one that seemed fine while it was running and left nothing behind. Usually the explanation offered is that it "went long" or "had problems". Usually the real explanation is that it was never priced to make money, and the costing method could not have revealed that.
The burdened labor rate
An employee on $28 an hour does not cost you $28 an hour. Add to the base wage:
- Employer payroll taxes — the employer share of Social Security and Medicare, plus federal and state unemployment.
- Workers' compensation insurance, which for trades can be a substantial percentage of payroll and varies sharply by class code.
- Benefits — health contribution, retirement match, any allowance.
- Paid time off — holiday, vacation and sick leave are hours you pay for and receive no billable output from.
- Training, safety, tools and uniforms, if you provide them.
For most small businesses the burdened rate lands somewhere around 1.25 to 1.5 times the base wage, though the range is wide and workers' comp class alone can move it materially. Calculate yours from your own payroll reports rather than adopting a rule of thumb — the multiplier is exactly the kind of number that is convenient to estimate and expensive to get wrong.
Quoting labor at base wage. On a job with 200 labor hours at $28, that is $5,600 of apparent cost against something closer to $7,000–$8,400 of real cost. The job shows a margin that does not exist, and every future job quoted the same way repeats it.
Productive hours, not paid hours
The second half of the burden calculation, and the half more often missed. You divide the fully loaded annual cost by the hours that can actually be billed.
A full-time employee is paid for roughly 2,080 hours a year. They are not productive for 2,080 hours. Subtract holiday and vacation, sick days, training, shop time, and travel between sites where that is not billed. What remains is often in the region of 1,600 to 1,800 hours.
Dividing the annual cost by 2,080 instead of the real figure understates the hourly cost by another 15–25%, compounding on top of the burden error. Together these two mistakes are usually the whole explanation for a business whose jobs all look fine and whose bank account disagrees.
$28/hour base × 2,080 = $58,240. Add 32% burden → about $76,900 fully loaded. Divide by 1,700 productive hours rather than 2,080 → about $45/hour, against the $28 most quotes are built on. That is a 60% gap, and it is not unusual.
The other direct costs
Materials, at delivered cost
Not the shelf price. Include delivery and freight, restocking fees on returns, waste and offcuts, and material bought for the job that was never installed. Waste in particular is routinely omitted because it does not arrive as a separate invoice — it arrives as the difference between what you bought and what went in.
Subcontractors
Straightforward, provided the invoice is coded to the job rather than to a general subcontractor expense account. That coding is the whole game, and it is where most job costing quietly fails.
Equipment, permits and disposal
Rental for the period used, permit and inspection fees, dumpster and disposal. If you own equipment rather than renting, charge the job an internal hourly rate covering depreciation, maintenance and fuel — otherwise equipment-heavy jobs look artificially strong.
Rework and callbacks
The one nobody codes. A crew returning for two days to fix something is a real cost of that job, and burying it in general labor makes the original job look better than it was — which means you will quote the next one the same way. Code rework back to the original job.
Gross job margin
Job revenue minus burdened labor, materials, subcontractors and other direct costs. As a percentage: gross margin divided by revenue.
In QuickBooks Online, assigning income and expenses to a customer or project produces this without extra software, provided the coding is disciplined at entry. Retrofitting job codes afterwards from memory is guesswork.
This number tells you whether the job covered what it directly caused. It does not yet tell you whether the job was worth doing.
Allocating overhead
Rent, insurance, office staff, vehicles, software, your own salary — none of it is caused by any single job, and all of it has to be paid out of the jobs collectively.
Total your annual indirect costs, then divide by an allocation base:
- Direct labor hours — the usual choice for labor-intensive work. Overhead per productive hour, applied by hours on the job.
- Total direct cost — better where material content varies widely between jobs, since an hours basis would under-charge material-heavy work.
Either is defensible. Consistency is what matters — changing basis between periods makes every trend comparison meaningless, which is the same failure mode as switching processing fees between expense and cost of goods sold mid-year, covered in processor reconciliation.
Net job margin is gross job margin minus allocated overhead. That is what the job actually contributed.
A job at 18% gross margin in a business carrying 22% overhead lost money, and it will look like a win on every report that stops at gross. Businesses take on volumes of this work believing they are growing, and grow themselves into a cash problem.
Finding the pattern
One job's margin is trivia. The distribution is the asset. Rank every completed job by net margin and look at the bottom quartile, asking what they share:
- A customer. Frequently one large account whose volume you have never re-priced, and whose work everyone assumes must be profitable because there is so much of it.
- A job type. Emergency callouts, small jobs where mobilization dominates, or anything requiring a specialist subcontractor.
- A size band. Very small jobs rarely carry their setup cost; very large ones sometimes suffer from quoting a volume discount nobody costed.
- A crew or estimator. Uncomfortable, but real, and usually a training or estimating-method issue rather than a personnel one.
- A season. Overtime-heavy periods where burdened labor rises and quotes did not.
The pattern is the actionable output. Individual job margins tell you what happened; the pattern tells you what to change about how you quote.
Whether your prices are right in the first place is the adjacent question, covered in how to know if you're underpricing.
Jobs that span more than one month
Everything above assumes a job starts and finishes inside a period. Many do not, and a job spanning three months is where job costing and month-end reporting collide.
The problem is that costs land continuously while revenue lands when you invoice — often at milestones, sometimes entirely at completion. Left alone, this makes your monthly P&L oscillate: a month heavy with work-in-progress looks catastrophic, and the month you invoice looks extraordinary. Neither is true.
Work in progress
Costs incurred on jobs not yet invoiced belong on the balance sheet as work in progress, not in the month's cost of sales. When you invoice, the accumulated cost moves to cost of sales in the same period as the revenue. Cost and revenue meet in the same month, which is the entire point of accrual accounting.
Over- and under-billing
On longer jobs the useful question is whether you have invoiced ahead of or behind the work done. Compare the percentage of the job complete — usually cost incurred against total expected cost — with the percentage invoiced.
- Invoiced ahead of completion is a cash advantage and a future obligation. It flatters current cash and current margin, and both correct later.
- Invoiced behind completion means you are financing the customer's project out of your own working capital, which is the single most common reason a growing contractor runs short of cash while winning more work.
This is why growth causes cash crises in project businesses. Every new job consumes cash before it produces any, so a business winning more work than it completes can be simultaneously more profitable and closer to insolvency. The 13-week forecast is where that shows up early enough to act on.
Full percentage-of-completion accounting is more than most small businesses need. The minimum worth doing is knowing, for every open job, cost incurred to date against amount invoiced to date. That single comparison catches under-billing before it becomes a cash problem, and it takes minutes if the job coding is clean.
How long this takes
The burdened rate is annual work — recalculate when wages, insurance or benefits change, not monthly.
Per-job costing is quick if the coding was done as you went. If it was not, you are reconstructing a job from memory and receipts, which takes hours and produces a number nobody quite believes.
When it stops being worth doing by hand
The thinking here — what belongs in burden, which allocation basis suits your work, whether rework gets coded back — is genuinely yours to do. It is a judgment about your business that no system will make for you.
The assembly is not. Pulling costs by job, applying the burden, allocating overhead, ranking the results and finding the pattern is mechanical work on data that already exists in your ledger. It just has to happen every month, on every job, without fail — and it is the first thing dropped in a busy quarter, which is exactly when margins move.
Find out which jobs actually made money
The First Close includes a full month of your books reconciled and explained, which is the foundation job costing depends on — you cannot cost jobs against a ledger that does not tie. $497, refundable if the packet is not delivered, credited in full toward the first month if you continue.
Get Your First Close — $497 See a sample packetCommon questions
What is a burdened labor rate, and what does a worker really cost per hour?
True hourly cost — base wage plus employer taxes, workers' comp, benefits and PTO, divided by productive rather than paid hours. Usually 1.25–1.5× base, but calculate yours.
Should I allocate overhead to jobs?
Yes, if you want to know which jobs are worth doing. A job at 18% gross margin in a business with 22% overhead lost money.
What basis should I use to allocate overhead?
Direct labor hours for labor-intensive work, total direct cost where material content varies. Consistency matters more than the choice.
Why does a job look profitable but the business isn't?
Unburdened labor, unallocated overhead, or uncaptured rework. The margins were overstated before they were added up.
Do I need job costing software?
Not to start — QuickBooks projects will do it. The real gap is usually time tracking, not software.
How often should I do this?
Every job at completion, pattern review quarterly. Annually is too late to change how you quote.