HVAC finance guide
v2026.08 · ~7 min read

HVAC gross margin: what it is, what’s healthy, and where it leaks.

Gross margin is one of the simplest numbers in an HVAC business — and one of the most often misread. It is whatever is left of a job’s revenue after you subtract the materials and the direct labor that produced it. No office rent, no software subscriptions, no truck depreciation. Just the money that flows out of the truck for parts and the technician hours that put them on site. Run that math across every invoice in a month, and you have the figure that tells you whether the business as a whole is making money on the work it sells — or merely filling the schedule with jobs that look busy but quietly lose dollars.

The contractors we talk to almost never set out to do that calculation, and the resulting band is far wider — and far lower — than most owners assume. If you’ve never seen your own number next to a benchmark for your shop size, a free Bleedwise diagnostic is the fastest way to find it.

What a “healthy” gross margin looks like in HVAC.

The HVAC trade does not run on a single gross-margin number — it runs on a band, and the band shifts with shop size and the cost of the local market. As a rule of thumb:

  • Small shop ($500K–$1M). Typically lands between 25% and 35%.
  • Mid-market ($1M–$5M). Usually pulls 28%–40%, with the upper end reserved for shops that combine disciplined service-mix and tight pricing.
  • Large shop ($5M–$10M). Frequently runs 32%–45%, the lift coming from procurement scale and a heavier commercial mix.

Those ranges come straight from the benchmarks Bleedwise uses to interpret every diagnostic, and they adjust by region: high-cost markets tend to compress them, lower-cost markets tend to expand them. The right way to read them is “good for you” — the band your own revenue, your own region, and your own service-mix put you inside — rather than a single number that has to be the same for every shop in every market.

The three things that drag HVAC gross margin down.

Three problems recur in shop after shop, and most contractors we’ve worked with are leaking margin to at least two of them. They are not subtle — the numbers are visible in the P&L — but they hide in plain sight because the reporting most accounting software generates rolls them up into one line.

1. Parts-heavy installs at flat pricing.

A new system is mostly equipment cost. When the price is set by what the last competitor quoted rather than by a markup applied to the current parts cost, every install in that shape eats margin in a way the technician never sees on the work order. The fix is straightforward — refresh unit pricing regularly, and stop quoting against competitors whose costs you do not know.

2. Warranty and callback cost buried in labor.

A failed startup, an extra trip for a refrigerant top-off, or a return visit to diagnose an airflow complaint shows up on the schedule as productive hours. It is the opposite — those hours were eaten recovering margin that was already booked. Track every warranty-related call separately, and you see the leak rather than absorbing it into next month’s labor line.

3. Under-utilized crews on small-ticket residential visits.

Sending two techs and a truck to a $175 service call that takes ninety minutes produces hours of paper revenue. Once direct labor and travel are subtracted, most of those calls either break even or quietly lose money. Either ticket those visits at a price that supports the crew, or cluster small-ticket work into routes that protect margin on the truck-hour.

How to find your own number.

The math itself runs in five minutes once you have the right export. Pull the last full month from your accounting system or field-service software — QuickBooks, ServiceTitan, Housecall Pro, or any other export that gives you monthly revenue and a job-level breakdown of materials and direct labor. Subtract materials and direct labor from revenue. Divide by revenue. That percentage is your gross margin for the month, and the trend across the last six to twelve months is the figure you actually want to be reading.

Bleedwise reads the same CSV your accountant opens and runs that calculation across every job, then benchmarks the result against the size and region of your shop. The output is a plain-English diagnostic that ranks what is leaking and what to do about it first. There is no consultant engagement and no sales call — you upload the file, and minutes later you see your number next to the band it should be in.

See your number

Stop guessing. Run the diagnostic in five minutes.

Upload a QuickBooks, ServiceTitan, or Housecall Pro export and Bleedwise runs the same calculation end-to-end. The first look is free — the rest of the report is yours once you keep an account.

What the report answers

— what your gross margin is today

— where it sits vs. the band for your shop size and region

— the three leaks most likely costing you money

— the one change that recovers the most margin first