In this post
# HVAC Markup vs Margin: How to Price Jobs Correctly
If a replacement job costs you $5,000 and you add a 40% markup, you have not made a 40% gross margin. You've made 28.6%.
That gap is where a lot of HVAC companies lose money without ever seeing it happen. The jobs sell. The trucks run. Revenue looks fine. And the profit that was supposed to be there at year end isn't, because every job was priced 11 points behind what the budget assumed.
This article is the math, a conversion chart you can print, and the specific places the confusion does damage.
The definitions, precisely
Markup is a percentage of what the job cost you.
Margin is a percentage of what you sold it for.
Same dollars of profit. Different denominator. That's the entire concept, and it's why the two numbers can never match above zero.
Work the $5,000 example:
Cost: $5,000.00
Markup 40%: $5,000 × 1.40 = $7,000.00 ← selling price
Gross profit: $7,000 − $5,000 = $2,000.00
Gross margin: $2,000 ÷ $7,000 = 28.57%
You marked up 40%. You kept 28.6%.
To actually keep 40%:
Price = Cost ÷ (1 − Target margin)
Price = $5,000 ÷ (1 − 0.40) = $5,000 ÷ 0.60 = $8,333.33
Gross profit: $3,333.33 → $3,333.33 ÷ $8,333.33 = 40.0% ✓
The difference between pricing that job at $7,000 and $8,333 is $1,333 of gross profit on one job.
The formulas
Price = Cost × (1 + Markup)
Price = Cost ÷ (1 − Margin)
Margin = (Price − Cost) ÷ Price
Markup = (Price − Cost) ÷ Cost
Markup needed to hit a target margin = Margin ÷ (1 − Margin)
Margin produced by a given markup = Markup ÷ (1 + Markup)
Only two of those need to be memorised: Price = Cost ÷ (1 − Margin) to set a price, and Margin ÷ (1 − Margin) to convert a target margin into a markup.
Conversion chart
Print this. Tape it inside a truck door.
If you know the margin you want
| Target margin | Markup to apply | Price on $5,000 cost | Gross profit |
|---|---|---|---|
| 20% | 25.0% | $6,250.00 | $1,250.00 |
| 25% | 33.3% | $6,666.67 | $1,666.67 |
| 30% | 42.9% | $7,142.86 | $2,142.86 |
| 35% | 53.8% | $7,692.31 | $2,692.31 |
| 40% | 66.7% | $8,333.33 | $3,333.33 |
| 45% | 81.8% | $9,090.91 | $4,090.91 |
| 50% | 100.0% | $10,000.00 | $5,000.00 |
| 55% | 122.2% | $11,111.11 | $6,111.11 |
| 60% | 150.0% | $12,500.00 | $7,500.00 |
If you know the markup you're using
| Markup applied | Margin you actually get | Price on $5,000 | Gross profit |
|---|---|---|---|
| 20% | 16.7% | $6,000.00 | $1,000.00 |
| 25% | 20.0% | $6,250.00 | $1,250.00 |
| 30% | 23.1% | $6,500.00 | $1,500.00 |
| 35% | 25.9% | $6,750.00 | $1,750.00 |
| 40% | 28.6% | $7,000.00 | $2,000.00 |
| 50% | 33.3% | $7,500.00 | $2,500.00 |
| 60% | 37.5% | $8,000.00 | $3,000.00 |
| 75% | 42.9% | $8,750.00 | $3,750.00 |
| 100% | 50.0% | $10,000.00 | $5,000.00 |
Notice the shape: at 20% the two numbers are close. At 50% margin you need to double your cost. The higher your target, the more expensive the confusion gets.
Open the calculator → Enter your cost and either a markup or a target margin. Get price, gross profit, true margin and equivalent markup instantly.
Where the confusion does real damage
1. The budget says one thing, the estimates do another
An owner sets a 45% gross margin target with the bookkeeper, then tells the sales team "use 45% markup." Every job then comes in at a 31.0% margin. The company hits its revenue number, misses its profit number by fourteen points, and spends the next quarter looking for the leak in operations. The leak was in the pricing instruction.
2. Salespeople and owners use different vocabulary
Comfort advisors who came up through the trade usually think in markup. Owners who read a P&L think in margin. When one says "we're at 40 on that job," they may be describing two different results $1,300 apart. Agreeing on a single vocabulary — and putting it in the software — ends the ambiguity.
3. Discounts are given against the wrong base
A salesperson knocking 10% off a price thinks they gave up 10%. On a job priced at 40% margin they gave up 25% of the gross profit.
Reference job costing $4,428.40, priced at a 40% margin:
| Discount | New price | Gross profit | New margin | Share of profit given away |
|---|---|---|---|---|
| None | $7,380.67 | $2,952.27 | 40.0% | — |
| 5% | $7,011.63 | $2,583.23 | 36.8% | 12.5% |
| 10% | $6,642.60 | $2,214.20 | 33.3% | 25.0% |
| 15% | $6,273.57 | $1,845.17 | 29.4% | 37.5% |
The rule of thumb worth internalising: at a 40% margin, every 1% you discount off the price wipes out 2.5% of the gross profit on that job.
4. "Matching a competitor" is priced blind
When a customer produces a competing bid $900 lower, the question isn't "can we drop $900." It's "what margin is left if we do." If you don't know your cost and margin live on screen, you're negotiating without knowing your own floor.
What margin should an HVAC company target?
Deliberately, this article gives you no single number, because there isn't one.
The target that's right for your company depends on:
- Your overhead structure. A company with a warehouse, six trucks and office staff needs a higher gross margin than an owner-operator to reach the same net.
- How you recover overhead. If overhead is baked into your labor rate, your job-level markup will be lower than a company using a whole-job markup — the same net profit, different-looking gross margin.
- Your job mix. Equipment-heavy replacement work and labor-heavy service work behave completely differently.
- Your market. New construction, retrofit and emergency replacement don't price the same.
Anyone who tells you "HVAC should be at X%" without asking about those four things is quoting a number they read somewhere.
The useful question isn't "what's the industry margin?" It's "what gross margin does my company need to cover overhead and leave the net profit I want?" That's answerable from your own P&L:
Required gross margin ≈ (Annual overhead + Target net profit) ÷ Annual revenue
Run it on last year's numbers. If your overhead was $340,000, you want $150,000 of net profit, and you did $1,400,000 in revenue, you need roughly a 35% gross margin — and if you're pricing at a 28.6% margin because someone said "40% markup," you're structurally short every single month.
Where the labor rate fits
Markup and margin sit on top of cost, so cost has to be right first. The most commonly wrong input is labor.
A $28/hr technician does not cost $28/hr. Add payroll taxes, workers' comp, liability insurance, PTO and benefits — a 25–35% burden is common — and that hour costs $35–$38. On a 16-hour job, using the wage instead of the burdened cost understates job cost by over $100 before overhead is even considered. Then your margin calculation runs on a cost that isn't real.
Get the cost right, then apply the margin. In that order.
Open the calculator → Build your burdened and billable labor rates.
A five-minute audit of your own pricing
- Pull your last ten sold jobs.
- For each, write down true job cost — equipment, materials, burdened labor, permits, subs.
- Write down the selling price.
- Calculate
(Price − Cost) ÷ Pricefor each. - Average them.
- Compare that average to the margin your budget assumes.
If step 5 is materially below step 6, you don't have a sales problem or an operations problem. You have a pricing formula problem, and it's the cheapest one on that list to fix.
Making the mistake structurally impossible
The reliable fix isn't training people to remember the difference. It's removing the opportunity to get it wrong: enter the margin you want, let the system solve for price, and show the resulting margin on screen while the estimate is being built — so it's visible before the estimate goes out, not in a report next quarter.
That, plus a discount floor that requires approval to go below, closes most of the leak.
How HVAC estimating software handles this →
Open the calculator → Run your own numbers.
Related
Want pricing rules your team can't accidentally override? Talk to BDEVY about your estimating setup →
hvac markup percentage gross margin hvac how to price hvac jobs