Business12 min readSeptember 18, 2024

Pricing HVAC Service Calls

Most techs pick a service call price by copying the shop down the road. That is how you end up busy and broke. Here is how to build a number from the ground up — one that covers your true cost per hour and still leaves a fair margin.

COSTOVERHEADMARGIN=SERVICE CALL$289diagnostic + repaircovers cost · earns margin

Talk through your pricing in the field

Ask Ventora's AI assistant to sanity-check a labor rate, a parts markup, or a flat-rate build-up while you're standing at the truck.

Try the AI Assistant

The three layers of every price

A service call price is not one number — it is three stacked on top of each other. Miss any layer and the price looks fine on the invoice but bleeds you dry over a year.

  • Direct cost — the wages you pay the tech for the hours on that job, plus the parts and materials that go into it. Money that only exists because the job exists.
  • Overhead — everything the business spends whether the phone rings or not: the truck, insurance, software, the office, fuel, the owner's time quoting and dispatching. This has to be spread across your billable hours.
  • Margin — what is left for profit after cost and overhead are covered. This is not greed; it is the money that buys the next truck, survives a slow winter, and pays for warranty callbacks.

Price = cost + overhead + margin. The whole job below is figuring out honest numbers for each layer and then packaging them into something a homeowner will actually say yes to.

Billable hours: the number nobody tracks

Here is the mistake that sinks pricing: assuming a tech who is paid for 2,080 hours a year (40 × 52) actually bills 2,080 hours. They don't. Not even close. You pay for that whole year, but only a slice of it lands on an invoice.

Subtract vacation, holidays, and sick time. Subtract windshield time between calls, shop time, restocking the truck, training, warranty callbacks you eat, and the days the schedule is just thin. In most residential service shops a full-time tech bills somewhere between 1,200 and 1,500 hours a year — a billable efficiency of roughly 60–70%.

Why this matters: if you spread your costs over 2,080 hours but only bill 1,400, you have under-priced every single call by about a third. That gap is the difference between a shop that grows and one that quietly runs on the owner's credit card.

Calculating your true cost per billable hour

Your break-even labor rate is the point where an hour of work exactly covers what that hour costs you — wages plus a fair share of overhead. Everything you charge above it is margin.

Break-even hourly rate

Break-even $/hr = (Loaded labor + Annual overhead) ÷ Billable hours
  • Loaded labor = base wage + payroll taxes, workers' comp, and benefits (typically 1.25–1.4× the base wage)
  • Annual overhead = truck, fuel, insurance, software, phone, office, advertising, admin time
  • Billable hours = the realistic 1,200–1,500, not 2,080

Notice there is no profit in that formula yet. Break-even is the floor you must never price below. Your selling rate is break-even plus the margin you decide the business needs.

Worked example: a one-truck shop

The setup

You run one truck. Your tech earns $30/hr. You want to know the labor rate to charge and where a typical repair call lands.

Step 1 — Load the wage

$30/hr × 1.35 (taxes, comp, benefits) = $40.50/hr loaded. Over 2,080 paid hours that is $84,240 in labor cost for the year.

Step 2 — Total the overhead

Truck payment, fuel, and maintenance $18k; insurance and licensing $9k; software, phone, and dispatch $4k; advertising $8k; office and admin $15k = $54,000/yr.

Step 3 — Pick realistic billable hours

Paid 2,080, but after PTO, drive time, and slow days you bill 1,400 hours (67% efficiency).

Step 4 — Break-even per billable hour

($84,240 + $54,000) ÷ 1,400 = $138,240 ÷ 1,400 = $98.74/hr

Step 5 — Add margin to get the selling rate

Target 20% net margin → $98.74 ÷ (1 − 0.20) = $123.43/hr. Round to a clean $125/hr labor rate.

What a real call looks like

A blower-motor replacement takes about 1.5 hours on site. Labor at $125 = $187.50. Add a $189 diagnostic/trip fee, a $220 motor marked up to $385, and you invoice roughly $760. Your direct cost was about $280, so the call clears its overhead share and lands the margin you priced for.

The $85/hr trap

