"> Job Costing for Contractors: Price Jobs to Hit Margin

Job Costing for Home Service Contractors: How to Price Every Job to Hit Your Margin

Most home service owners price jobs on instinct and a gut-feel markup, then wonder at the end of the year why the P&L doesn’t show the profit they thought they were making. The gap almost always traces back to one discipline they never built: real job costing.

Job costing is simply the practice of building up the true cost of a job — materials, labor, commissions, and any subcontracted work — before you put a price on it, then marking that cost up to land on the margin you actually need. Done right, it’s the difference between a shop that grows and one that runs hard all year and ends up flat. After reviewing several hundred contractor P&Ls across HVAC, plumbing, electrical, and roofing, the pattern is consistent: the owners who cost jobs deliberately make money on purpose, and the ones who don’t make it by accident, when they make it at all.

This guide walks through how job costing for contractors actually works in the trades — the cost inputs, how labor and compensation models change the math, how the numbers differ by trade, and the one calculation mistake that quietly wrecks margins.

What is job costing?

At its core, job costing answers a single question: what does it really cost us to complete this job, fully loaded, before we add any profit?

You build that number from the bottom up:

  1. Materials — the equipment and parts that go into the job.
  2. Labor — the cost of the people doing the work, fully burdened.
  3. Commissions — what you pay to sell and, in some models, to complete the work.
  4. Subcontractors — any specialized work you don’t perform in-house.

Add those together and you have your fully-loaded job cost. Then you apply a markup to reach a price that delivers your target gross margin. That last step is where most owners go wrong, and we’ll come back to it.

The reason this matters: a price that feels high can still lose you money once you account for burdened labor and commissions, and a price that feels competitive can be perfectly healthy if your cost structure is tight. You can’t know which is which without costing the job.

The two cost drivers that matter most: materials and labor

Across every trade, two inputs dominate the cost of a job: materials and labor. Get those two right and you’re 90% of the way to an accurate number.

Materials

Materials are the more straightforward of the two — you know the cost of the equipment and parts, and you mark them up. What varies enormously is how material-heavy each trade is, and that single fact reshapes the entire margin profile of the business (more on the by-trade differences below).

Labor — and why it has to be fully burdened

Labor is where most costing falls apart, because owners cost labor at the technician’s wage rate. That number is always too low.

For the W-2 trades — HVAC, plumbing, and electrical — labor has to be costed fully burdened. The burdened cost of an hour of labor isn’t the hourly wage; it’s the wage plus payroll taxes, workers’ compensation, benefits, vehicle and fuel, and the non-billable time you’re still paying for (drive time, shop time, training). This isn’t a rounding error: U.S. Bureau of Labor Statistics data on employer costs for employee compensation shows that wages and salaries make up only about 70% of total compensation cost, with benefits and taxes making up the rest. A technician on a $30/hour wage can easily cost you $40-$45 fully loaded once all of that is layered in. If you’re estimating labor at $30, every job is underpriced before you even start.

Roofing is the exception. Roofing crews are usually 1099 subcontractors rather than W-2 employees, so there’s no burden to layer on — you’re paying a contracted rate, and that rate is your labor cost. We’ll treat roofing labor as subcontracted work rather than burdened wages.

Compensation models change the labor math

How you pay your people doesn’t just affect morale and retention — it directly changes how labor flows into your job cost. There are three common models in the trades:

Hourly for the work. The technician is paid an hourly wage to perform the job. This is the model where full labor burden matters most, because that hourly cost is fixed whether the job is profitable or not.

Commission on the sale. A salesperson — often separate from the technician, especially in HVAC, where a comfort advisor sells the system and an install crew puts it in — earns a percentage of the sale. A common structure is around 10% to the person who sells the job.

Full commission — sell and complete. The same person both sells and performs the work, earning commission on the whole thing. In a split structure you’ll often see something like 10% for the sale and 10% for completion, so a tech who does both can earn roughly 20% of the job.

Why full commission is usually the goal

If you can build toward a full-commission model, it tends to be the healthiest structure for the business — but only under one condition.

The advantage is that your largest cost becomes variable instead of fixed. When a tech is on full commission, your labor expense moves with revenue: a slow week costs you less, and a big week pays for itself. You’re no longer carrying a fixed hourly payroll regardless of how much work comes through the door. At the same time, strong techs on full commission usually out-earn what they’d make hourly, so it’s a genuine win-win — your margins get more predictable and your best people make more money.

The catch is volume. Full commission only works if you can keep your techs busy. A commission tech sitting idle makes nothing and will leave; a commission tech with a full schedule makes great money and stays. So the model is a function of your company’s ability to generate consistent demand. If your lead flow is inconsistent, a pure commission model will cost you your best people before it helps your margins. Build toward it as your demand becomes reliable. We go deeper on this in our guide to commission vs hourly pay for home service techs.

Don’t forget subcontractors

Some trades regularly hand off pieces of a job to specialists, and that subcontracted work is a real cost input that has to be built into the job cost.

