HVAC
HVAC Job Costing Calculator
Total what a job actually cost: burdened labour, equipment, materials, travel and the overhead it consumed.
Result
Gross profit here is before overhead: rent, office wages, advertising, software and the owner's salary all still come out of it. A job at a healthy gross margin can still be unprofitable once its share of running the company is taken. The burdened rate is the number most contractors understate: costing a $28/hour technician at $28/hour ignores payroll tax, insurance and non-billable time, and understates a long job badly.
Open the HVAC invoicing demoWhat moves the number
- Every hour touched, including diagnosis, travel, commissioning and the return trip.
- Equipment and materials at landed cost.
- Vehicle cost attributed to the job rather than left in overhead.
Where this one goes wrong
Costing only the install day. The sales visit, the load calculation, the permit trip and the commissioning return are all cost, and a job costed on install day alone looks better than it was.
Questions
About this calculator
Do I need to cost every job?
No. Cost a representative sample across your mix and the pattern appears quickly. Costing everything becomes a project that gets abandoned.
How should the sales visit be treated?
As a cost of the jobs that were won, spread across them. Treating it as free makes every sold job look more profitable and hides what a low close rate costs.
What do I do with the findings?
Look for what the unprofitable jobs share. Usually a job type, a crew, a season or a customer, and each has a different remedy.
Put this calculator on your site
Free to embed. Paste this where you want it to appear. It stays up to date automatically because it loads from BDEVY.
Please keep the attribution line. It is the only thing we ask in return.
How to use this calculator
- Invoiced to the customer, before tax ($). Sales tax is collected for the state, not earned. Leave it out.
- Hours on site. Enter your own figure; the page starts at 2.
- Drive time, both ways. Enter your own figure; the page starts at 0.75.
- Technicians on the job. Enter your own figure; the page starts at 1.
- Burdened cost per technician hour ($). Wage plus payroll tax, workers' comp, insurance and paid time off, not the bare wage.
- Parts and equipment cost ($). What you paid, not what you charged.
The result updates as you type, so you can try a figure, see what it does to gross profit, and change it back. Nothing you enter is sent anywhere or saved.
A worked example
These are the figures the calculator opens with. Every number in the results column below is produced by the same calculation the page runs, so you can follow it through before putting your own figures in.
What goes in
| Input | Value |
|---|---|
| Invoiced to the customer, before tax | $618 |
| Hours on site | 2 |
| Drive time, both ways | 0.75 |
| Technicians on the job | 1 |
| Burdened cost per technician hour | $45 |
| Parts and equipment cost | $40 |
| Vehicle cost per hour | $12 |
| Permits, disposal, subcontractor | $0 |
What comes out
| Result | Value |
|---|---|
| Gross profit main result | $421.25 |
| Gross margin | 68.16% |
| Equivalent markup | 214.10% |
| Gross profit per on-site hour | $210.63 |
This call cost $196.75 to deliver and earned $421.25, a 68.16% gross margin, the same job as a 214.10% markup. The drive accounted for 21.73% of the cost.
How sensitive the answer is
Holding everything else steady and changing only invoiced to the customer, before tax, this is what happens to gross profit. It is worth knowing which of your inputs the answer actually hinges on, and which barely move it.
| Invoiced to the customer, before tax ($) | Gross profit |
|---|---|
| $309 | $112.25 |
| $464 | $267.25 |
| $618 example above | $421.25 |
| $927 | $730.25 |
| $1,236 | $1,039.25 |
Every other input is held at the example value while this one changes, which is not how a real job behaves. Treat it as a guide to which number matters most, not as five separate quotes.
What each figure means
- Invoiced to the customer, before tax ($)
- Sales tax is collected for the state, not earned. Leave it out.
- Hours on site
- A number, between 0 and 200, starting at 2.
- Drive time, both ways
- A number, between 0 and 100, starting at 0.75.
- Technicians on the job
- A number, between 0 and 20, starting at 1.
- Burdened cost per technician hour ($)
- Wage plus payroll tax, workers' comp, insurance and paid time off, not the bare wage.
- Parts and equipment cost ($)
- What you paid, not what you charged.
- Vehicle cost per hour ($)
- Fuel, maintenance, insurance and depreciation spread over billable hours.
- Permits, disposal, subcontractor ($)
- A money amount, starting at $0.
What the results tell you
| Result | What it is |
|---|---|
| Gross profit | The headline result. A money figure. |
| Gross margin | A percentage. |
| Equivalent markup | A percentage. |
| Gross profit per on-site hour | A money figure. |
Before you rely on this number
Sizing, capacity and load figures here are planning estimates. A real installation depends on the manufacturer's data for the specific equipment, the duct system it is going into, and a proper load calculation for the building. Use this to sanity-check a number or price a job, not to select equipment.
Keep going
Related calculators
HVAC Job Profit Calculator
See what one job leaves after labour, parts and the overhead it consumed, rather than what the invoice said.
Open calculatorHVAC Markup vs Margin Calculator
Convert between markup and margin so a target set in one is not applied as the other.
Open calculatorHVAC Invoice Calculator
Build an invoice total from parts, labour, tax and any discount, with the discount visible rather than buried.
Open calculatorJob costing that runs on every invoice, not one at a time
The BDEVY invoicing demo carries cost and price on every line, so the margin on a job is visible while it is being built and reportable across the whole book afterwards.