Featured
- Get link
- X
- Other Apps
How Much Should I Charge for an HVAC Job? The Ten-Line Rate Math, Worked to the Cent
How Much Should I Charge for an HVAC Job? The Ten-Line Rate Math, Worked to the Cent
If you have typed "how much should I charge for an HVAC job" into a search bar, you are probably a certified technician about to go out on your own. You are excellent at the work. You have probably never priced it. So the hourly rate gets picked because it sounds fair, markups drift from quote to quote, an after-hours premium gets stacked twice, and revenue gets tracked while job cost does not. A busy month then leaves very little behind.
The honest answer to "how much should I charge" is a method, not a number. This post walks through one method end to end: build a labor rate from your own wage and overhead, run every job through the same ten lines, then check whether the truck breaks even.
Two framing notes before any figures. First, every number below is arithmetic at stated inputs. It is a demonstration, not an income claim and not a price list. Second, the examples are US-shaped: dollars, EPA 608, state licensing. Those rules vary by state and country, so verify them locally.
The rate build-up (the short answer)
Here is the whole chain, using an example wage of 38.00 an hour and an example overhead of 3,245.00 per truck per month. This is the kit's worked example, not a recommendation for your rate.
| Step | Working | Result (USD) |
|---|---|---|
| Payroll load | 38.00 × 22% | 8.36 |
| Loaded wage | 38.00 + 8.36 | 46.36 |
| Labor cost per month | 46.36 × 160 paid hours | 7,417.60 |
| Labor cost per billable hour | 7,417.60 ÷ 128 billable hours | 57.95 |
| Overhead per billable hour | 3,245.00 ÷ 128 | 25.35 |
| Cost per hour | 57.95 + 25.35 | 83.30 |
| Labor rate | 83.30 ÷ (1 − 0.20) | 104.13 |
The hook: 160 paid hours, 128 billable hours
You pay a technician for 160 hours a month, but you can only sell about 128 of them. The 32-hour gap is drive time, quoting and admin. If you price on paid hours while you sell billable hours, you quietly under-recover your labor cost on every job. That is the leak. Dividing by 128 instead of 160 closes it.
The 10-line job formula
Once you have a rate, every job runs through the same ten lines in the same order. Labor first, then materials with one markup, then the trip charge, then one premium line, then discounts, then the total, the job cost and the margin.
labor = round2(Labor Hours * labor_rate)
materials = round2(Material Cost * (1 + 0.35 * parts_flag + 0.30 * equip_flag))
trip = round2(65.00 + 2.25 * max(0, Miles - 15))
subtotal = round2(labor + materials + trip)
adjusted = round2(subtotal * (1 + 0.25 * after_hours_flag + 0.15 * holiday_flag))
discount = round2(0.10 * materials * first_time_flag)
agreement = round2(0.15 * labor * agreement_flag)
total = round2(adjusted - discount - agreement)
job_cost = round2(Labor Hours * 46.36 + Material Cost + 0.62 * Miles)
margin = round2(total - job_cost)
The order prevents the usual mistakes: markups apply once, the trip charge is never multiplied, and premiums sit on a single line so after-hours and holiday compose additively instead of stacking.
One job, stepped through: J-001, a weekday service call
A 1.5-hour furnace tune with 45.00 in parts, 12 miles from the shop, no premiums and no discounts.
| Line | Working | USD |
|---|---|---|
| Labor | 1.5 × 104.13 | 156.20 |
| Materials | 45.00 × 1.35 | 60.75 |
| Trip | 12 miles, inside the flat 15 | 65.00 |
| Subtotal and adjusted | 156.20 + 60.75 + 65.00, no premium | 281.95 |
| Total | no discounts apply | 281.95 |
| Job cost | 69.54 + 45.00 + 7.44 | 121.98 |
| Margin | 281.95 − 121.98 | 159.97 |
Five jobs, one formula
The same ten lines handle a tune-up, a first-time discount, an after-hours call, a changeout and a holiday emergency:
| Job | What it exercises | Total (USD) |
|---|---|---|
| J-001 | Weekday furnace tune and service call | 281.95 |
| J-002 | Capacitor replacement, first-time customer discount, 22 miles | 409.65 |
| J-003 | After-hours emergency, one premium | 1,180.49 |
| J-004 | Three-ton changeout, equipment markup, agreement credit | 8,850.90 |
| J-005 | Holiday emergency, both premiums on one line | 962.61 |
To be plain about it: these are worked examples that prove the formula works. They are not a price list. Your wage, overhead and local market will give you different numbers, and the point is that the method stays the same.
Does your truck break even?
Pricing each job is half of it. The other half is knowing where a month stops losing money. The kit runs one truck for one month at 128 billable hours as plain arithmetic:
| Line | USD |
|---|---|
| Total revenue | 22,201.12 |
| Total expenses | 16,530.60 |
| Net operating income | 5,670.52 |
| Margin | 25.54% |
The break-even line comes from the rate chain. Each billable hour contributes the labor rate minus the labor cost per hour (104.13 − 57.95 = 46.18). Divide the 3,245.00 overhead by that and you get 70.27 billable hours, or 54.90% of the 128. Below that, the truck loses money on labor alone.
That is a model month at example inputs. It is a method for finding your own number, not a forecast of what any truck will earn.
Maintenance agreements: revenue on a schedule, not profit
An agreement is a customer's yearly promise in exchange for a fixed price and first call. The example offer is two visits at 95.00, so 190.00 per system per year. The visits cost 142.72, which leaves a gross of 47.28 per system.
| Customers | Revenue (USD) | Cost (USD) | Gross (USD) |
|---|---|---|---|
| 50 systems | 9,500.00 | 7,136.00 | 2,364.00 |
Fifty agreements book 791.67 a month (9,500.00 ÷ 12) before a single repair call. The example renewal ladder uses a 0.88 renewal rate: 50 agreements, 44 retained, 16 new, 60 in total, or 11,400.00 a year. The renewal rate is a planning figure to replace with your own history.
The honest framing: this is revenue that arrives on a schedule. It is not profit and it is not a forecast.
Startup cost: 1 truck vs 5 trucks
The startup model has 18 line items: 9 base rows counted once and 9 per-truck rows multiplied by the number of trucks. Adding a truck multiplies your per-truck costs before it multiplies your revenue.
| Trucks | Low (USD) | High (USD) |
|---|---|---|
| 1 | 12,390.00 | 41,010.00 |
| 2 | 19,490.00 | 65,410.00 |
| 3 | 26,590.00 | 89,810.00 |
| 4 | 33,690.00 | 114,210.00 |
| 5 | 40,790.00 | 138,610.00 |
These are example bands. Replace every row with local quotes. The kit also lists six triggers to meet before buying truck two:
- Utilization: 70% of billable capacity or better for three straight months.
- Agreement base: at least 25 active maintenance agreements.
- Callback rate: under 5% of closed tickets.
- Parts stock: the truck carries 80% of the top 20 repair lines.
- Trained tech: one technician fully trained on your rate card and templates.
- Cash reserve: at least 6,000.00 in reserve after paying for the truck.
The estimate customers actually accept
A good rate is wasted if the paperwork is vague. A customer-facing estimate should carry:
- An estimate ID and a client ID, never renumbered or reused.
- A validity window (14 days in the kit), because material prices move.
- A written scope, including what is not included.
- Payment terms.
- A signature and a date.
For a changeout, present good, better and best options. The tiers differ in the equipment you order, never in how you calculate. The kit includes three paste-ready templates: a service call at 281.95, a changeout at 8,850.90 and an agreement quote at 190.00, each worked from the frozen jobs above.
What the kit actually is
We packaged this method as the HVAC Business Starter Kit. It is 17 plain files: 13 Markdown documents (12,840 words), 2 CSV files, one standard-library Python checker called self_qos.py and a license file. There are no accounts, no software and nothing to install.
- A startup cost model (CSV) with the 1-to-5 truck ladder.
- A pricing guide with the overhead table.
- An estimate templates pack.
- Five worked jobs, plus the one-truck month and break-even table.
- A maintenance-agreement model.
- A business plan template with every financial slot bracketed for you to fill.
- A 1-to-5 truck scaling checklist with the six second-truck triggers.
- Six operations SOPs.
- A job cost tracker (CSV).
- A 24-checkbox compliance and safety checklist, framed as verify-local.
- Marketing, residential-versus-commercial and sales-script playbooks.
- A 7-day launch plan.
A quality note, not a boast: an independent gate passed 77 checks plus 221 assertions and 221 crosschecks with zero defects, and self_qos.py prints SELF-QOS PASS lines when you run it on the untouched kit. After you edit the startup CSV with your own costs, the ladder line will report FAIL. That is the check working, because your totals now differ from the example.
The license is personal use, no resale: one purchaser, their own business.
Market evidence, honestly limited
Our own research on 2026-11-04 found no rated paid all-in-one HVAC business kit on Gumroad. Single documents exist, such as an estimate spreadsheet, prompt packs and contract templates, so the wedge is the bundle plus the worked numbers, not any single template.
We also ran 9 autocomplete seeds, which returned 67 completions, and all 67 were document or startup intent. That is intent density, not search volume, and we are not implying volume. We have no Reddit market evidence this cycle, so we are not citing any.
The cold season is arriving in the northern hemisphere, so pricing before peak demand is timely. Treat that as a tailwind, not a guarantee.
Who this is NOT for
- Anyone seeking an income guarantee or a business opportunity. The kit's own README says it plainly: "This kit is business-operations documentation, not a guarantee of income."
- Anyone wanting licensing, legal, permit or EPA 608 advice. Verify those locally.
- Operators who already have working numbers.
- Window-shoppers who will not run the arithmetic with their own inputs.
- Anyone who wants the example figures taken as a price list. As the README puts it: "Prices in this kit are example figures - verify them in your local market."
Disclosure and the product page
Disclosure: this post links to a product we made. If you buy through it, we may earn a commission at no extra cost to you.
Product page: HVAC Business Starter Kit on Gumroad.
Get the kit
The kit is listed at a $1 intro price at the time of writing — we confirmed that on 2026-11-04 against the live page, where both the JSON-LD and the meta price showed 1.0. It sits on a price ladder, so the price may step up as sales accrue, and we cannot promise it stays at $1.
Get the HVAC Business Starter Kit on Gumroad.
What it gives you is the pricing and operations paperwork of a first owner-operator year — a labor rate you can defend, one job formula, estimates your customer signs, a startup model and a seven-day launch plan — in plain files that stay on your device. All it gives you, and all it claims to.
Wrapping up
The answer to "how much should I charge for an HVAC job" is to build your rate from your own wage, payroll load, billable hours and overhead, then run every job through the same ten lines. Check the result against your break-even line each month, and replace every example figure here with your own.
Corrections and questions are welcome. If we got a fact wrong or a convention is missing something you use, write to nandminc2020@gmail.com and we will fix it.
Keep reading
- Get link
- X
- Other Apps
Popular Posts
Best AI Video Generators in 2026: Free and Paid Tools Compared
- Get link
- X
- Other Apps
How to Use Gemini CLI in 2026: Install It, Wire It Up, and Ship Your First Edits
- Get link
- X
- Other Apps
Comments
Post a Comment