Construction Job Costing: How to Track What a Job Actually Costs You
Most contractors find out a job lost money after it's done. The invoice is sent, the crew is on the next project, and then the numbers come in. A job you thought was a 15% margin came in at 3%. Or at a loss.
Construction job costing fixes that. Instead of guessing profit at closeout, you track actual costs against estimates as the job runs — so you can catch overruns while you still have options.
This guide covers how job costing works, what to track, how to allocate overhead to each project, and what the numbers should look like when a job is priced correctly.
What Construction Job Costing Actually Is
Job costing is tracking all costs — labor, materials, equipment, subcontractors, and overhead — against a specific project rather than lumping everything into a general ledger.
The difference matters. Without per-job tracking, you see total revenue and total expense. If the number is positive, you assume everything is fine. It often isn't.
With job costing, you know that Job #47 came in $8,200 over labor budget, Job #48 ran on time and budget, and Job #49 is trending 12% over on materials with two weeks to go. That's information you can act on.
The contractors who consistently hit construction profit margins of 8-12% net are almost always running job costing. The ones netting 2-3% usually aren't.
The Four Cost Categories Every Job Needs
A complete construction job costing system tracks four things for every project.
1. Direct Labor
Hours worked on the job multiplied by each worker's loaded cost — not just their hourly wage. The loaded cost includes the wage plus payroll taxes (roughly 7.65% for employer FICA), workers' compensation insurance (5-25% of wages depending on trade and state), general liability insurance, and benefits.
A framing carpenter making $28/hour might cost you $40-44/hour loaded. If you're estimating at $28, you're underestimating labor by 40% before the job starts.
2. Materials
Track material cost at actual invoice price, not your estimate. Build in a waste factor — 5% for most materials, 10-15% for tile or lumber in complex cuts. Materials running more than 5% over estimate is a red flag. Either the estimate was wrong, or someone is overbilling.
One discipline that helps: require purchase orders for material buys above a set threshold (say, $500). It catches the slow material bleed that doesn't appear as one big line item but accumulates across dozens of small purchases.
3. Equipment and Subcontractors
Rented equipment: allocate at actual cost per project. Owned equipment: charge an internal rate based on annual depreciation, insurance, and maintenance divided by expected annual hours. If your excavator costs $18,000/year to own and operate and runs 800 hours, your internal rate is $22.50/hour.
Subcontractor costs: actual invoice plus any coordination time your staff spent managing them.
4. Overhead Allocation
This is the part most contractors skip, and it's where job costing becomes genuinely useful.
Your overhead — office rent, admin salaries, your salary, truck payments, insurance, accounting — exists whether or not a specific job is running. But your jobs have to cover it. If you don't allocate overhead to each project, you'll think jobs are more profitable than they are.
Standard method: total your annual overhead, divide by total annual direct labor hours. That gives you an overhead rate per labor hour. Apply that rate to each job based on its estimated hours.
Example: $180,000 in annual overhead, 6,000 billable labor hours per year = $30/labor hour. A job with 120 estimated labor hours carries $3,600 in overhead.
CFMA benchmarking data puts overhead for small general contractors (under $5M revenue) at 12-18% of revenue. If your per-job overhead allocation consistently lands below 12%, your profitability numbers are likely overstated.
Setting Up a Simple Job Cost Sheet
You don't need expensive software to start job costing. A spreadsheet works for most small contractors running fewer than 20 concurrent jobs.
For each project, track five rows against estimate vs. actual: direct labor (loaded), materials, equipment, subcontractors, and overhead allocation. Add a variance column. Update it weekly.
Any line item running more than 10% over estimate gets a flag and a reason. Sometimes the reason is outside your control — material prices spiked, scope expanded. Sometimes it's an estimating error you need to correct.
The variance column is where the real value is. If materials consistently run 8% over estimate, your estimating assumptions are wrong by 8%. Fix the assumption, fix the bids.
Reading Your Job Costing Numbers
Once you have data across 10-20 projects, patterns emerge fast.
Gross margin by job type. Are commercial jobs more or less profitable than residential for you? Do additions run better margins than full renovations? Job costing answers these with actual data. Most contractors find that one or two job types carry the business while others are near breakeven.
Labor efficiency. Compare estimated to actual labor hours across jobs. If you're consistently 15% over, your estimating model has a systematic error. If it varies wildly by job, the problem is execution.
Bid-win rate vs. margin. If you're winning more than 35% of your bids and job costing shows thin margins, you're underpricing. The most profitable contractors win roughly 20-30% of competitive bids. Winning everything means you're the cheapest — and usually the least profitable.
Common Job Costing Mistakes
Tracking costs but not comparing to estimate. Actual cost data without a comparison baseline isn't costing — it's bookkeeping. The estimate is the benchmark. Without it, you can't tell if actuals are good or bad.
Using wage instead of loaded labor cost. Always use the true burden rate: wage plus payroll taxes, workers' comp, and benefits. Wage-only tracking overstates job profitability on every job.
Waiting until closeout to run the numbers. Weekly job costing catches overruns while you can still issue a change order or resequence work. At closeout, it's just a report card.
What Good Numbers Look Like
For reference, typical ranges by trade (CFMA and IBISWorld benchmarks):
| Trade | Target Gross Margin | Overhead % | Target Net Margin |
|---|---|---|---|
| Residential general contracting | 20-35% | 12-18% | 5-10% |
| Commercial general contracting | 15-25% | 8-15% | 3-7% |
| Specialty trades (electrical, plumbing, HVAC) | 35-55% | 10-20% | 8-18% |
| Remodeling / renovation | 30-45% | 12-18% | 8-15% |
If your job costing consistently shows gross margins below these ranges, either your pricing is low or your costs are out of control. The job costing data will tell you which.
For a full breakdown by specialty, see the Construction Profit Margins guide.
Know Your Numbers Before You Price the Next Job
The single most useful thing you can do right now: calculate your annual overhead and turn it into a rate per labor hour. Total everything that isn't a direct job cost, divide by total billable labor hours per year, and write that number down. That's what every hour of crew time needs to cover — beyond wage and burden — before you make a dollar of profit.
If you don't know where your margins actually land, the Profit Margin Calculator can help you work backward from your current numbers. Run your last few jobs through it. Most contractors find at least one number that's clearly off — and that's exactly where to start.
---
*This content is for informational purposes only and does not constitute financial or tax advice. Consult a qualified professional for your specific situation.*