Zome is onboarding founding partners in trades and home services.Become a founding partnerJoin
Win more jobs

Job costing: how to price every job profitably

Learn to cost a job the way it really runs: labor with its true burden, materials, overhead and profit, with a worked example and an estimate vs actual review.

Zome team9 min readSeptember 30, 2026
Illustrative photo
Contents
  1. What job costing is
  2. The five buckets of job cost
  3. Step 1: Find your true labor cost per billable hour
  4. Step 2: Find your overhead per billable hour
  5. Step 3: Estimate the job
  6. Step 4: Add profit, and know markup from margin
  7. Step 5: Compare the estimate to what actually happened
  8. What job costing looks like in other trades
  9. Build the habit

Plenty of busy service companies make less money than they should, and the owner cannot say which jobs are to blame. The trucks are out every day, the phone rings, and yet the bank balance does not match the effort. Job costing is how you find out what each job really costs you, so you can price the next one properly. This guide walks through it step by step, with a worked example using made-up numbers you can swap for your own.

What job costing is

Job costing means adding up every cost that belongs to a specific job and comparing it to what you charged. You do it twice:

  • Before the job, to build the estimate or set your flat-rate price.
  • After the job, to see what it actually cost and whether your estimate was right.

The second part is the one that gets skipped, and it is where the lessons are. Common leaks only show up when you compare:

  • The job took longer than planned, and nobody adjusted the price for next time.
  • Drive time, parts runs and cleanup were never counted.
  • Overhead (the office, trucks, insurance, software) was left out of the price entirely.
  • Callbacks to fix a problem ate the profit on the original job.

The five buckets of job cost

Every job cost fits into one of five buckets. Profit goes on top.

BucketWhat goes inTrade examples
LaborHours on the job, including drive time, at your true cost per hourTech and helper hours, install crew hours
MaterialsParts and supplies at what you paid, including shippingWater heater, fittings, wire, shingles, mulch, cleaning supplies
Job-specific costsAnything you pay only because of this jobPermits, dump fees, dumpster, lift or crane rental, subcontractors
EquipmentWear and running cost of equipment used on the jobMowers, jetters, sewer cameras, pressure washers
OverheadA share of the costs of running the businessOffice staff, rent, insurance, trucks, software, marketing

Step 1: Find your true labor cost per billable hour

A tech's hourly wage is not what an hour of their time costs you. You also pay payroll taxes, workers' comp, benefits, paid time off and more. And not every paid hour can be billed to a customer.

The formula:

Labor cost per billable hour = total yearly cost of the tech ÷ billable hours per year

A worked example with hypothetical numbers. Say one of your techs costs you $86,000 a year once you add up wages, payroll taxes, workers' comp, health insurance and paid time off. After holidays, vacation, training, shop time and unbilled driving, they bill about 1,500 hours a year.

$86,000 ÷ 1,500 = about $57.33 per billable hour.

Do this for each tech or crew role, or use an average if their costs are close. Our guide to calculating your billable hourly rate goes into more detail on counting billable hours honestly.

Step 2: Find your overhead per billable hour

Overhead is everything you pay to keep the doors open that is not tied to one job. The simplest way to spread it fairly is by billable hour.

Overhead per billable hour = yearly overhead ÷ total billable hours for the whole team

Continuing the example: say your yearly overhead is $240,000. That covers an office manager, shop rent, insurance, truck payments, fuel, software, phones, marketing, accounting and your own salary for the time you spend running the business. You have three techs, each billing about 1,500 hours.

$240,000 ÷ 4,500 hours = about $53.33 per billable hour.

So every billable hour costs you about $57.33 in labor and $53.33 in overhead, or roughly $111 before materials and profit. That number is your floor. Price below it and every hour you work loses money.

Step 3: Estimate the job

Now cost a real job. Here is a standard gas water heater replacement, using the same hypothetical company.

Labor and overhead. The job should take 4 billable hours, counting drive time, removal of the old unit and cleanup.

  • Labor: 4 hours × $57.33 = $229
  • Overhead: 4 hours × $53.33 = $213

Materials and job costs.

  • 50-gallon gas water heater: $800
  • Fittings, venting, gas connector and expansion tank: $150
  • Permit: $90
  • Disposal of the old unit: $30

