Guides

Job Costing for Contractors: How to Find Your Profit per Job (With a Worked Example)

How to work out what each job really cost you, from a loaded labor rate to overhead per hour, why margin and markup aren't the same, and a 20-minute weekly review.

8 min read

Job costing means adding up what one job actually cost (technician hours at a loaded labor rate, parts at your cost, and any direct extras like permits) and subtracting it from what you billed. Divide that gross profit by the price to get gross margin. Many residential service shops aim for roughly 50–65% gross margin on service work, then cover overhead from it.

More on this topic: Pricing, estimates and getting paid, every guide in one place.

Most small shops know whether the month was good. Far fewer know which jobs made the money and which ones lost it. Job costing answers that, one job at a time. It shows you the water heater installs that quietly break even, the tech who always runs an hour over, and the flat rate that hasn't kept up with parts prices. This guide covers the math, the common margin-versus-markup mistake, a worked example and a short weekly routine.

Key takeaways

  • Job cost = loaded labor + parts + direct costs. Overhead is covered from gross profit, not hidden in the job.
  • Use a loaded labor rate, not the wage: payroll taxes, workers' comp, benefits and unbillable hours push it well above pay.
  • Margin and markup are different. A 50% markup is only a 33% margin. Mixing them up underprices every job.
  • Published targets vary. Vendor and industry sources put residential service gross margins at roughly 50–65%, installs lower.
  • Know your overhead per billable hour so you can see the minimum gross profit a job must earn.
  • Review last week's jobs every week, sorted by margin. Fix the bottom five, not the average.

What is job costing?

Job costing tracks the costs of each job separately so you can see its profit. You compare what the job earned with what it took: the hours your people spent on it, the parts that went into it, and anything else you bought just for that job.

It is different from your profit and loss statement, which lumps every job together. A P&L can look fine while a third of your jobs lose money and the rest carry them.

Cost typeExamplesWhere it goes
Direct laborTech and helper hours on the job, including drive time to itJob cost
Parts and materialsEquipment, fittings, refrigerant, wire, at your costJob cost
Other direct costsPermits, disposal fees, equipment rental, subcontractorsJob cost
OverheadOffice staff, rent, insurance, software, marketing, trucks when idleCovered by gross profit

How do you calculate a loaded labor rate?

The wage is only the start. Add everything you pay because that person works for you, then divide by the hours they actually spend on billable jobs.

  1. Start with yearly wages. $30 an hour × 2,080 paid hours = $62,400.
  2. Add employer payroll taxes. Social Security and Medicare alone are 7.65% of wages, per the IRS: $4,774. Add federal and state unemployment for your state.
  3. Add workers' comp, health insurance, retirement and paid time off that you pay. Say $12,000 together; use your real numbers.
  4. Total yearly cost: about $79,200.
  5. Divide by billable hours, not paid hours. Take out holidays, training, shop time and gaps between calls. If 1,500 of the 2,080 hours are on jobs, the loaded rate is $79,200 ÷ 1,500 = about $53 an hour.

That $30 tech costs you about $53 for every hour you can bill. For a sense of scale, BLS data for June 2026 show benefits (including legally required ones such as payroll taxes) at 30% of total compensation for private industry workers, which is about 43% on top of wages. Your number will differ, so work it out per tech or per pay level.

How should parts be costed?

  • Use what you paid, including freight and supply house fees, not the list price.
  • Count the small stuff. Fittings, tape, fasteners and refrigerant add up. Many shops add a flat consumables charge per job rather than counting every screw.
  • Include returns and warranty swaps on the job that caused them, so a callback shows up as a cost.
  • Update costs when suppliers change prices, or your price book drifts below cost.

How do you allocate overhead?

Keep overhead out of the job cost itself, but know how much each billable hour must cover. Add up a year of overhead (office wages, rent, insurance, phones, software, marketing, truck payments and fuel not tied to a job, accounting) and divide by your team's total billable hours.

Example: $240,000 of overhead ÷ 6,000 billable hours (four techs at 1,500 each) = $40 an hour. Every billable hour needs to earn at least $40 of gross profit before the business makes a cent. A job whose gross profit per labor hour is below that loses money even if its margin looks fine.

Margin vs markup: the table every shop should print

