Job Costing for Contractors: The Simple Method That Actually Works
Job costing is one of those things every contractor knows they should do but most do not. Either they skip it entirely because it feels like accounting homework, or they try to set up an elaborate system with seventeen cost codes and give up after two weeks. The truth is that useful job costing is much simpler than people make it. You do not need to track every penny. You need to know, within a reasonable tolerance, which jobs made money and which ones lost money so you can do more of the first kind and less of the second.
What Job Costing Actually Does
Job costing answers one question. Did this specific job make money, and if so, how much. It does this by tracking the direct costs of the job, subtracting them from the revenue, and giving you the gross profit for that specific job. Over time, you can roll these up to see profit by type of work, profit by customer, profit by crew, and profit by season.
The contractors who do job costing consistently start making decisions based on profit instead of gut feel. They drop unprofitable work types. They fire bad customers. They double down on the jobs their crews are actually good at. The contractors who skip job costing are often the ones who work hard and stay broke because they keep chasing the wrong work.
The Three Numbers You Need
A basic job costing system tracks three numbers for every job. Total revenue, labor cost, and material cost. That is it. If you want to get fancier later, you can add subcontractor cost, equipment rental, and other direct costs. But if you start with just those three, you will have 80 percent of the value of a full system.
Revenue is what you invoiced the customer, minus any discounts or refunds. Labor cost is the burdened hours the tech spent on the job times your burdened labor rate. Material cost is what you paid for the parts and supplies used on the job.
Gross profit equals revenue minus labor cost minus material cost. Gross margin percentage equals gross profit divided by revenue.
A Real Example
An electrical contractor in Boise had been running without job costing for years. When they finally started tracking, they were shocked by what they found. Their residential panel upgrade work was running at 62 percent gross margin. Their commercial tenant improvement work was running at 19 percent. They had assumed commercial was their most profitable because the revenue per job was higher.
What they discovered was that commercial jobs took twice as long as estimated, had 15 percent material waste from rework and changes, and required expensive supervisors for coordination. Once they saw the real numbers, they started saying no to new commercial work unless it was a specific high-margin client and pushed their crews into more residential panel work. Six months later, revenue was down 8 percent but gross profit was up 23 percent. That is the power of job costing.
How to Capture Labor Cost
The hardest part of job costing is capturing labor hours accurately. Your techs need to clock in and clock out of each job, not just their shift. Most modern FSM platforms handle this automatically through the mobile app. The tech starts the job, works the job, closes the job, and the system captures the time.
If your FSM does not do this well, you can use a separate time tracking app, but keep it simple. The key is that the tech logs time to specific jobs, not just a general work day. Without job-level time, your labor cost is a guess.
One common mistake is using the tech's raw hourly wage instead of burdened rate. If you pay a tech $30 an hour but his burdened cost is $58 an hour, using $30 in your job costing underestimates labor cost by almost half. Every job will look more profitable than it actually is. Always use burdened rate.
How to Capture Material Cost
Material cost is easier in concept but tricky in practice because materials often come from truck stock or shop inventory. If the tech uses a $38 fitting from the truck, that fitting needs to get charged to the job. Most shops handle this by having techs tag materials to jobs in the mobile app as they use them, usually through a price book lookup.
If you are not running a price book with inventory integration, you can still get a rough number by having techs list used materials on the work order and matching them up later. This is less accurate but still much better than nothing.
Do not forget material markup. When you buy a part for $100 and charge the customer $175, the $100 is your cost and the $175 is the revenue. Do not make the mistake of only counting $100 in revenue.
The Reporting That Matters
Once you have job-level data, the reports that matter are simple. Gross margin by work type. Gross margin by customer. Gross margin by technician. Gross margin by month. These four views will tell you almost everything you need to know about your business.
Gross margin by work type shows you which services to push and which to cut. Gross margin by customer shows you which customers to keep and which to fire. Gross margin by technician shows you who is producing and who is not. Gross margin by month shows you seasonal patterns and trends.
The Losing Jobs
Every shop has losing jobs. The key question is how many and how big. If 15 percent of your jobs lose money and they are small losses, that is normal and probably acceptable. If 5 percent of your jobs lose money but the losses are huge, that is a problem that needs investigating. Usually the huge losers have one of three causes. Underpriced quotes on complicated work. Poor crew matching for the job. Or scope creep that never got billed back to the customer.
Once you identify losing jobs, you can dig into why. Was the estimate wrong? Did the crew waste time? Did the customer add scope? Did a part get destroyed? Each cause has a different fix, but none of them can be fixed if you do not know which jobs are losing money in the first place.
The Fire a Customer Moment
Job costing often reveals that one or two customers are quietly bleeding the shop dry. A general contractor in Atlanta discovered that one of his "biggest" customers, a property manager who accounted for 18 percent of revenue, was actually his lowest margin customer at 12 percent gross margin. The customer demanded detailed invoicing, payment in 60 days, and constant warranty work. When he calculated the true cost of servicing that customer, he was losing about $4,200 a month.
He had the hard conversation with the property manager, asked for a 15 percent price increase plus net 30 terms, and was told no. He walked away from the account and replaced the revenue within four months with higher-margin residential work. Net profit for the year jumped by about $87,000. Job costing is what made this decision visible.
Keeping It Simple
The biggest risk with job costing is making it so complicated nobody keeps up with it. Start with the three core numbers. Review reports once a week for 20 minutes. Do not try to track every nickel. Focus on the patterns, not the pennies. You will find the same 80 percent of insights with 20 percent of the effort.
Pulling It All Together
Job costing is the lens that turns gut feel into real decisions. You do not need fancy software or hundreds of cost codes. You need revenue, labor cost, and material cost by job, reported weekly. Do that consistently for six months and your business will look different because your decisions will be based on reality instead of assumption.
For a complete playbook on running a profitable contracting business, see our Running a Profitable Home Service Business Guide.
Ready to Try Kaldr?
Free software for home service businesses. Scheduling, dispatch, invoicing, payments, and more. No monthly fees.
Get Started Free