TemplateLast reviewed November 7, 2026

HVAC Bid Template (Free .xlsx Bid Calculator)

Free HVAC bid template: a macro-free .xlsx calculator that turns equipment, labor by trade, materials, permits and subs into a bid at your target margin.

Two mistakes can thin a commercial HVAC bid without anyone noticing: a cost that never made it onto the sheet, and a markup applied as if it were a margin. Our HVAC bid template is a small bid calculator built to catch both. You list the job line by line, it adds overhead and contingency, and it turns total cost into a price at the margin you choose. It also shows what margin is left at the price you actually plan to send.

Download the HVAC bid template. It’s a plain .xlsx file with no macros and no sign-up. Replace the sample job with yours and every total recalculates.

Video walkthrough

This short captioned walkthrough follows a job from its line items to the bid price and margin check.

HVAC Bid Template walkthrough

Who this bid template is for

We built it for HVAC contractors who price commercial replacement and retrofit work, such as a rooftop unit swap or a split system changeout in a tenant space. The person pricing the job might be the owner, a service manager or someone in the office working from the field notes.

The workbook answers four questions:

  1. What does this job cost us, line by line and in total?
  2. What price gets us to our target margin?
  3. If we lower the price to win the job, how much margin is left?
  4. What exactly is in the price, and what isn’t?

It picks up after the takeoff. Load calculations and proposal layout happen elsewhere; this file handles the arithmetic that turns quantities and hours into the number on the proposal.

What’s in the workbook

There are five sheets, in this order:

  1. Instructions covers setup, the color legend, Google Sheets import, the limitations, and a note that the formulas, layout and sample figures were written from scratch for this file.
  2. Rates lists each trade you bid with its loaded labor cost per hour, plus a Row check.
  3. Line Items has one row per cost line: category, description, trade (labor rows only), quantity or hours, unit cost, the calculated line cost and a Row check.
  4. Scope holds the written inclusions, exclusions and clarifications that go with the price.
  5. Summary holds your overhead, contingency, target margin, minimum margin and an optional planned price. It works out direct cost, total cost, the target bid price, gross margin, markup and the margin check.

Blue cells are for typing, yellow cells calculate, and green cells hold the headline results.

How to set it up

  1. Open the file in your spreadsheet app. If it opens read-only, turn on editing so the formulas calculate.
  2. On Rates, enter each trade with its loaded cost per hour: your wage plus burden, meaning payroll taxes, workers’ comp, insurance and benefits. The sample rates are placeholders, not market rates, so don’t bid with them.
  3. On Line Items, clear the sample job and enter yours. Pick a category from the dropdown. Labor rows take a trade and hours; every other row takes a quantity and a unit cost.
  4. On Summary, set overhead and contingency as a percent of direct cost, then your target and minimum margin.
  5. Read the target bid price. If you already have a number in mind, type it in Bid price you plan to submit and check the margin.
  6. Write the scope on the Scope sheet.
  7. Fix any Row check that isn’t OK. Until Rows and settings to check reads 0, the totals and prices show Check data in place of a number.

Line Items sheet showing twelve sample lines for a rooftop unit replacement, with category, description, trade, quantity, unit cost, line cost and row check

Labor priced by trade

A single blended labor rate hides which trade the hours belong to. In this workbook a Labor row carries only a trade and hours, and the rate comes from Rates, so changing one trade’s cost reprices every line that uses it.

The sample job has five labor lines:

Labor lineTradeHoursLoaded rateLine cost
Set unit and connectHVAC Tech24$68$1,632.00
Duct transitionsSheet Metal16$72$1,152.00
Power wiringElectrician6$75$450.00
Controls tie-in and startupControls Tech8$82$656.00
Rigging and cleanupHelper24$38$912.00

That comes to 78 hours and $4,802.00 of labor. The trade on a Labor row has to match exactly one Rates row. If it’s blank, missing from Rates or listed there twice, the row shows Check ID and gets no cost, so a typo shows up as a flag and never as a line priced at zero.

