Watch the Money

HVAC Profit Margin Calculator: Know Your Real Numbers

Most HVAC owners can tell you last month's revenue. Very few can tell you last month's real profit per job. The margin looks fine until it doesn't.

Nirav Doshi· Owner, Temperature Pros Orlando · Founder, CDP· August 4, 2026· 9 min read
HVAC Profit Margin Calculator: Know Your Real Numbers

Most HVAC owners can tell you last month's revenue. Very few can tell you last month's real profit per job. The margin looks fine until it doesn't. A busy season with 300 service tickets can still produce a thin net margin when labor burden is undercounted, overhead isn't allocated per job, and a handful of underquoted tickets slip through unnoticed. This guide gives you the actual formulas and a working HVAC profit margin calculator framework to calculate your true margins, job by job and company-wide. By the end, you'll know exactly what each ticket costs you, what gross margin you're actually achieving, and where the quiet leaks are hiding.

Why your P&L doesn't show what you think it does

Most HVAC shops run at high revenue and wonder why cash is always tight. The answer is almost always margin erosion at the job level. When you quote from memory or habit instead of fully loaded costs, you're not pricing jobs, you're guessing. Each guess that lands 5, 10% too low feels minor. Multiplied across hundreds of tickets, it becomes a real dollar problem.

The hidden costs are the ones that don't show up as line items but still come out of profit. Material waste, drive time that isn't billed, callbacks, warranty work, and tool replacement all erode the number. A service call that looks like $350 in gross profit can shrink to $90 once you factor in the truck's fuel, the tech's windshield time, and the part that had to be exchanged. Callbacks alone can run $650 to $850 per visit when you account for all the absorbed costs. That's not a small leak.

The P&L shows you totals. It doesn't show you which job types are pulling the average down, which tech's route inefficiency is eating margin, or whether your install pricing model is working. That's job costing, and most shops don't do it.

Gross margin, net margin, and markup: get the definitions right first

Before you build any profit margin calculator for HVAC work, you need to get the vocabulary straight. Markup and margin are not the same thing, and confusing them is one of the most expensive mistakes in the trades.

Markup is calculated on cost. Margin is calculated on revenue. A 50% markup on a $200 part gets you to $300 in revenue and a 33% gross margin, not 50%. If you're aiming for a 40% gross margin but applying a 40% markup, you're falling short every time. The standard formulas:

  • Gross profit margin HVAC formula: (Revenue minus COGS) divided by Revenue, multiplied by 100
  • Net profit margin HVAC formula: (Revenue minus all expenses) divided by Revenue, multiplied by 100
  • Markup: (Selling price minus cost) divided by cost, multiplied by 100

Think in margin when setting your profit target. Use markup only as the math to get there. Understanding HVAC markup vs. margin is the distinction that changes how you build your price book.

2026 HVAC benchmarks: what healthy looks like by job type

A well-run HVAC company in 2026 should target 45, 55% gross margin at the company level and 8, 15% net margin. The real benchmarks live at the job type level, though, and they vary significantly. Service and repair calls should run 50, 65% gross. Maintenance agreements sit at 55, 70% gross when priced correctly. Residential installs and replacements run 15, 30% gross because equipment cost eats into the margin. These aren't aspirational numbers, they're the targets you use to test whether your current pricing is working.

How to calculate your true labor burden per technician hour

Base wage is not your labor cost. This is the mistake most shops make. Your actual cost per technician hour includes employer FICA, FUTA, SUTA, workers' compensation insurance, health insurance or benefits, and the cost of paid time off. When you quote labor using something close to base wage, you're building a pricing model on incomplete data.

Use this HVAC labor burden calculator formula: take annual base wages, add annual employer payroll taxes, workers' comp, benefits, and PTO cost, then divide by annual billable hours. A tech earning $30 per hour with $10 per hour in employer burden costs you $40 per hour fully loaded. That $10 difference compounds fast across a four-tech shop running 2,000 billable hours per year. Labor burden for HVAC techs typically adds 28, 40% on top of base wages, depending on your state, your workers' comp rate, and your benefits package.

Run this calculation for each tech on your payroll and use the result in every estimate. If you're using a rate that's even $5 per hour short of reality, the error is significant at volume.

Allocating overhead to every service ticket

Overhead for an HVAC business typically includes owner compensation, office staff wages, vehicles beyond direct job use, marketing, software subscriptions, insurance, facility costs, and utilities. Collectively, overhead runs 20, 35% of revenue for most shops. The problem is that most owners track overhead as a company-wide total and never allocate it down to the job level, so they have no idea whether a $480 service call is actually covering its share.

The simplest allocation method: take your total annual overhead and divide it by total annual billable technician hours. Add that result to your labor cost on every estimate. If your overhead runs $180,000 a year and you bill 3,000 technician hours, that's $60 in overhead per billable hour that every job needs to recover. Apply this number to a one-hour diagnostic call and suddenly that "quick job" looks very different in your margin calculation.

This single calculation changes how you price smaller jobs, the ones that feel fast and easy are often where margin disappears, because they carry full overhead exposure on a thin revenue ticket.