Markup is profit as a share of cost. Margin is profit as a share of price. People say “50%” and mean either one. If you want a 50% margin and add a 50% markup, you end up with 33%.

Markup on costPrice for $100 of costGross margin
25%$12520%
43%$14330%
50%$15033%
67%$16740%
100%$20050%
150%$25060%
186%$28665%

The formulas: margin = markup ÷ (1 + markup), and price = cost ÷ (1 − target margin). To hit a 60% margin on $400 of cost, the price is $400 ÷ 0.40 = $1,000. The free markup vs margin calculator does the conversion both ways and flags a price that's below cost.

A worked example: one repair job

LineAmount
Price billed (flat rate repair)$850
Labor: 2.5 hours incl. drive × $53 loaded rate$132.50
Parts at cost (capacitor, contactor, consumables)$95
Other direct costs$0
Total job cost$227.50
Gross profit$622.50
Gross margin ($622.50 ÷ $850)73%
Gross profit per labor hour ($622.50 ÷ 2.5)$249

That job clears the $40-an-hour overhead line easily. Now take a water heater install billed at $2,400 with $1,150 of equipment and parts, two techs for 5 hours each ($530 of labor) and a $40 disposal fee. Job cost is $1,720, gross profit $680, gross margin 28%, and gross profit per labor hour $68. It covers overhead, barely. One callback and it doesn't. That's the job to reprice.

What gross margin should a contractor target?

There's no government benchmark for this, and the published numbers come mostly from software vendors, agencies and consultants. Treat them as ranges:

  • One field service software vendor tells HVAC shops to aim for an average gross margin of 50–55% across services, with 55–65% for service work, and puts typical net margins for residential HVAC service and replacement at 10–20%.
  • A contractor marketing agency's roundup of industry voices gives 50–65% gross for residential service and 40–55% for installs, and quotes one contractor who prices service at 65% gross and installs at 50%.

The pattern is consistent: service and repair carry higher margins than installs, because installs include expensive equipment. Set your own targets from your overhead per hour: a target is good enough when the jobs that hit it cover overhead and leave the net profit you want.

If you're deciding between flat rate and hourly billing, see flat rate vs time and materials.

A 20-minute weekly job costing review

  1. Pull last week's completed jobs with price, labor hours, parts cost and margin.
  2. Sort by gross margin, lowest first. Look at the bottom five.
  3. For each, find the cause: hours over estimate, a parts price change, a discount, a callback, a missing line on the invoice.
  4. Check gross profit per labor hour against your overhead per hour.
  5. Fix one thing: update a price book item, change a flat rate, or talk to a tech about time on site.
  6. Note the averages by job type and by tech, and compare with last month.

Don't use it to blame techs. The point is to find prices and processes that need fixing. A tech who is slow on one job type may need training or a better checklist.

Where CrewRobin fits

In CrewRobin, owners and managers see job costing on each job: labor and parts cost, and profit compared with a target margin you set. Prices come from the price book (labor, parts and flat-rate services), so a supplier price change can be fixed once and flows into new quotes.

Frequently asked questions

What is a good profit margin per job for contractors?

Vendor and industry sources put residential HVAC service gross margins at roughly 50–65% and installs at roughly 40–55%. Net margins after overhead are often cited at 10–20% for residential service and replacement.

How do you calculate job costing?

Add the job's loaded labor cost, parts at your cost and any direct costs like permits or disposal. Subtract that from the price to get gross profit, then divide by the price for gross margin.

What is the difference between margin and markup?

Markup is profit divided by cost; margin is profit divided by price. A 100% markup equals a 50% margin, and a 50% markup equals only a 33% margin.

How do I calculate a loaded labor rate?

Add a tech's yearly wages, employer payroll taxes, workers' comp, benefits and paid time off, then divide by the hours they spend on billable jobs, not the hours you pay.

Should overhead be included in job costing?

Keep overhead out of each job's direct cost, but work out overhead per billable hour and check that every job's gross profit per labor hour covers it.

Put it to work this week

See labor, parts and profit on every job next to the margin you're aiming for. CrewRobin is free until your first 10 booked jobs, no card up front. Start free or see pricing.

Sources

Figures from outside CrewRobin were checked against these pages in October 2026. Most industry benchmarks come from vendors and agencies, so treat them as ranges, not rules.

Share LinkedIn X Email