Match HVAC Supplier Invoices to Purchase Orders

AP workflow for matching HVAC supplier invoices to purchase orders and delivery records — partial deliveries, part numbers, freight, and Canadian GST/HST.

Published
Updated
Reading Time
19 min
Topics:
Industry GuidesConstructionHVACCanadainvoice matchingpurchase orderssupplier invoices

To match HVAC supplier invoices to purchase orders, AP compares each vendor invoice line — part number, quantity, unit price, extended total, freight, tax, and delivery date — against the PO and the delivery evidence before coding the cost to a job. This article covers incoming supplier invoices for parts, equipment, and materials, not customer invoices for service calls or subcontractor payment-release controls.

The reason this control earns a place in an HVAC contractor's AP workflow, rather than being collapsed into a quick glance before coding, is job-cost integrity. HVAC contractors live on job-level gross margins. An undetected $340 freight overcharge absorbed into a $12,400 rooftop-unit invoice does not blow up the month, but it erodes the reported margin on the job that received it — and if nobody catches it, the WIP report and the project manager's profitability update both carry that distortion forward. Multiply that across a stack of weekly supplier invoices and the numbers that feed board-level reporting stop being trustworthy.

Where PO matching sits in the HVAC AP workflow

A supplier invoice that arrives in AP runs through five distinct layers before it lands in the accounting system. The matching step is one of them, and the whole HVAC supplier invoice matching workflow only holds together when the other layers are understood as separate work.

Layer 1 — intake and extraction. The invoice arrives as a PDF, a scanned image, or an email attachment, and the first job is turning it into data the rest of the workflow can operate on: line items as rows, header fields as fields, totals that reconcile. Intake answers "what did the supplier send us and what does the invoice actually say?" Getting that right before anything else is the subject of a separate companion piece on how to extract HVAC supplier invoice line items to Excel, because the techniques for doing it well — whether manually, with a dedicated extraction tool, or by some combination — deserve their own treatment.

Layer 2 — PO, invoice, and delivery comparison. Once the invoice is in structured form, it can be compared. This is the matching layer. It answers one question: does the invoice agree with what was ordered and what was actually delivered? That comparison is what the rest of this article is about.

Layer 3 — exception handling. When the match does not clean up on its own — partial delivery, freight added post-order, price drift, UoM mismatch — someone has to make a decision. Approve the line, hold it, split it across POs, dispute it with the supplier, or wait for a later delivery or credit note. This layer has its own catalogue of decisions specific to HVAC supplier invoices, covered in its own section below.

Layer 4 — job-cost coding. Only after the line is matched does it get assigned to a job, a phase, and a cost code. If AP codes first and matches later, any error becomes a WIP reversal on a live job instead of a routine AP edit. The mechanics of coding — cost codes, phases, and invoice splits — sit in the companion article on how to code construction invoices by job, phase, and cost code.

Layer 5 — ERP or accounting-system posting. The coded, matched invoice posts as a payable, updates WIP for the relevant job, and feeds into the month-end close. Posting answers "how does this land in the accounting system and in the project's profitability picture?"

Each layer's output is the next layer's input. Intake produces structured line data; matching produces verified lines; exception handling produces decisions on the lines that did not verify cleanly; coding produces job-and-cost-code attributions; posting produces the accounting record. When contractors collapse matching into coding — because AP is backlogged, or because the team has always done it that way — overcharges and wrong-job postings enter WIP before anyone has a chance to catch them.

The fields you're actually comparing, line by line

For an HVAC parts invoice, the purchase-order match comes down to a specific set of fields. Naming them explicitly is what separates a real match from a glance-and-approve.

Part number. On a typical HVAC supplier invoice, the line carries the manufacturer's part number — the SKU the supplier's own system uses. The PO, if it was written off a quote or a job materials list, often shows something else: an internal SKU from your own inventory system, or a free-text description like "Carrier 5HP condenser fan motor 208-230V." The match has to allow aliasing between those three forms. A strict string match on part number will fail most lines on a normal HVAC invoice, not because anything is wrong but because the three documents use three different names for the same physical part.

Quantity. Three numbers matter here, and they are not always the same: quantity ordered on the PO, quantity shipped on the delivery document, and quantity invoiced on the bill. A two-way match against only the PO misses the case where the supplier shipped 8 of 10 motors and invoiced for 10. The delivery evidence is what distinguishes "we got everything and they billed it right" from "they billed for what we haven't received yet."