Plumbing is the clearest example: excavation, sewer line work, and trenching are often subcontracted out rather than performed in-house. If you’re costing a sewer replacement and you leave out the excavation sub, your “cost” is fiction. Whatever you pay the sub flows straight into the job cost the same way materials and labor do, and it gets marked up like everything else.

How the numbers differ by trade

The cost structure — and therefore the achievable margin — varies meaningfully across the four trades, and most of that variation comes down to how material-heavy the work is.

HVAC and plumbing tend to run materials in the range of 20-30% of revenue. Equipment and parts are a meaningful chunk of the job, but labor and the way you price it still drive the outcome.

Electrical is the least material-heavy of the group. Because materials are a smaller share of the job, electrical work can carry the highest margins — a well-run electrical shop can reach roughly 60% gross margin on a fully-loaded basis.

Roofing sits at the other end. Roofing is the most material-intensive, with materials often around 35% of revenue, and because the labor is typically subcontracted on top of that, fully-loaded margins tend to land lower — generally in the 35-45% range.

These aren’t targets to copy blindly; they’re the structural reality of each trade. Knowing where your trade sits tells you how much room you actually have, and where your pricing has to be sharpest. (Each of these is broken down further in our trade-specific guides for HVAC, plumbing, electrical, and roofing.)

Service vs. install: where the margin actually comes from

For HVAC and plumbing especially, there’s a second layer to this that the trade-wide averages hide: the difference between service work and installs. They have very different cost structures, and treating them as one blended number is how owners misread their own business.

Installs are the big-ticket, material-heavy jobs — a full system changeout, a sewer line replacement, a re-pipe. The dollar amounts are large and they look impressive on a revenue report, but because so much of the ticket is equipment and materials, the margin on install work is structurally lower. You’re moving a lot of revenue at a thinner percentage.

Service work is the opposite. A diagnostic, a repair, a smaller fix — lower ticket, far less material, and the value is in the expertise and the speed, not the parts. That’s where the high margins live. A well-run shop generally makes its margin back on service work, using the higher-margin service calls to carry the lower-margin install volume.

The practical implication for job costing: don’t evaluate installs and service against the same margin target, and don’t let a month full of big installs fool you into thinking the business is healthy if your high-margin service work has dried up. Cost and price them as the distinct profit centers they are. The healthiest HVAC and plumbing shops know exactly what each side of the house is contributing, and they protect their service margins because that’s the engine.

This is really the bigger principle behind all of job costing: you can’t plan on hitting a company-wide average — you have to manage margin by business unit. Install and service are different units. Residential and commercial are different units. Each department has its own cost structure and its own realistic margin, and a single blended number averages away the very information you need to run the business. When you cost and track by unit, you can see which parts of the shop are carrying the company and which are quietly dragging it down — and you can price each one to the margin it can actually support instead of to a fictional average that fits none of them.

The mistake that quietly wrecks margins: markup is not margin

Here is the single most expensive misunderstanding in contractor pricing, and it’s worth slowing down for.

If your materials and labor cost $1,000 and you “add 50%,” you charge $1,500 — and many owners will tell you they’re making a 50% margin on that job. They’re not. They’re making a $500 gross profit on $1,500 of revenue, which is a 33% gross margin, not 50%.

The reason is that gross margin is calculated as gross profit divided by revenue, not as a markup on cost. Those are two different denominators, and confusing them means you’re systematically underpricing every job while believing you’re on target.

To actually hit a target gross margin, you don’t add the percentage to cost — you divide cost by one minus the target. To hit a true 50% margin on a $1,000 cost, you divide by (1 − 0.50): $1,000 ÷ 0.50 = a $2,000 price, not $1,500. To hit 40%, you divide by 0.60. The gap between “add 50%” and “price for a 50% margin” is real money on every single ticket, compounded across every job you run all year.

We cover this math in more depth, with trade-specific benchmarks, in our guides on HVAC profit margins and plumbing profit margins.

A worked example

Let’s cost a residential HVAC system replacement end to end. (Numbers are illustrative — your actual costs will differ — but the structure is exactly how it should be built.)

Start with the hard costs, the ones that don’t move with the price:

Cost input Amount
Equipment and materials (condenser, air handler, line set, fittings) $4,000
Burdened install labor (16 hours at $42/hr fully loaded) $672
Hard cost $4,672

Now layer in commission and margin — and this is the part that trips people up. Say this shop pays a 10% sales commission and wants a 50% gross margin. Both of those are percentages of the final price, not of cost. Together they claim 60% of the price, which leaves the remaining 40% to cover your hard cost. So you solve for price by dividing the hard cost by that 40%:

$4,672 ÷ 0.40 = $11,680 price

At an $11,680 price, every piece ties out cleanly:

Notice what you can’t do: you can’t just divide the $4,672 hard cost by 0.50, because that ignores the commission, and the commission grows with the price. Anything that’s a percentage of the sale — commission, financing fees, credit card fees — has to come out of the price alongside your margin, not get buried in the cost.