Three job costing walkthroughs

Service call: what a $350 ticket actually produces

Take a diagnostic and minor repair call. Revenue is $350. Direct materials come to $80. Burdened labor is 1.5 hours at $40 per hour, totaling $60. Overhead allocation runs $60 per billable hour, so 1.5 hours adds $90. Total direct costs plus overhead: $230. That leaves $120 in gross profit, roughly a 34% gross margin. That falls short of the 50, 65% benchmark for service work. The gap is usually explained by materials markup being too low, labor being underpriced, or the tech spending unbilled time on parts pickup before the call.

To hit the 50% gross margin target on this same call, revenue needs to be closer to $460, or direct costs need to come down. Neither happens accidentally. It requires a price floor built from the actual cost structure, not habit.

Equipment replacement and full installation: where margins compress

A $4,200 condenser replacement with $1,800 in equipment cost, $240 in burdened labor for three hours, and $180 in overhead leaves $1,980 in gross profit, or 47% gross margin. That's within the residential replacement benchmark range of 35, 48%, but it leaves little room for error. If equipment cost runs higher, the tech needs an extra hour, or a callback is required, that margin shrinks fast.

Full system installations require a completely different pricing model, not just higher dollar amounts. On a $9,500 full system install with $4,200 in equipment, $640 in labor for eight hours, and $480 in overhead, gross profit is $4,180, a 44% gross margin. That's solid, but it assumes correct material pricing, no callbacks, no subcontractor surprises, and proper overhead allocation. When installs are underpriced at the model level rather than the job level, the problem repeats across every ticket in that category.

Your HVAC profit margin calculator framework

The HVAC pricing worksheet structure you can use today

Every job you quote should run through the same six inputs. Set these up as your HVAC pricing worksheet, in a spreadsheet or on a printed form:

  • Billable revenue
  • Direct materials cost
  • Burdened labor cost, hours multiplied by your fully loaded rate
  • Overhead allocation, hours multiplied by your overhead rate per hour
  • Subcontractor or equipment costs
  • Resulting gross and net margin percentages

The goal is a minimum price floor per job category based on your actual cost structure, not industry averages. Build one version for service calls, one for maintenance visits, and one for installs. Set a floor for each. If a quote comes in below the floor for that category, you either reprice it or make a deliberate decision to accept a lower margin with full awareness of the trade-off. Most shops don't have this structure, they price based on what feels right and discover the margin problem in the quarterly review, if at all.

How automated monitoring catches what spreadsheets miss

A spreadsheet catches margin problems after the fact. The more dangerous scenario is quoting jobs incorrectly across a high volume of tickets and not identifying the pattern until months later. For shops running 20 to 50 service calls a week, a single mispriced job category can represent tens of thousands in annual margin loss before anyone notices the trend.

This is where automated job monitoring matters. Maximus monitors job-level pricing against your established cost structure and flags underquoted or mispriced jobs automatically, before the pattern compounds across hundreds of tickets. It integrates directly with Jobber, HCP, and ServiceTitan to pull job data in real time and surface margin leaks that spreadsheet reviews catch too late. For a $2M HVAC shop, catching a single misaligned install category early can recover that cost many times over.

Frequently asked questions about HVAC profit margin calculators

What is a good profit margin for an HVAC company?

A healthy HVAC company should target 45, 55% gross profit margin at the company level and 8, 15% net profit margin. Service calls should run 50, 65% gross margin; residential installs typically run 15, 30% gross because equipment cost is higher.

What's the difference between markup and margin in HVAC pricing?

Markup is calculated on cost; margin is calculated on revenue. A 50% markup on a $200 part produces a 33% gross margin, not 50%. If you're targeting a specific gross margin, calculate your markup from that target rather than using the same percentage for both.

How do I calculate fully burdened labor cost for HVAC technicians?

Add annual base wages, employer payroll taxes (FICA, FUTA, SUTA), workers' comp, health benefits, and PTO cost. Divide that total by annual billable hours. The result is your true cost per billable hour. For most HVAC shops, burdened labor runs 28, 40% above base wage.

How should overhead be allocated to individual HVAC jobs?

Divide your total annual overhead by total annual billable technician hours to get an overhead rate per hour. Add that rate to your labor cost on every estimate. This is the core of any HVAC job costing calculator and ensures every ticket, including short service calls, recovers its share of fixed costs.

Start with the real numbers

Knowing your real HVAC profit margins means running the full math: burdened labor, overhead per hour, material markups, and hidden service call costs, not just subtracting parts from revenue. The benchmarks exist. The formulas are straightforward. What most HVAC owners are missing is the habit of applying them consistently to every job type they quote, not just the large installs.

Start with your burdened labor rate. Layer in overhead allocation. Test your current prices against the HVAC profit margin calculator framework in this guide. If you're hitting 45, 55% gross margin across the company, you're in a healthy range. If you're not, you now know exactly where to look. The math doesn't lie, your pricing habits might.

Drafted with AI assistance. Edited and approved by Nirav Doshi.

Ask Maximus anything about your business.