The Equipment lines pair with our HVAC equipment schedule template. The schedule documents the unit you’re quoting, and its model and capacity can go straight into the line description here.

Rates sheet listing six trades with a loaded labor cost per hour for each

From total cost to bid price

Summary builds the price in three steps. Direct cost is the sum of every line: equipment, labor, material, permits and subcontract. Overhead and contingency are then added as percentages of direct cost, which gives total cost. Finally, the target bid price is total cost divided by one minus your target margin.

The division is where markup and margin part ways. Adding 25.0% to cost leaves less than 25.0% of the price as margin. To keep 25.0% of the price, the sheet divides by one minus the margin, which works out to a 33.3% markup on cost. Summary shows margin and markup side by side on every bid.

The margin check on a lower price

Before a bid goes out, someone usually asks whether it could come in lower. Type that number in Bid price you plan to submit and Summary reprices around it: Bid price used switches to your number, and gross margin, markup and the margin check follow.

On the sample job, a price of $44,000 still clears the 18.0% minimum, at a 19.2% gross margin and a 23.7% markup. At $42,000 the margin falls to 15.3% and the margin check reads Below minimum. Clear the cell and the sheet goes back to the target price.

The planned price has to be a number above zero. A negative number, a zero or a word in place of a number reads Check price, and the totals switch to Check data until you fix it.

Summary sheet showing settings for overhead, contingency, target margin and minimum margin, then direct cost by category, total cost, target bid price, gross margin, markup and margin check

Worked example: a 15-ton rooftop unit replacement

The sample is a made-up commercial job. The old packaged rooftop unit comes out, a new 15-ton unit goes on the existing curb with an adapter, the crew connects ductwork, power and controls, and a crane does the lift. Here’s what Summary shows:

Summary lineResult
Equipment$19,690.00
Labor$4,802.00
Material$3,390.00
Permits and fees$650.00
Subcontract$2,400.00
Direct cost$30,932.00
Overhead at 10.0%$3,093.20
Contingency at 5.0%$1,546.60
Total cost$35,571.80
Target bid price at 25.0% margin$47,429.07
Gross margin25.0%
Markup on cost33.3%

The rooftop unit alone is $18,450.00, more than half the direct cost on this sample. Every figure here is a sample input for you to replace, and none of it is a benchmark for your market.

The scope sheet

The Scope sheet keeps the written terms next to the numbers, in three lists: what’s included, what’s excluded and any clarifications. The sample includes “Remove and dispose of existing unit”, excludes “Roof repairs beyond the curb”, and clarifies “Work performed during normal business hours”.

Scope sheet with sample inclusions, exclusions and clarifications for a rooftop unit replacement

It’s plain text with no formulas. Copy it into your proposal or print it with the Summary.

Importing into Google Sheets

To bring the file into Google Sheets:

  1. Download the workbook from the bid template link.
  2. Open Google Sheets.
  3. Choose File > Import > Upload.
  4. Select the downloaded file.
  5. Choose Insert new sheet(s), or create a new spreadsheet from the upload.
  6. Check Line Items and Summary after the import.

There are no macros. Formulas, dropdowns and formatting may not carry over exactly, so compare the totals and row checks with the original file before you rely on the imported copy.

Limitations to know before relying on it

  • Margin here is gross margin on this one job: price minus total cost, divided by price. It isn’t a company profit figure.
  • Overhead and contingency are flat percentages of direct cost. If you recover overhead per labor hour, build it into the loaded rate and set overhead lower.
  • Each trade has one loaded rate. Overtime or shift premiums need their own trade row, such as “HVAC Tech OT”.
  • Sales tax on materials or on the price isn’t calculated.
  • The workbook holds up to 50 trades and 200 line items. Formulas, totals and dropdowns stop at row 51 on Rates and row 201 on Line Items.
  • It’s one file for one job. It won’t turn an accepted bid into a job, a purchase order or an invoice.