Unit price. The PO locked in a unit price on the day it was cut. Supplier price books drift — quarterly updates, mid-year adjustments on copper-heavy parts, tariff pass-throughs. If the invoice shows a different unit price than the PO, that variance is a decision, not an error: within your firm's tolerance, approve; outside it, query the supplier. The match step surfaces the variance; the exception-handling layer makes the call.

Extended total. This is quantity times unit price, per line. Suppliers occasionally bill a line with a calculated extended that does not equal the shown unit price times the shown quantity — a manual override, a rounding quirk, or a quote-specific price that did not make it onto the line as a unit figure. Checking the arithmetic per line takes seconds and catches a category of error nothing else catches.

Line-level tax. Where suppliers break tax out at the line level, it has to reconcile to the pre-tax extended and the applied rate. For Canadian contractors, this is where GST and HST split visibility starts to matter; the practicalities of that sit in their own section below.

Freight. Freight is the field most likely to be on the invoice and absent from the PO. The supplier added it after the fact, or the terms of the relationship allow the supplier to bill freight against the shipment regardless of whether the PO anticipated it. Treat freight as its own match-or-decide field, not as part of the line it is attached to.

Delivery date. The invoice shows a shipped-or-delivered date for each line or for the shipment as a whole. That date determines which delivery document the line matches against — the one that arrived this Tuesday, or the one that is still outstanding. Lines invoiced ahead of delivery should be held, not matched on the strength of the PO alone.

For readers who want the conceptual background on two-way, three-way, and four-way matching as a framework, the companion article on 2-way, 3-way, and 4-way invoice matching explained lays that out in full. In short: a two-way match compares the invoice to the PO; a three-way match adds delivery evidence; a four-way match adds an inspection or receiving-quality step. HVAC supplier invoice matching almost always needs the three-way form, because freight and quantity mismatches are specifically the things a two-way match cannot see.

The comparison has to happen at two levels: each line and the invoice total. Every line can reconcile individually and the invoice total can still be wrong, because freight was added at the footer, or tax was applied against a base that does not match the summed line extendeds, or a credit appeared on the bill that was never identified as a line. Both levels have to agree before the invoice moves.

What delivery evidence actually looks like at a mechanical contractor

Textbook three-way matching assumes a goods-received note created at a receiving dock by someone whose job is to create goods-received notes. At a 5-to-50-person mechanical contractor, that dock does not exist. Parts are delivered direct to a jobsite, or to a small yard behind the shop, or sometimes straight into the back of a service van. For HVAC supplier invoices, the delivery match is less about asking whether there is a GRN in the system and more about asking: what evidence do we actually have that what the supplier billed is what showed up, and where is it?

The realistic evidence types are these:

  • Supplier delivery receipt or packing slip, signed at the yard or the jobsite by whoever took the delivery. This is the most common piece of evidence and the closest thing to a formal receiving document most contractors have. It lists quantities and usually the supplier's part numbers.
  • Driver sign-off on a bill of lading, for deliveries routed through a freight carrier rather than the supplier's own truck. The BOL often shows pallets or cartons rather than line-level parts, so it confirms that a shipment arrived but not always what was in it.
  • Site photos from the foreman or project manager's phone — the rooftop unit on the pad, pallets of fittings staged in the mechanical room, the crate with its shipping label visible. Unglamorous but strong evidence for equipment deliveries where the piece of kit is identifiable on sight.
  • Warehouse receipt, if the firm has a central stocking location and someone logs incoming parts against the PO when they hit the shelf. Some mechanical contractors have this discipline for stock items and not for direct-to-site deliveries.
  • Foreman or project manager confirmation by email or text for parts that went straight to a site and did not pass through the yard. A message saying "got the two coils, pad is set, we're good" is evidence, even if it is not a form.

A formal goods-received-note system is the exception rather than the rule in this segment, and the match does not need one. What it needs is evidence that what arrived agrees with what the PO asked for. A signed packing slip plus a site photo is adequate for a routine motor or capacitor delivery. A split shipment or a damaged crate needs more: a follow-up note, a photo of the damage, a conversation with the supplier.

The comparison itself is narrow. The quantities on the delivery document have to agree with the quantities on the invoice line; the part numbers on the delivery document have to match the part numbers on the invoice line (allowing for the same manufacturer-vs-internal aliasing the fields section covered); and the delivery date has to be consistent with the invoice's shipped-or-delivered date. Where the delivery evidence covers only part of the invoice — the supplier sent 6 of 10 motors today and the other 4 are shipping Thursday — the matched lines go through, and the unmatched lines are held against the delivery evidence that will come with the Thursday shipment.