Materials and job costs total $1,070.

Total estimated cost: $229 + $213 + $1,070 = $1,512.

These prices are made up for the example. Use your own supplier prices, your local permit fees and your own hours.

Step 4: Add profit, and know markup from margin

Profit is not what is left over by accident. You build it in on purpose. The cleanest way is to decide the profit margin you want and price from there:

Price = total cost ÷ (1 − target margin)

If you want a 20% margin on the water heater job:

$1,512 ÷ 0.80 = $1,890

Because overhead is already inside the cost, that 20% is your profit on the job before tax, not a gross margin.

Many owners mix up markup and margin, and it costs them. Markup is a percentage of cost. Margin is a percentage of the price. A 20% markup does not give you a 20% margin.

Target marginMarkup on cost you need$1,000 of cost becomes
20%25%$1,250
30%42.9%$1,429
40%66.7%$1,667
50%100%$2,000

What margin should you aim for? That depends on your market, your risk, your warranty costs and your goals. Look at your own past years and talk it through with your accountant rather than copying a number from the internet.

Step 5: Compare the estimate to what actually happened

Now the part that is easy to skip. Say the water heater job did not go as planned. The gas shutoff valve was seized and had to be replaced, and a section of the venting needed updating. The tech was there 5.5 hours instead of 4, and used $85 of extra parts. The price stayed at $1,890.

LineEstimatedActualDifference
Billable hours4.05.5+1.5
Labor$229$315+$86
Overhead$213$293+$80
Materials and job costs$1,070$1,155+$85
Total cost$1,512$1,763+$251
Price$1,890$1,890$0
Profit$378$127−$251
Margin20%6.7%

One job like this is not a crisis. But if you look back at your last ten water heater jobs and half of them ran over in the same way, you have a pricing problem, not bad luck. Some fixes:

  • Add standard line items for common extras, like "replace gas shutoff valve" or "update venting", so the customer approves them on the spot.
  • Build a little extra time into jobs in older homes, where surprises are more likely.
  • Offer good, better and best options that include the likely extras. See how option pricing works.
  • Update your price book with the real average time, not the ideal time. Our guide on building a price book your team will use shows how.

What job costing looks like in other trades

The method is the same everywhere. What changes is where the surprises hide.

  • HVAC system replacement. Count crew hours, not job hours. Two installers for 8 hours is 16 labor hours. Include line sets, pads, disconnects, permits, refrigerant, haul-away of the old equipment and any extra help needed for attic or rooftop units.
  • Electrical panel upgrade. Include the permit, the inspection, coordination with the utility and the return trips they cause. Return trips are billable hours you pay for, even if the customer never sees them.
  • Roofing. Pricing by the square is fine, but the cost changes with the number of layers to tear off, the pitch, decking that needs replacing, dumpster and disposal fees, and days lost to weather.
  • Landscaping maintenance. Cost each visit, including the drive between stops. A property that takes 30 minutes on site but sits 20 minutes away from your next stop costs more than the minutes on the mower suggest. Include fuel and equipment wear.
  • Residential cleaning. Track hours per clean for each home, times the number of cleaners, plus supplies and travel. First-time deep cleans usually take far longer than recurring visits, so cost and price them separately.
  • Painting. Prep work is where estimates go wrong. Track prep hours apart from painting hours for a few jobs, and you will quote the next one far more accurately.

Build the habit

Job costing only works if the data is there. Keep it simple enough that your team actually does it.

Most field service and invoicing software can track time and materials by job. If yours cannot, a shared spreadsheet with one row per job works fine to start. You can also use our job costing calculator to run the numbers.

This article explains a general method, not tax or accounting advice. Your accountant can help you set up the categories so your job costs line up with your books.

Once you trust your numbers, you can show prices with confidence. Zome's Instant Quotes lets you publish starting prices or ranges on your website for the jobs you have costed well, so customers arrive knowing roughly what to expect.

Written by the Zome team

Zome builds AI growth tools for trades and home services: websites, Google profiles, reviews, booking and follow-ups. We write guides we would want if we ran a crew ourselves.

About Zome

The easiest way to grow your service business online.

Get your free AI report in about a minute, then see exactly what Zome would fix first.