And as covered above, never get to your price by adding a percentage to cost. If this owner had used the “add 50% to cost” shortcut on the $4,672 hard cost, they’d have priced the job around $7,000 — thousands below the $11,680 it actually needed to clear a true 50% margin, and they’d never have seen the gap.

Gross profit is not the finish line: where overhead fits

One more distinction that trips up owners: the margin you build into a job is gross margin, and gross profit is not the same as money in your pocket.

Job costing prices the work at the gross level — materials, labor, commissions, subs, then markup. What it deliberately does not include is your overhead: the office staff, the building, the trucks, the software, the marketing, the back-office salaries. Those are real costs, and they have to be covered before any of that gross profit becomes net profit.

Here’s the critical principle, and it’s one a lot of well-meaning advice gets wrong: do not blend overhead into your job-level pricing. Overhead is a function of your total job volume, not of any individual job — it doesn’t change whether you run 80 jobs this month or 120. If you try to “allocate” a slice of overhead into every job’s cost, you’ll distort your pricing as your volume moves around, and you’ll never know whether the job itself is priced correctly.

The cleaner discipline is to keep them separate. Price each job to hit a healthy gross margin. Then manage overhead as its own line, as a percentage of total revenue, and make sure your gross profit dollars across all your jobs comfortably cover it with net profit left over. When a shop is underwater despite “good margins,” it’s almost always one of two things: the jobs aren’t actually priced to the gross margin the owner thinks they are (the markup-vs-margin error), or overhead has crept up as a share of revenue. Keeping the two cleanly separated is the only way to diagnose which.

For a deeper treatment of overhead benchmarks and what a clean P&L looks like, see our guide on reading your home services P&L like a buyer.

And it all starts with actually knowing your numbers. You can’t cost a job accurately on books that are months behind or miscategorized, which is why disciplined job costing begins with clean, current bookkeeping built for your trade. Get the books right first, and the costing has something solid to stand on.

It starts with knowing your numbers

Accurate job costing runs on clean, current books. See how we handle bookkeeping built for your trade:

HVAC →Plumbing →Electrical →Roofing →

The bottom line

Job costing isn’t accounting busywork — it’s the operating discipline that decides whether your hard work turns into profit. Build every job from the bottom up: materials, fully-burdened labor, commissions, and subs. Choose a compensation model that fits your volume, and build toward variable, commission-based labor as your demand becomes reliable. Price to a true gross margin using the right math, not a markup shortcut. And keep overhead out of your job pricing so you can see clearly whether each job — and the business as a whole — is actually making money.

Most owners we work with were leaving real margin on the table simply because no one ever showed them how the pieces fit together. Done consistently, job costing for contractors turns pricing from a guess into a system — the pricing decisions get easier and the year-end number stops being a surprise.

Raymond Gong
About the Author
Raymond Gong

Raymond Gong is the founder and managing partner of Profitability Partners, a fractional CFO and bookkeeping firm serving small to mid-sized businesses nationwide. With expertise spanning financial reporting, cash flow management, tax planning, and ServiceTitan accounting integration, Raymond helps home services companies, startups, and growing businesses build the financial infrastructure they need to scale confidently. He specializes in translating complex financial data into clear, actionable insights — so owners can make smarter decisions about growth, profitability, and exit planning. Based in Tampa, FL, Raymond works with clients across HVAC, plumbing, electrical, and roofing to optimize their books, streamline reporting, and prepare for what's next.

Connect on LinkedIn

Raymond Gong

Raymond Gong is the founder and managing partner of Profitability Partners, a fractional CFO and bookkeeping firm serving small to mid-sized businesses nationwide. With expertise spanning financial reporting, cash flow management, tax planning, and ServiceTitan accounting integration, Raymond helps home services companies, startups, and growing businesses build the financial infrastructure they need to scale confidently. He specializes in translating complex financial data into clear, actionable insights — so owners can make smarter decisions about growth, profitability, and exit planning. Based in Tampa, FL, Raymond works with clients across HVAC, plumbing, electrical, and roofing to optimize their books, streamline reporting, and prepare for what's next.

See where your margins are leaking

Book a free consultation with a senior partner. We'll review your situation and tell you honestly if we can help.

Book Free Consultation →
Find Out What Your Margins Should Be →

One HVAC client went from 9% to 17% net margin — that’s +$7M in exit value.

Real client result — not a hypothetical

In a free 30-minute call, we’ll show you exactly where your margins are leaking — and what to fix first.

Your true margins, fully loaded — we calculate your real cost per job including labor burden, materials, and subcontractor costs, then benchmark against top performers so you see exactly where you’re leaving money
The dollar impact of each gap — we quantify what every margin leak and overhead inefficiency is actually costing you per month, so nothing stays hidden
The 3-5 highest-ROI fixes — ranked by impact, so you know exactly where to start
See What You’re Leaving on the Table Free · No obligation · Takes 30 minutes