At most contractors, delivery evidence lives in five places at once. The signed packing slip is in a project folder on the controller's desk, the BOL is in a paper stack in the yard, the site photos are on a foreman's phone and may or may not get forwarded, the email confirmation is in whoever happened to be on the thread, and the warehouse log is a spreadsheet two people update. Whoever runs the match spends real time pulling that evidence together before they can approve a line. That is the reality of how deliveries happen at this scale, and it is why structured line data matters: the effort of gathering evidence should not be wasted on lines that would have reconciled automatically if the invoice data were already comparable.

The HVAC exception catalogue: what actually breaks a match

Generic AP content treats exceptions as edge cases. On HVAC supplier invoices they are the substance of the job. Most weeks, most of the AP person's time is spent deciding what to do with the lines that did not clean up automatically. The catalogue below is what those decisions actually look like.

For almost every case below, three-way matching for HVAC supplier invoices is not theory — it is the minimum. The PO alone cannot tell you whether a line was actually delivered; the delivery alone cannot tell you whether the price on the bill matches what was agreed. Two-way matching misses freight overcharges on lines that otherwise reconcile. The exceptions force the three-way check.

Partial deliveries on motors, capacitors, or coils. The supplier promised 10 condenser fan motors, shipped 6 today, and invoiced for 6 on this bill. The PO is still open for the remaining 4. Decision: approve the 6 that arrived and reconcile against the delivery document; leave the remaining 4 lines on the PO open; expect a later invoice and a later delivery slip for the balance. A common error is forcing the full PO closed against a partial invoice and then having nowhere to put the subsequent shipment when it arrives.

Backordered lines on a separate later invoice. The 4 motors that did not arrive last Thursday ship the following week under the same PO number. The supplier issues a new invoice for them. Decision: match this second invoice's lines back to the same open PO lines, against the delivery slip that came with this shipment. The PO closes when the cumulative invoiced quantity equals the ordered quantity; do not treat the backorder invoice as unrelated to the original.

Manufacturer returns and credit notes for warranty parts. A coil supplied three months ago failed in the first 30 days; the supplier issues a credit note referencing the original invoice. Decision: match the credit to the specific original invoice line and — critically — to the job that was originally charged. A credit handled as a standalone transaction lands back in the GL as a general reduction against supplier cost, not as a reversal on the job that received the bad part. The job's profitability stays artificially low until someone notices. The reverse lookup — credit note in hand, original invoice and job to find — is much faster when the model and serial number captured at the time of purchase are sitting in a searchable HVAC equipment register built from supplier invoices rather than buried in a PDF stack.

Freight added post-order. The PO had no freight line. The invoice carries $340 of freight at the bottom of a $12,400 rooftop-unit bill. Decision: confirm whether the supplier agreement allows post-order freight for this shipment type; if yes and the amount is within the normal range for equipment of this weight, approve; if no, or if the amount looks out of pattern, query the supplier before the line is paid. The freight is its own match-or-decide; do not absorb it silently into the equipment line.

Price variance from supplier price-book drift. The PO locked a unit price of $2,340 on a 5-ton condensing unit three weeks ago; the invoice shows $2,385 because the supplier's quarterly price book rolled forward. Decision: against the firm's tolerance threshold — often a dollar amount or percentage band — either approve or query. A clear tolerance rule avoids arguing about each case individually; it also creates a visible trail when prices drift consistently in one direction over several months.

Unit-of-measure mismatches. The PO was written for 2 cases of copper fittings; the invoice bills 24 fittings (each). Decision: convert to a common unit before the match runs — 2 cases at 12 per case equals 24 each — and re-compare. Approving on a UoM-blind quantity match either treats a case as a single unit or a unit as a case, and the resulting cost variance is large enough to matter.

Restocking fees on returned parts. A control board shipped for a job was not the correct variant and went back to the supplier. The credit for the returned part carries a 15 percent restocking fee. Decision: match both the credit line and the fee against the original invoice and the job that received the part initially. The fee is a legitimate cost of the return; it belongs on the job, not in a general expense bucket. Credits and restocking fees that slipped past the line-level match usually surface again at month-end, when the wholesaler's statement balance disagrees with the sum of posted invoices — the workflow for resolving those variances sits in the companion piece on reconciling monthly supplier statements at a construction contractor.

