Job Costing for Contractors 101: How to Track Profit by Job (Not Just by Month)

Job Costing for Contractors: The Complete Guide to Knowing Your Real Margins
Your accountant says you made money last year. Your P&L shows a profit. But your bank account tells a different story—and you can't figure out where the disconnect is.
Here's the problem: you're looking at your business as one big bucket. Revenue in, expenses out, hope for the best.
Job costing flips that. Instead of asking "did we make money this month?" you ask "did we make money on that job?" And when you can answer that question for every single project, everything changes.
What Job Costing Actually Is
Job costing means assigning every dollar of cost to the specific job that created it.
That $1,200 materials run? It goes to the Johnson project, not "materials expense."
The 47 labor hours your crew logged last week? Split across the three jobs they worked, not dumped into "payroll."
The pump truck rental? Tagged to the specific pour it supported.
When you add up all the costs tied to a job and subtract them from what you charged, you get your actual gross profit on that job. Not a guess. Not an average across all your work. The real number.
Why Most Contractors Don't Do This (And Why It Hurts Them)
Job costing takes effort. It requires systems, discipline, and bookkeeping that actually understands construction.
So most contractors skip it. They run cash-basis books, dump everything into broad categories, and look at their total profit margin at year-end.
The problem? Averages lie.
You might have a 35% gross margin overall. But what if your residential work runs at 48% and your commercial work runs at 19%? What if Crew A produces 40% margins and Crew B barely breaks even?
Without job-level visibility, you'd never know. You'd keep bidding commercial jobs too cheap. You'd keep scheduling your weakest crew on your biggest projects. You'd keep growing revenue while profit stays flat.
We see this constantly. A contractor doing $2M, $3M, even $5M in revenue—working harder every year—and never getting ahead. The issue isn't effort. It's visibility.
What Costs Belong to a Job
This is where most bookkeepers get it wrong. They code half your job costs to overhead because they don't understand how contractors operate.
Here's what should be assigned to specific jobs:
Materials. Every piece of lumber, bag of concrete, bundle of shingles, or roll of wire that goes into a project. If it left your shop or got delivered to a site, it belongs to a job.
Subcontractor costs. Every sub invoice should tie to the job they worked on. No exceptions.
Direct labor. The hours your field crews spend on job sites. This is usually your biggest cost—and the one most often tracked wrong.
Labor burden. Workers comp, payroll taxes, benefits. These add 15-25% on top of wages and need to be allocated with labor hours.
Equipment. Rentals always tie to jobs. Owned equipment gets allocated based on usage or a standard rate.
Job-specific expenses. Dump fees, permits, fuel to and from the site, consumables used on that project.
The rule is simple: if a cost directly supports a specific job, it's job cost. Everything else—your office rent, admin salaries, insurance, accounting fees—that's overhead.
How to Actually Track This
Job costing requires three things working together: field data capture, proper coding, and timing alignment.
Field data capture. Your crews need to log hours by job, not just by day. Your foremen need to note which jobs materials went to. Your project managers need to confirm sub invoices match the right projects.
This is where CRM and job management software earns its money. Jobber, JobTread, JobNimbus, Aspire—these tools create the operational data that feeds accurate job costing. If your field software doesn't talk to your accounting system, you're recreating work manually or flying blind.
Proper coding. Every transaction in your books needs a job assignment. When your bookkeeper sees a charge from your lumber supplier, they shouldn't just code it to "materials"—they need to identify which job it supports.
This requires either detailed receipts, purchase order systems, or regular communication with the field. If there's ever doubt about which job a cost belongs to, the answer is to ask—not guess.
Timing alignment. Job costs need to hit your books when the work happens, not when cash moves. Concrete delivered in March should show as March job cost even if you pay the bill in April. This is accrual accounting, and it's non-negotiable for accurate job costing.
The Labor Allocation Problem
Labor is usually 30-50% of job cost for contractors. It's also the hardest to track accurately.
The goal is simple: know how many hours each employee spent on each job, then allocate wages and burden accordingly.
The reality is messier. Crews work multiple jobs in a day. Drive time between sites is hard to assign. Some guys are slower than others on identical tasks.
Here's the practical approach:
- Require daily time logs by job, even if they're rough
- Use your job management software to track crew assignments
- Accept that allocations won't be perfect—80% accuracy beats 0% visibility
- Review labor cost per job monthly and investigate outliers
A job that looks profitable on materials and subs can be a loser once you add real labor hours. That's insight you can't get without job-level tracking.
Validating Your Job Profitability
Once you have job costs assigned, you need to sanity-check the numbers.
For each completed job, compare actual costs against your estimate. Did materials come in where you expected? Did labor hours match? Did you account for all subs?
If a job shows 45% margin when you typically run 32%, something's probably missing. If a job shows 8% margin when you bid it at 30%, you need to understand why—pricing problem, scope creep, crew inefficiency, or bad estimate?
Watch for red flags:
- Jobs with zero labor cost (crews definitely worked there)
- Jobs with zero materials (unlikely for most trades)
- Margins wildly outside your normal range
- Negative margin on jobs you thought were profitable
These indicate data problems, not necessarily job problems. Fix the data, then analyze the real performance.
What You Get When Job Costing Is Right
Accurate job costing unlocks decisions you literally cannot make otherwise:
Pricing confidence. You'll know what jobs actually cost, so you can bid future work with real data instead of gut feel.
Crew accountability. You'll see which teams produce strong margins and which ones need training, better equipment, or different job assignments.
Service line clarity. You'll know whether your maintenance work, installs, repairs, or specialty services actually make money—or just feel busy.
Customer profitability. Some customers are worth keeping. Others cost more to serve than they pay. You'll finally know the difference.
Variance analysis. When a job goes sideways, you'll see exactly where—materials overrun, labor blowout, or scope change you didn't price.
This is the difference between running a business and guessing at one.
The Bottom Line
Job costing isn't complicated in theory. Track costs by job. Allocate labor accurately. Match timing to when work happens. Compare actuals to estimates.
But doing it consistently, accurately, and every single month? That takes systems, discipline, and bookkeeping that actually understands how contractors operate.
Most general bookkeepers don't. They'll categorize your expenses and reconcile your bank accounts—but they won't give you job-level visibility because they don't know how.
If you're tired of looking at a P&L that says you're profitable while your cash tells a different story, job costing is the fix. Whether you build the system yourself or hand it to someone who specializes in contractor financials, the visibility is worth it.
Latch handles job costing for contractors doing $500K to $20M. We set up the systems, assign costs to jobs weekly, and deliver monthly reports that show exactly which projects, crews, and service lines make money. If you'd rather focus on running jobs than reconciling job costs, book a free diagnostic and we'll show you what you're missing.
Job Costing for Contractors: The Complete Guide to Knowing Your Real Margins
Your accountant says you made money last year. Your P&L shows a profit. But your bank account tells a different story—and you can't figure out where the disconnect is.
Here's the problem: you're looking at your business as one big bucket. Revenue in, expenses out, hope for the best.
Job costing flips that. Instead of asking "did we make money this month?" you ask "did we make money on that job?" And when you can answer that question for every single project, everything changes.
What Job Costing Actually Is
Job costing means assigning every dollar of cost to the specific job that created it.
That $1,200 materials run? It goes to the Johnson project, not "materials expense."
The 47 labor hours your crew logged last week? Split across the three jobs they worked, not dumped into "payroll."
The pump truck rental? Tagged to the specific pour it supported.
When you add up all the costs tied to a job and subtract them from what you charged, you get your actual gross profit on that job. Not a guess. Not an average across all your work. The real number.
Why Most Contractors Don't Do This (And Why It Hurts Them)
Job costing takes effort. It requires systems, discipline, and bookkeeping that actually understands construction.
So most contractors skip it. They run cash-basis books, dump everything into broad categories, and look at their total profit margin at year-end.
The problem? Averages lie.
You might have a 35% gross margin overall. But what if your residential work runs at 48% and your commercial work runs at 19%? What if Crew A produces 40% margins and Crew B barely breaks even?
Without job-level visibility, you'd never know. You'd keep bidding commercial jobs too cheap. You'd keep scheduling your weakest crew on your biggest projects. You'd keep growing revenue while profit stays flat.
We see this constantly. A contractor doing $2M, $3M, even $5M in revenue—working harder every year—and never getting ahead. The issue isn't effort. It's visibility.
What Costs Belong to a Job
This is where most bookkeepers get it wrong. They code half your job costs to overhead because they don't understand how contractors operate.
Here's what should be assigned to specific jobs:
Materials. Every piece of lumber, bag of concrete, bundle of shingles, or roll of wire that goes into a project. If it left your shop or got delivered to a site, it belongs to a job.
Subcontractor costs. Every sub invoice should tie to the job they worked on. No exceptions.
Direct labor. The hours your field crews spend on job sites. This is usually your biggest cost—and the one most often tracked wrong.
Labor burden. Workers comp, payroll taxes, benefits. These add 15-25% on top of wages and need to be allocated with labor hours.
Equipment. Rentals always tie to jobs. Owned equipment gets allocated based on usage or a standard rate.
Job-specific expenses. Dump fees, permits, fuel to and from the site, consumables used on that project.
The rule is simple: if a cost directly supports a specific job, it's job cost. Everything else—your office rent, admin salaries, insurance, accounting fees—that's overhead.
How to Actually Track This
Job costing requires three things working together: field data capture, proper coding, and timing alignment.
Field data capture. Your crews need to log hours by job, not just by day. Your foremen need to note which jobs materials went to. Your project managers need to confirm sub invoices match the right projects.
This is where CRM and job management software earns its money. Jobber, JobTread, JobNimbus, Aspire—these tools create the operational data that feeds accurate job costing. If your field software doesn't talk to your accounting system, you're recreating work manually or flying blind.
Proper coding. Every transaction in your books needs a job assignment. When your bookkeeper sees a charge from your lumber supplier, they shouldn't just code it to "materials"—they need to identify which job it supports.
This requires either detailed receipts, purchase order systems, or regular communication with the field. If there's ever doubt about which job a cost belongs to, the answer is to ask—not guess.
Timing alignment. Job costs need to hit your books when the work happens, not when cash moves. Concrete delivered in March should show as March job cost even if you pay the bill in April. This is accrual accounting, and it's non-negotiable for accurate job costing.
The Labor Allocation Problem
Labor is usually 30-50% of job cost for contractors. It's also the hardest to track accurately.
The goal is simple: know how many hours each employee spent on each job, then allocate wages and burden accordingly.
The reality is messier. Crews work multiple jobs in a day. Drive time between sites is hard to assign. Some guys are slower than others on identical tasks.
Here's the practical approach:
- Require daily time logs by job, even if they're rough
- Use your job management software to track crew assignments
- Accept that allocations won't be perfect—80% accuracy beats 0% visibility
- Review labor cost per job monthly and investigate outliers
A job that looks profitable on materials and subs can be a loser once you add real labor hours. That's insight you can't get without job-level tracking.
Validating Your Job Profitability
Once you have job costs assigned, you need to sanity-check the numbers.
For each completed job, compare actual costs against your estimate. Did materials come in where you expected? Did labor hours match? Did you account for all subs?
If a job shows 45% margin when you typically run 32%, something's probably missing. If a job shows 8% margin when you bid it at 30%, you need to understand why—pricing problem, scope creep, crew inefficiency, or bad estimate?
Watch for red flags:
- Jobs with zero labor cost (crews definitely worked there)
- Jobs with zero materials (unlikely for most trades)
- Margins wildly outside your normal range
- Negative margin on jobs you thought were profitable
These indicate data problems, not necessarily job problems. Fix the data, then analyze the real performance.
What You Get When Job Costing Is Right
Accurate job costing unlocks decisions you literally cannot make otherwise:
Pricing confidence. You'll know what jobs actually cost, so you can bid future work with real data instead of gut feel.
Crew accountability. You'll see which teams produce strong margins and which ones need training, better equipment, or different job assignments.
Service line clarity. You'll know whether your maintenance work, installs, repairs, or specialty services actually make money—or just feel busy.
Customer profitability. Some customers are worth keeping. Others cost more to serve than they pay. You'll finally know the difference.
Variance analysis. When a job goes sideways, you'll see exactly where—materials overrun, labor blowout, or scope change you didn't price.
This is the difference between running a business and guessing at one.
The Bottom Line
Job costing isn't complicated in theory. Track costs by job. Allocate labor accurately. Match timing to when work happens. Compare actuals to estimates.
But doing it consistently, accurately, and every single month? That takes systems, discipline, and bookkeeping that actually understands how contractors operate.
Most general bookkeepers don't. They'll categorize your expenses and reconcile your bank accounts—but they won't give you job-level visibility because they don't know how.
If you're tired of looking at a P&L that says you're profitable while your cash tells a different story, job costing is the fix. Whether you build the system yourself or hand it to someone who specializes in contractor financials, the visibility is worth it.
Latch handles job costing for contractors doing $500K to $20M. We set up the systems, assign costs to jobs weekly, and deliver monthly reports that show exactly which projects, crews, and service lines make money. If you'd rather focus on running jobs than reconciling job costs, book a free diagnostic and we'll show you what you're missing.

.png)
