What Is Job Costing and Why Your Contracting Business Needs It
Job costing is a simple concept that most contractors understand intuitively but few practice systematically. At its core, job costing means tracking every cost associated with a specific job — materials, labor, equipment, subcontractors, and a share of overhead — so you can calculate the actual profit on that individual project.
Without job costing, you know your company's total revenue and total expenses. You know whether you made money overall. But you don't know which jobs made money and which ones lost it. And that distinction is the difference between growing profitably and growing yourself out of business.
How Job Costing Works
Job costing assigns every expense to the job that caused it. Here's what that looks like in practice for a typical contracting business:
Direct Materials
Every piece of material that goes into a job gets tracked to that job. The copper pipe, the electrical panel, the roofing shingles, the HVAC unit — whatever you install or consume on a project is a direct material cost. This also includes waste and returns. If you bought 120 feet of pipe and used 95, the cost of the full 120 feet goes to the job (unless you return the rest for credit).
Direct Labor
Every hour your crew spends on a job gets tracked to that job. This includes not just the hourly wage but also the loaded cost — payroll taxes, workers' comp, health insurance, and benefits. If a technician earns $28/hour, their loaded cost might be $38–42/hour depending on your benefits package. Job costing uses the loaded number because that's what the labor actually costs you.
Subcontractors
If you hire subs for specific tasks on a job — a plumber on a GC project, a concrete crew for a foundation — those costs are direct to that job. Subcontractor invoices are usually the easiest costs to track because they typically reference a specific project.
Equipment
If you rent equipment for a specific job, that's a direct cost. If you own the equipment and use it across multiple jobs, you allocate a portion — often based on hours or days of use. A mini excavator that costs you $800/month in payments and maintenance, used on four jobs that month, might be allocated $200 to each.
Overhead Allocation
This is where job costing gets interesting — and where most contractors either skip it or get it wrong. Overhead includes everything that keeps your business running but isn't tied to a specific job: rent, office staff salaries, insurance, truck payments, software subscriptions, your own salary. These costs are real, and they need to be covered by your jobs.
The most common allocation method is a percentage of direct costs. If your annual overhead is $200,000 and your annual direct costs (materials + labor + subs) are $800,000, your overhead rate is 25%. A job with $10,000 in direct costs gets allocated $2,500 in overhead. This isn't perfect, but it's far better than ignoring overhead entirely — which is what happens when contractors just look at materials and labor.
Why Job Costing Changes Everything
Contractors who implement job costing consistently report the same set of revelations. The details vary by trade, but the pattern is remarkably consistent.
You Discover Your Unprofitable Jobs
Almost every contractor who starts job costing finds that 10–20% of their jobs are unprofitable or barely breaking even. These money-losing jobs were invisible before because they were hidden inside a total P&L that looked acceptable. You might have 8 jobs at 30% margin subsidizing 2 jobs at -5% margin, and your blended result looks like 23% — decent, but not what it could be.
Once you identify the money-losers, you can either reprice them, change how you staff them, or stop taking that type of work. Any of those decisions improves your overall profitability without increasing revenue.
You Price More Accurately
When you know what past jobs actually cost — not what you estimated, but what you actually spent — your future estimates get dramatically better. If your last five kitchen remodels averaged $4,200 in materials and you've been estimating $3,500, you now know your estimates are 20% low on materials. Fix that one line item and your margins improve immediately.
You Spot Problems Mid-Job
With real-time job costing, you can compare actual costs to your estimate while the job is still in progress. If you estimated 40 hours of labor and you're at 35 hours with 50% of the work remaining, you know you're going to blow the budget. That knowledge, mid-project, gives you options: reassign to a faster crew, have a conversation with the customer about a change order, or adjust your approach. After the job is done, you have no options — just a lesson learned.
You Understand Your True Capacity
Job costing reveals how much labor each job type actually requires, which tells you how many jobs you can realistically run simultaneously. Many contractors overcommit because they're estimating capacity based on optimistic labor assumptions. When actual job data shows that a typical residential HVAC install takes 22 crew-hours, not the 16 you've been estimating, you realize you can't stack three installs in a week with a four-person crew.
Job Costing Without the Complexity
Historically, job costing required either expensive construction software or an extremely disciplined spreadsheet process. Neither option worked well for small to midsize contractors. The software was built for large GCs with project managers and dedicated accounting staff. The spreadsheets required manual data entry that nobody had time for.
Modern tools have closed that gap. Accomptant, for example, connects to your QuickBooks Online account and automatically breaks down your financial data at the job level. You don't need to change how you do bookkeeping — the system reads your existing transactions, categorizes them by job, allocates overhead, and shows you job-level profitability. The analysis that used to require a full-time controller is now automated.
Getting Started with Job Costing
If you're not currently doing job costing, here's a practical starting point:
- Start with your last 10 completed jobs. Go back and calculate the actual direct costs (materials + labor + subs) for each one. Compare those costs to what you charged. This exercise alone will be eye-opening.
- Calculate your overhead rate. Add up all your non-job expenses for the last 12 months. Divide by your total direct costs for the same period. That percentage is your overhead rate, and every job needs to cover its share.
- Build it into your estimating. For your next 10 bids, calculate: estimated materials + estimated labor + estimated subs + overhead allocation + target profit. That total is your price. If it's higher than what you've been charging, your old pricing was leaving money on the table — or losing it.
- Track actuals against estimates. As each job progresses, compare what you're actually spending to what you estimated. Don't wait until the job is complete. Weekly check-ins during active jobs catch overruns while you can still do something about them.
Job costing isn't complicated. It's just disciplined cost tracking applied at the project level instead of the company level. The contractors who do it consistently — whether manually or with software — make better pricing decisions, catch problems earlier, and ultimately keep more of the revenue they earn. The ones who don't are flying blind, hoping the next job covers the losses from the last one.
Hope is not a financial strategy. Job costing is.