When several estimators bid at once, or accepted bids need to flow into scheduling and invoicing without retyping, compare the options in our roundup of the best estimating software for field service. More free workbooks are on the field service templates page.

Until then, grab the HVAC bid template, enter your next job, and see what margin your price carries.

Frequently asked questions

  1. What should an HVAC bid include?

    Equipment, labor broken out by trade, materials, permits and fees, and any subcontracted work, plus overhead and contingency on top of that direct cost. Then the price itself, and a scope that lists what is included, what is excluded and any clarifications, so the customer knows exactly what the number buys.

  2. What is the difference between markup and margin on a bid?

    Markup is profit divided by cost. Margin is profit divided by the price. They describe the same dollars from two directions, so a 25% gross margin is a 33.3% markup on cost, which is exactly what the sample job in this template shows.

  3. How do I check whether a lower price still works?

    Type the price you plan to submit in the "Bid price you plan to submit" cell on the Summary sheet. The sheet recalculates the gross margin and markup at that price and shows "Below minimum" in Margin check if the margin falls under your floor. Clear the cell to go back to the target-margin price.

  4. How do I open this bid template in Google Sheets?

    In Google Sheets, choose File > Import > Upload, select the .xlsx file and choose Insert new sheet(s). The file has no macros. Formulas, dropdowns and formatting may not carry over exactly, so compare the totals and row checks with the original file before you rely on the imported copy.

  5. When should a contractor move bids out of a spreadsheet?

    When several estimators bid at the same time, or when an accepted bid has to become a job, a purchase list and an invoice without retyping it. At that point, estimating software that connects to scheduling and billing is worth comparing; our roundup of the best estimating software for field service covers the options.

Trust signal

Fact Checked & Editorial Guidelines

Every post on this site is fact-checked against the policy below before the "Last reviewed" date is updated. If a single item below fails verification, the post does not go live.

  • Every claim traces to a source.

    Pricing, feature lists, integrations, and headquarters are taken from vendor product pages, documentation, or signed contracts — never repeated from secondary blogs. Where a claim is sourced from a single vendor's marketing, it is qualified as such.

  • Vendor relationships are disclosed in-line.

    If a review covers a platform whose vendor has provided trial access, sandbox access, or paid placement on a sister property, that relationship is stated in the review's methodology footer — not buried in a sitewide disclosure page.

  • Pricing is rechecked at every review cycle.

    Vendor pricing changes constantly. The 'Last reviewed' date on each post is the date the price line was last re-verified against the vendor's public pricing page. If you spot a stale price, the contact page accepts corrections.

  • Corrections are logged, not silently rewritten.

    Material factual corrections after publication get a correction note dated and appended to the post. We don't pretend the prior version never said what it said.

Spotted an error? Send a correction via thecontact page — corrections are logged with a dated note on the post.

Trust signal

Editorial Review & Methodology

Reviews and comparisons on this site follow a single documented methodology — the same rubric, applied identically to every platform, on every review cycle.

  • Five-criteria scoring rubric, applied identically to every platform.

    Usability, pricing transparency, feature depth, support quality, and integrations. Each criterion scored 0–10 with documented weighting. The rubric is published on the methodology page and does not change between platforms in the same review.

  • Hands-on testing where vendor trial access permits.

    If a vendor offers trial or sandbox access, the reviewer spins up an account and works through the documented evaluation script before scoring. Where access is enterprise-gated, the access type is disclosed and scoring draws on product documentation, verified buyer reviews, and analyst sources.

  • Editorial independence from commercial relationships.

    No vendor pays for placement, previews scores, or controls the content of a review. Affiliate links, where present, do not change ranking — picks are ordered by score, not by commercial yield. If a conflict of interest exists for a specific review, it is disclosed within that review.

  • Reviews get re-checked, not just re-dated.

    Each 'Last reviewed' update means the rubric was re-applied — pricing, feature inventory, integration list, and any material vendor changes since the prior review. A bare date bump without re-evaluation is not a re-review.

The full rubric, weighting, and review-cycle process is on themethodology page.