Job Costing for Contractors
You finished the job. The client paid. But did you actually make money?
Most contractors can't answer that question with certainty. They know they got paid. They know they paid their subs and bought their materials. But the actual margin — the difference between what they made and what it cost to deliver — is a mystery.
That's a job costing problem.
What Is Job Costing?
Job costing is the process of tracking every dollar of cost associated with a specific project and comparing it to what you bid. It answers three questions: Did I make the margin I bid? Where did I lose money if I didn't? How should I bid the next similar project?
Without job costing, you're flying blind. You might be consistently losing money on kitchen remodels and not know it. You might be great at concrete work and underpricing it.
The Four Cost Categories
- Direct Labor — Track hours worked by each employee or sub on each job. Multiply by true hourly cost including burden. This is almost always where the biggest variance occurs.
- Materials — Track every material purchase by project. Use job codes on your POs or credit card statements. Material waste and theft are common margin killers that only show up in job costing.
- Subcontractors — Track sub invoices by project. Watch for change orders from subs that you didn't pass through to the client.
- Equipment and Overhead Allocation — Allocate equipment rental and a portion of overhead to each project. The most common method is a percentage of direct costs (typically 10–20%).
Estimated vs. Actual: The Comparison That Matters
Job costing only works if you compare actual costs to your original estimate.
Example variance table:
Estimated Actual Variance
Labor $12,000 $15,500 -$3,500
Materials $8,000 $7,800 +$200
Subcontractors $5,000 $5,000 $0
Overhead $3,000 $3,000 $0
─────────────────────────────────────────────────────
Total $28,000 $31,300 -$3,300
In this example, labor ran $3,500 over — probably because the job took longer than estimated. Now you know where to look on the next similar bid.
Setting Up a Simple Job Costing System
Create a job code for every project (e.g., 2026-001). Use that code on every PO, sub invoice, and timesheet. Review actuals vs. estimate at 50% complete — catch problems early. Do a full closeout analysis within 2 weeks of completion.
The closeout analysis is the most important habit. Block 30 minutes, run the numbers, and note what you'd do differently on the next similar job.