If you had "matched the market" at $85/hr because that felt competitive, you would be billing below your $98.74 break-even — losing about $14 on every labor hour before a single part. Busy all summer, underwater by Christmas.

Ventora — Your AI HVAC Companion

Run pricing math, look up code, and troubleshoot from the truck. The AI HVAC assistant in your pocket. Free on iOS.

Download Free

Setting the diagnostic / trip fee

The diagnostic fee is not a "gotcha." It pays for the single most expensive thing you do: showing up. Getting a truck, tools, and a trained tech to the door costs real money before anyone touches the equipment, and that first half hour of driving and setup is rarely captured anywhere else.

A sound diagnostic fee covers your drive time plus the first 30–60 minutes of troubleshooting. Most residential shops land between $89 and $199, depending on market and drive distances. Two rules keep it honest:

  • Charge it every time. Waiving it "if they approve the repair" trains customers to expect free trips and buries your travel cost.
  • Quote it on the phone. No surprises at the door means fewer arguments and better-qualified calls.

Field tip: price the diagnostic to stand on its own, then present the repair as a separate flat-rate number. Bundling them hides your value and makes the total feel arbitrary.

Marking up parts and materials

Parts markup is not free money — it pays for the truck stock you carry, the counter runs, warranty handling, and the working capital tied up in inventory. A common residential structure marks smaller parts up more aggressively and larger items less:

Your costTypical markupExample: $ cost → price
Under $25 (capacitor, fuse)3–5×$12 → $48
$25–$100 (contactor, igniter)2.5–3×$45 → $125
$100–$400 (motor, board)1.7–2.2×$220 → $385
$400+ (compressor, coil)1.4–1.7×$900 → $1,350

The reason for the sliding scale is simple: a $12 capacitor still costs the same truck stock, paperwork, and warranty exposure as a $60 one, so it needs a bigger multiplier to carry its weight. A $900 compressor priced at 4× would just lose you the job.

Margin vs. markup (and why techs mix them up)

These two words get used interchangeably on job sites, and it costs shops real money. They are not the same thing.

Markup

(Price − Cost) ÷ Cost

Measured against your cost. A part that costs $100 sold for $150 is a 50% markup.

Margin

(Price − Cost) ÷ Price

Measured against your selling price. That same job is only a 33% margin.

The trap: a tech who thinks "I marked it up 30%, so I'm making 30%" is actually earning about a 23% margin. To net a 30% margin you need roughly a 43% markup. When you set targets, decide the margin you need first, then back into the markup — never the other way around.

A healthy residential service shop generally aims for a gross margin around 50–60% on combined labor and materials, which leaves room for a net profit of 8–15% after all overhead. If your gross margin is stuck in the 30s, the price is broken, not the effort.

After-hours and overtime rates

Emergency and after-hours work costs you more, so it should price for more. You are paying the tech overtime, pulling them away from their evening, and the parts houses are closed. A flat premium keeps it clean:

  • Evenings and Saturdays: 1.5× your standard labor rate, plus a higher diagnostic fee.
  • Sundays, holidays, and overnight: 2× labor, with the trip fee bumped to cover the callout.
  • Quote the premium up front when the call comes in at 9 p.m. — a customer with no heat will agree, and it prevents the invoice fight later.

Do not run after-hours work at your day rate as a "favor." Your loaded labor cost genuinely went up, and pricing it at the standard rate means those calls lose money on top of costing you sleep.

Build your own number in six steps

  1. Load each tech's wage by 1.25–1.4× for taxes, comp, and benefits.
  2. Add up every dollar of annual overhead — truck, insurance, software, office, ads.
  3. Find realistic billable hours (usually 1,200–1,500 per full-time tech).
  4. Divide loaded labor + overhead by billable hours to get break-even $/hr.
  5. Add your target margin to set the selling labor rate; round to a clean number.
  6. Layer on a stand-alone diagnostic fee and a sliding parts markup.
★ Free on the App Store

Price with confidence, from the truck

Ventora is the AI HVAC assistant in your pocket — run labor-rate and margin math, check code, size equipment, and troubleshoot on site. Start with a 7-day free trial.

Related Articles