One supplier invoice spanning multiple POs. The wholesaler consolidates shipments across three open POs — one for a commercial retrofit, one for a maintenance stock refill, one for a residential install — into a single weekly invoice. This is a distinct category of exception and the one most likely to cause mis-allocated cost when the match is rushed. Decision: split the invoice by PO before any matching runs; each slice then goes through the normal per-line checks against its own PO and delivery evidence. Forcing a consolidated invoice through as a single-PO match is how costs end up on the wrong job. The handling of one supplier invoice spanning multiple purchase orders is covered in more depth in the dedicated companion article.

What these cases share is a pattern: the exception is named, the evidence that resolves it is identifiable, and the decision the AP person makes is discrete. Where a contractor's match workflow weakens is usually not in any individual case — most of these are tractable one at a time — but in the absence of an explicit catalogue, so each exception feels like a first encounter and the decision gets made differently by different people each week.

GST and HST visibility at match time for Canadian HVAC AP

Canadian HVAC AP has one matching consideration that an American reader does not: GST and HST have to be separated from the extended pre-tax cost at match time, not deferred to posting. Every minute the combined figure is carried as cost, it risks inflating job-cost totals and distorting gross-margin reporting at job and phase level. The ITC claim is downstream work; the matching layer's job is making sure the pre-tax figure and the tax figure are each correct in their own right before the invoice moves.

What this looks like on the invoice stack is the variable-rate reality Canadian contractors already know. A single wholesaler shipping from a distribution centre in one province to jobsites in several provinces charges tax based on where the goods are shipped, so the same HVAC AP person can see 5% GST on a delivery to Alberta, 12% GST plus PST on a delivery to British Columbia, and 13% HST on a delivery to Ontario within a single week's bills — sometimes within a single invoice if the wholesaler consolidates. The match step has to verify the rate applied to each line or each shipment is correct for the ship-to province on the invoice date, not just that the arithmetic on the line reconciles against the rate shown.

The practical HVAC AP purchase order verification on the tax side is narrow: confirm the tax on each line (or at invoice level where the supplier does not break tax out by line) corresponds to a valid rate for the shipped-to province on the invoice date, and confirm the pre-tax extended is what flows to job-cost. If line-level tax is not shown, the invoice total has to be decomposed into pre-tax and tax components before coding. Skipping that decomposition is how GST ends up in a job's reported cost — never a large error per invoice, but systematic across a year's worth of bills, and visible in the gap between reported job margins and actual margins once the ITC recovery lands back in the GL.

Government of Canada NAICS 23822 plumbing, heating and air-conditioning contractors data reports average SME revenue of $705,300 in 2024, with 78% of businesses profitable. Firms in that size band are large enough to run a real job-cost function and small enough that an AP clerk, bookkeeper, or controller is often the same person; separating tax at match time protects the pre-tax figures feeding job-cost from noise that would otherwise accumulate across a year of invoices.

How structured extraction makes matching tractable at contractor scale

Under weekly invoice volume from ten to thirty regular suppliers, matching only works if the invoice is structured before comparison starts. Each supplier uses a different template for part numbers, freight, tax, partial deliveries, and backorder references. Without line-item rows, AP has to reread and transcribe the bill before it can compare anything against the PO.

A prompt-based extraction tool for this workflow takes supplier invoices in any layout and returns structured rows carrying line items, part numbers, quantities, unit prices, dates, GST/HST splits, and PO references. This is the step our own AI-powered supplier invoice data extraction tool handles. A user can describe the task in plain language — for example, "Extract invoice number, supplier name, PO number, and for each line: part number, description, quantity, unit price, extended total, and line-level GST/HST" — then download the result as Excel, CSV, or JSON with one row per invoice line.

The practical fit is direct: the extraction output is the input to the comparison. Lines line up against PO lines, delivery quantities compare against invoiced quantities, freight is a named field, and GST or HST sits in its own column instead of being buried in a total. Source-file and page references keep disputed lines tied to the original supplier invoice.

The product does not run the match itself. The matching logic, exception decisions, and coding of matched lines remain the AP team's workflow, and the packing slips, BOLs, site photos, and confirmations still have to reach the person running the match. Extraction changes the shape of the invoice when it enters the workflow, which is what lets the rest of the control operate at contractor scale.

Extract invoice data to Excel with natural language prompts

Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.

Exceptional accuracy on financial documents
1–8 seconds per page with parallel processing
50 free pages every month — no subscription
Any document layout, language, or scan quality
Native Excel types — numbers, dates, currencies
Files encrypted and auto-deleted within 24 hours
Continue Reading