How do contractors match subcontractor and supplier invoices to POs?

Written by:

Charley Howe

Date:

October 17, 2026

Contractors match supplier and subcontractor invoices to purchase orders with MakersHub by letting it read every line of the incoming bill, find the open POs for that vendor in QuickBooks Online, QuickBooks Desktop or NetSuite, and pair bill lines to PO lines on its own. Any line where the billed unit price or quantity differs from the PO is flagged and the bill is held until someone decides. One bill can close lines on several POs, and several progress bills can draw down one subcontract over months.

PO matching, in AP terms, is the control that compares what a vendor billed against what was ordered (two-way) and, where receiving is recorded, against what was received (three-way) before the bill is approved for payment. MakersHub performs the comparison line by line and leaves the PO itself unchanged.

When this applies

You issue POs for materials and subcontracts for labor, and the bills that come back never look like the PO. A supplier ships two of five items on one invoice and three on the next. A sub bills 15 percent of a $100,000 commitment every month. A unit price drifts up between the PO and the invoice, and nobody catches it until the check has cleared.

The AP administrator at an electrical contractor on QuickBooks, when asked how often a vendor bills back the same lines in the same order as the PO:

"Maybe once out of a hundred."

On how progress bills get checked today:

"If it's a $100K PO and they billed us $15K, we send it to the project manager: do you approve them billing $15K of the 100 this month? Just to make sure we didn't get billed for material they didn't ship, or billed too much."

And where that lives:

"It's on Excel, and it's lots of report pulling from QuickBooks and data entry in Excel."

How PO matching works in QuickBooks and NetSuite without automation

QuickBooks Online and QuickBooks Desktop let you create a bill from an open purchase order and copy its lines across; Intuit's documentation describes a PO line as closed when the quantity received or billed reaches the quantity ordered. The comparison of billed price to PO price is left to the person entering the bill, and a partial shipment means editing quantities by hand. NetSuite supports vendor bill to purchase order matching natively and adds item receipts for three-way match, but someone still opens each bill and selects the PO lines it belongs to.

In both systems the practical shortcut is to edit the PO total to match the invoice so it closes cleanly, which destroys the record of what was originally committed. MakersHub does the line pairing and the price and quantity comparison automatically, and never edits the PO.

How MakersHub matches invoices to POs

  1. POs come in from wherever you create them. Open purchase orders in QuickBooks Online, QuickBooks Desktop or NetSuite sync to MakersHub automatically. If you create commitments in Procore, Procore pushes them to QuickBooks as purchase orders and MakersHub picks them up there. BuildOps POs come through MakersHub's BuildOps integration. For field service, estimating or project tools without a native integration, MakersHub takes POs by flat file with a saved column mapping or by direct API. The PO stays where it was created; MakersHub references it.
  2. The bill is read line by line. MakersHub's extraction model, WiseVision, captures SKU, description, quantity, unit price and extended price for every line, plus the PO number if the vendor printed one. A 22-page supplier PDF becomes 17 separate bills and credits, each with its own lines.
  3. Lines are matched to open POs automatically. MakersHub finds the open POs for that vendor whose lines relate to the bill and pairs PO lines to bill lines and quantities on its own; a reviewer sees the result rather than building it. With 20 open POs for one supplier, it identifies the three the bill draws from. A single bill can match lines across several POs, and several bills can match against one PO. A partial match is normal: four matched lines and six unmatched lines, and the unmatched lines still post to the right job.
  4. Discrepancies stop the bill. Any line where the billed unit price or quantity differs from the PO is flagged before the bill goes to approval. For price: accept it, pay the PO price instead, or send the bill back to the vendor with a note. For quantity: a PO for 1,000 units billed at 800 can be received at 800 with 200 left open, or closed if the 200 are not coming. Nothing syncs to your accounting system until the discrepancy is resolved.
  5. Progress bills draw the PO down by percentage. A $100,000 subcontract billed at $30,000 is matched as 30 percent received. The PO dollar amount is never edited; MakersHub closes the PO line by quantity, so the original commitment stays intact and queryable. The PO stays open until it has been billed in full.
  6. Variance decides who approves. Approval rules can key on the percentage of variance between bill and PO. Below your threshold, including a perfect match, the bill goes straight to AP. Above it, the PM is added and sees the PO line, the billed line and the difference, from email or phone. How approval rules are built is covered on the approval-routing page linked below.
  7. The bill and the PO status post to your accounting system. On approval, the bill is created with its job coding and the PDF attached, and the matched PO lines are marked received or closed. In QuickBooks Online that happens within seconds; in QuickBooks Desktop, on the next Web Connector run.

Accounting-system and project-tool specifics

