Most contractors know whether their business made money last year. Very few know whether Tuesday’s kitchen remodel made money. That gap between “the business is profitable” and “this job is profitable” is where contractor job costing lives, and it is the difference between growing and guessing.
Job costing means tracking the actual labor, materials, and overhead on each individual job, then comparing those numbers to what you estimated. It tells you which jobs make you money, which ones quietly lose money, and where your estimates are off.
According to a 2023 report from the Construction Financial Management Association (CFMA), contractors who track costs at the job level report net profit margins 3 to 5 percentage points higher than those who only track costs at the business level. On $500,000 in annual revenue, that is $15,000 to $25,000 in additional profit. Not from doing more work. From knowing which work actually pays.
Why most contractors skip job costing (and what it costs them)
The honest reason is that job costing takes effort. You finish a job, collect the check, and move on to the next one. Going back to calculate the actual cost of that job feels like homework you already got paid for.
But without it, you are pricing blind. Here is what that looks like in practice.
A residential electrician I talked to was quoting panel upgrades at $2,800. He based that on $600 in materials, about 6 hours of labor for himself and a helper, and “some margin.” He had been running that price for two years.
When he finally tracked the real numbers on 10 panel upgrades, his average total cost was $2,340. That is $600 materials, $720 in labor (his loaded rate plus the helper), $380 in overhead allocation, and $640 in costs he had not been counting: permit fees, a second trip 40% of the time for inspection issues, and drive time that averaged 90 minutes per job.
His actual margin was $460 per job, or 16.4%. He thought he was making 30%. At 16%, one callback or one slow-pay customer wiped out the profit entirely.
He raised his price to $3,400 after seeing the data. Lost a few bids. Still booked plenty of work. His actual margin jumped to 31%.
That story is not unusual. The IRS estimates that roughly 1 in 4 self-employed individuals underreport expenses or miscalculate deductions, which means they also miscalculate their true cost basis per job.
The 4 cost buckets you need to track
Every job has 4 cost categories. Miss any one of them and your profit calculation is wrong.
Direct labor
This is the actual time spent on the job multiplied by the loaded labor rate. “Loaded” means you include the wage plus employer-side payroll taxes (7.65% FICA), workers’ comp insurance, and any benefits.
If you pay a technician $30/hour, the loaded cost is closer to $38 to $42/hour depending on your state’s workers’ comp rates and whether you offer any benefits.
Track hours per job, not per day. If your crew works on two jobs in one day, split the hours. Use a simple timesheet or a field service app. The tool does not matter as long as the hours are accurate.
Do not forget your own time if you are on the job. If you would have to pay someone $45/hour to replace yourself on that job, that is your labor cost for job costing purposes.
Direct materials
Everything purchased for a specific job: parts, supplies, fixtures, consumables. Use the actual purchase price, not list price, and include tax and delivery fees if you paid them.
Keep receipts tied to job numbers. If you buy materials for 3 different jobs in one trip to the supply house, split the receipt. This is tedious. It is also the only way to know what each job actually cost.
Pro tip: most supply houses can print itemized invoices broken down by job or PO number if you request it at the counter.
Overhead allocation
Overhead is every cost of running the business that is not directly tied to one job. Insurance, truck payments, fuel, tools, software, marketing, office space, phone bills, licensing. You need to spread these costs across your jobs.
The simplest method: take your total annual overhead and divide by your estimated annual billable hours to get an overhead rate per hour. Then multiply by the hours on each job.
If your annual overhead is $42,000 and you bill 1,400 hours per year, your overhead rate is $30/hour. A job that takes 8 hours gets allocated $240 in overhead.
For a deeper breakdown of overhead calculation, our contractor pricing guide walks through a full example with real dollar amounts.
Subcontractor and other direct costs
If you hire a sub for part of a job, that cost goes to the job directly. Same for permit fees, equipment rentals, dumpster fees, or inspection costs. These are direct costs, not overhead, because they are tied to a specific job.
How to set up job costing (without expensive software)
You do not need construction management software to start job costing. You need a system that captures 4 pieces of data for every job: labor hours, material costs, overhead allocation, and the final invoice amount.
The spreadsheet method
A Google Sheet or Excel file works fine for contractors doing fewer than 15 jobs per week. Set up columns for:
- Job number or name
- Customer
- Estimated labor hours and cost
- Actual labor hours and cost
- Estimated materials
- Actual materials
- Overhead allocation (hours x your overhead rate)
- Other direct costs (permits, subs, rentals)
- Total actual cost
- Invoice amount
- Gross profit (invoice minus total cost)
- Gross margin % (gross profit / invoice amount)
Fill it in as you go. Log labor hours daily, not weekly. Memory fades fast. By Friday you will not remember how long Wednesday’s service call actually took.
Field service software
If you are running a crew or doing more than 15 jobs per week, a field service app makes this easier. Tools like Jobber, ServiceTitan, and Housecall Pro let technicians log time and materials from their phone. The software calculates job costs automatically.
The investment is real. ServiceTitan runs $200+ per month. Jobber starts around $50/month. But if the alternative is not tracking costs at all, the software pays for itself quickly.
Scheduling software that integrates with job costing can also reduce the admin time. Our guide to scheduling software for contractors covers the options and what each one handles.
Worked example: HVAC system replacement
Let me walk through a complete job costing example so you can see how the numbers work.
The job: Replace a residential 3-ton AC unit and furnace. Customer is in a suburb, 25 minutes from your shop.
Estimated costs (what you quoted)
| Category | Estimated |
|---|---|
| Labor: 2 techs x 8 hours x $40/hr loaded | $640 |
| Materials: Carrier 3-ton AC unit + furnace | $3,200 |
| Materials: line set, refrigerant, fittings, thermostat | $380 |
| Permit fee | $150 |
| Overhead: 16 labor hours x $30/hr | $480 |
| Total estimated cost | $4,850 |
You quoted $7,200 for the job, targeting a 33% gross margin.
Actual costs (what really happened)
| Category | Actual |
|---|---|
| Labor: 2 techs x 9.5 hours x $40/hr loaded | $760 |
| Materials: equipment and supplies | $3,640 |
| Permit fee | $150 |
| Second trip for inspection (2 techs x 1.5 hrs) | $120 |
| Overhead: 21 labor hours x $30/hr | $630 |
| Total actual cost | $5,300 |
The profit math
- Invoice amount: $7,200
- Total actual cost: $5,300
- Gross profit: $1,900
- Gross margin: 26.4%
You targeted 33% and hit 26.4%. That is still a decent job. But look at where the variance came from:
- Labor overrun: The job took 9.5 hours instead of 8 because the existing ductwork needed modification. That cost an extra $120 in labor plus $45 in extra overhead.
- Material cost creep: The line set needed to be longer than standard, and refrigerant prices were up from your last purchase. Extra $60.
- Inspection trip: The inspector flagged a clearance issue and you had to send techs back. That was $120 in labor plus $45 in overhead that was not in the estimate at all.
Total variance: $450. Without job costing, you would have deposited $7,200, subtracted the obvious costs you remembered (equipment, maybe labor), and thought you made about $3,000. The real number was $1,900. A $1,100 gap between perception and reality.
Now multiply that by 200 jobs per year. If your perception is off by $1,100 per job on average, you are overestimating your annual profit by $220,000. That is the kind of gap that kills businesses.
Flat rate vs. time-and-materials: job costing works for both
Some contractors wonder if job costing matters when they use flat rate pricing. It matters more.
With time-and-materials billing, the customer absorbs some of the cost risk. If a job takes longer, you bill more. With flat rate pricing, you absorb all the cost risk. Every hour over estimate comes out of your margin.
That makes tracking actual costs per job essential for flat rate contractors. If you do not know which job types consistently run over, you cannot adjust your flat rates.
Our comparison of flat rate vs. hourly pricing breaks down the tradeoffs. But regardless of which pricing model you use, you need the actual cost data to know if your prices work.
5 job costing mistakes that hide profit leaks
1. Not counting your own labor
If you are on the job, your time has a cost. Many owner-operators track employee hours but skip their own. This makes every job look more profitable than it is. Assign yourself a labor rate based on what you would pay a replacement.
2. Using estimates instead of actuals
Job costing means tracking what actually happened, not what you budgeted. The estimate is important for comparison, but the actual numbers are what determine profit. If you only record estimates, you are doing budgeting, not costing.
3. Ignoring drive time
A job 45 minutes away costs more than a job 10 minutes away even if the on-site work is identical. According to the Bureau of Labor Statistics, construction and extraction workers spend an average of 30 minutes per day in work-related travel. For service contractors doing multiple stops, it is often more. Factor drive time into your labor hours per job.
4. Lumping overhead into a guess
“I just add 15% for overhead” is a guess, not an allocation. Calculate your actual annual overhead and divide by billable hours. Update it quarterly. Your overhead rate from 2 years ago is probably wrong today because insurance, fuel, and software costs all shift.
5. Not reviewing the data
Tracking costs without reviewing them is a paperwork exercise. Set aside 30 minutes every week to review completed jobs. Look for patterns: which job types consistently underperform? Which crews are more efficient? Which customer types generate the most callbacks?
Using job costing data to fix your estimates
The real payoff of job costing is not knowing what happened last week. It is making next week’s estimates better.
After you have 20 to 30 completed jobs tracked, you will start seeing patterns. Maybe your bathroom remodels consistently take 15% longer than estimated. Maybe your service calls in one zip code have higher drive time. Maybe one supplier’s materials cost 8% more than you assumed.
Each of those insights is a pricing adjustment. A contractor who tracks 200 jobs over a year and adjusts estimates quarterly will be pricing within 5% of actual cost on most jobs by year 2. A contractor who does not track will still be guessing in year 10.
The SBA’s guide to financial management for small businesses emphasizes that cost tracking at the project level is one of the most effective financial controls for service businesses. It is not just a best practice. It is how you know whether your business model works.
Connect job costing to the rest of your operations
Job costing does not exist in a vacuum. It connects directly to pricing, scheduling, and overall business management.
If your job costing data shows that certain job types consistently produce margins below 20%, you have 3 options: raise the price, reduce the cost, or stop taking those jobs. All three are valid. But without the data, you do not even know the question exists.
The same data feeds your scheduling decisions. If you know that HVAC changeouts take 9.5 hours on average (not the 8 you used to assume), you can schedule the next one properly and avoid the domino effect of a late finish pushing everything back.
For a broader look at how all these pieces fit together, our guide to running a contracting business covers pricing, scheduling, hiring, and financial tracking as a connected system.
Start this week, not next month
You do not need a perfect system to start job costing. You need any system.
Pick your next 5 jobs. For each one, write down: what you estimated, what you actually spent on labor and materials, and what you invoiced. Calculate the gross profit and margin.
If any of those 5 jobs produced a margin below 20%, dig into why. Was it a labor overrun? Unexpected materials? A callback? That one answer will tell you more about your business than a month of gut-feel pricing.
Contractor job costing is not accounting busywork. It is the only way to know which jobs are worth taking and which ones are quietly draining your business. The contractors who track this grow. The ones who do not stay stuck wondering why they are busy but not profitable.
The ProTradeHQ Team
We're veteran contractors and software experts helping the trade community build more profitable, less stressful businesses through practical systems that work in the field.