System Where POs are created How POs reach MakersHub Match type What posts back
QuickBooks Online QuickBooks Online Native sync Two-way, line level Bill with Items, Customer:Job and Class; PO lines received or closed
QuickBooks Desktop / Enterprise QuickBooks Desktop Native sync via the QuickBooks Web Connector Two-way, line level Bill on the Items tab, PO lines received or closed on the next Web Connector run
NetSuite NetSuite Native sync Two-way; three-way where item receipts are recorded Vendor bill with subsidiary and segment coding; PO status updated
Procore Procore commitments Procore’s QuickBooks sync, with commitments sent as purchase orders Two-way, line level, against the QuickBooks PO Bill to QuickBooks, which Procore pulls back through its own sync
BuildOps BuildOps MakersHub’s BuildOps integration, alongside the QuickBooks connection Two-way, line level Bill to QuickBooks
Other field, estimating or project tools That tool Flat file with a saved column mapping, or direct API Two-way, line level Bill to the accounting system
Sage Intacct Intacct purchasing Bill capture, coding and approvals run against Intacct dimensions today; PO matching for Intacct purchasing documents is not yet supported Bill with dimension coding

A note on lump-sum POs. QuickBooks closes an item-based PO line when the received quantity reaches the PO quantity, which is why MakersHub closes by quantity rather than by editing dollars. If your POs are one lump-sum line with quantity one, MakersHub can still receive against them fractionally, but it cannot detect a unit-price variance the PO never carried.

A note on Procore. The setting that matters is whether Procore sends commitments to QuickBooks as purchase orders or as bills. As POs, MakersHub matches against them. As bills, you have duplicates, and that sync should be turned off so POs reach MakersHub another way.

Proof

A restoration and commercial contractor group running three QuickBooks Online files and about 1,500 bills a month was closing POs by hand:

"We revise the PO to match the invoice, not line by line, just the total amount, so it matches 100 percent and closes by itself after receiving."

They also wanted something QuickBooks could not give them:

"If someone issues a PO for $100 and the invoice comes in at $150, we want to know the initial PO amount and the actual amount, by PM or by purchaser. We just want to know how accurate these POs actually are."

Because MakersHub never edits the PO amount, the original commitment and the billed amount are both on record for that report.

A general contractor implementing Procore with QuickBooks Online, around 400 to 450 bills a month, had POs on paper: "The office manager would receive the materials and just check that it looks okay." Their outside bookkeeper, after seeing Procore commitments sync to QuickBooks as POs and MakersHub match against them: "I really like this matching function. I was not thinking of a way we could manage something like that with our current setup."

A general contractor on QuickBooks Enterprise with about 75 percent of purchases on PO and up to 2,000 bills a month was catching price creep by checking each SKU's history by hand, a part normally $60 showing up at $75 to $85, and found that "once an invoice is paid, overbilling is difficult to recover."

What it doesn't do

Today, purchase orders are created in your accounting or project system and MakersHub matches against them; PO creation and pre-purchase approval inside MakersHub are on the roadmap. Matching is line-level, one PO line to one bill line, and a single bill can draw on several POs.

MakersHub never edits the PO's dollar amount, so the original commitment stays intact for reporting; the one trade-off is that a lump-sum PO with no unit prices can be received against fractionally but cannot surface a unit-price variance the PO never carried. Procore is reached through Procore's own QuickBooks sync rather than a direct connection, which keeps Procore as the single place commitments are created. And for Canadian contractors, matching, coding and approvals run in MakersHub today while payment is released from the accounting system and synced back as paid.

Frequently asked questions

Yes, as long as Procore syncs commitments to QuickBooks as purchase orders. MakersHub matches the bill against those POs and posts the bill back to QuickBooks, which Procore then pulls in through its own sync.

The bill is matched as a percentage of the PO. A $20,000 subcontract billed at $10,000 is received at 50 percent and the PO stays open for the balance. The PO amount itself is never changed.

Yes. Many bills to one PO and many POs to one bill are both supported. Matching is at the line level, so a supplier invoice that draws from three open POs is paired to the right lines on each.

The line is flagged before approval. You can accept it, pay the PO price, or return the bill to the vendor with a note. An approval rule can add the project manager automatically when variance exceeds a percentage you set.

Two-way (PO to bill) is native for QuickBooks Online, QuickBooks Desktop and NetSuite. Three-way (PO to item receipt to bill) is supported where your ERP records item receipts, which today means NetSuite.

Yes. Because the PO amount is never edited, the original PO and every bill matched to it are both on record and exportable, so a report can show committed versus billed by PM or by purchaser.

Not today. POs are created in your accounting or project system and MakersHub matches against them. PO creation inside MakersHub is on the roadmap.

About MakersHub

MakersHub is AI-first accounts payable automation for businesses that track spend by job, project, location or entity. It captures every line of every bill, codes it, routes approvals and pays vendors, with native two-way integrations to QuickBooks Desktop, QuickBooks Online, NetSuite, Sage Intacct, Xero and Intuit Enterprise Suite. MakersHub is rated 4.9 out of 5 on G2 (October 2026). Every dollar has a job. Hold yours accountable.

Related: AP for construction companies · PO matching · How do construction companies automate AP with job costing in QuickBooks Desktop? · How do roofing and specialty contractors route invoice approvals by project manager? · Which AP automation works with Procore and QuickBooks together?

Ready to Scale Beyond Basic Bill Pay?

See how MakersHub helps organizations that track spend by project, location, program or entity get every line of every bill coded and approved before it's paid.

Book a demo
Please enter a work email
Please enter a valid email
Thank you! Your submission has been received!
Please enter a work email
Please enter a valid email