2-Way Matching: simple in theory, messy in real life
2-way matching sounds simple, but real supplier invoices rarely match purchase orders perfectly. This post breaks down why 2-way matching creates so many exceptions in practice, where most AP tools fall short, and how smarter invoice automation can reduce manual review for bookkeepers and product-heavy businesses.
23 January 2026
If you’ve ever explained 2-way matching to a client, you probably said something like:
“Invoice matches the purchase order. If they line up, it goes through.”
And technically… that’s right.
But anyone who’s actually done 2-way matching at volume knows that’s only the clean version. The textbook version. The one that assumes suppliers behave, pricing never changes, and freight magically appears where it’s supposed to.
Real life looks different.
Invoices arrive late. Quantities don’t match. Freight shows up as a separate line. Sometimes GST is split across lines. Sometimes it’s not. And suddenly what should have been a quick check turns into a fifteen-minute investigation.
Multiply that by 200 invoices a month, and you’ve got a problem.
What 2-way matching is meant to do (and why people still bother)
At its core, 2-way matching exists to answer one question:
“Did we get billed what we agreed to buy?”
That’s it.
You compare:
the purchase order
the supplier invoice
If price, quantity, and items line up, the invoice is approved. If not, it’s flagged.
For businesses dealing with inventory, freight, or job-based purchasing, this matters. It prevents overbilling. It catches duplicate invoices. It keeps costs honest.
That’s why 2-way matching is still everywhere in wholesale, construction, manufacturing, and e-commerce. Even smaller businesses try to do it, usually with spreadsheets and crossed fingers.
The intention is solid. The execution is where things fall apart.
Where 2-way matching actually breaks down
Here’s the part that rarely gets written about.
Most AP tools assume that:
POs are clean
invoices are structured
suppliers stick to the rules
But suppliers don’t know your rules. And they definitely don’t care about your accounting workflow.
Some common pain points we see over and over:
Partial deliveries
A PO might be for 100 units. The invoice comes in for 40. Totally valid. But now someone has to:
check what’s been received
adjust the matching logic
remember there’s still 60 outstanding
That’s already a manual decision.
Price changes and substitutions
Suppliers substitute items. They adjust pricing mid-order. They apply credits later. The invoice technically doesn’t match the PO anymore, but it’s still correct.
Automation struggles here unless it understands context.
Freight and surcharges
Freight is the classic killer.
It’s rarely on the PO.
It’s often taxable differently.
Sometimes it’s split across multiple accounts.
Most tools just shrug and dump the invoice into a “needs review” bucket.
Multi-line invoices mapped to one PO
One PO. One invoice. Ten line items. Mixed GST. Mixed accounts.
Matching might succeed at the header level, but line-level coding still needs human eyes.
This is where bookkeepers quietly lose hours.
Why “matching failed” isn’t a useful outcome
A lot of invoice automation tools treat 2-way matching as a pass or fail test.
Match succeeded? Great. Push it through.
Match failed? Kick it out to a human.
That sounds reasonable until you realise how often “failed” really means “mostly fine, just slightly off.”
Tools like Dext and Hubdoc do a decent job of getting invoices into the system. But once a mismatch appears, the workflow often ends there. The invoice lands in Xero or MYOB needing manual cleanup.
And that cleanup is where the real time goes.
Not in data entry.
Not in uploading documents.
In decision-making.
The hidden cost of 2-way matching for bookkeepers
For bookkeeping practices, 2-way matching creates a weird tension.
On one hand, clients expect it. Especially clients with inventory or job costing. They want accuracy. They want controls.
On the other hand, it’s hard to bill for the extra thinking time.
No one wants to explain why an invoice took 12 minutes instead of 2.
So bookkeepers either:
eat the time
simplify the process
or quietly stop matching as rigorously as they should
None of those options feel great.
And this is why many practices say things like, “We technically do PO matching,” while knowing it’s inconsistent at best.
Why SMBs feel this pain differently
For business owners, the frustration is more emotional.
They don’t see 2-way matching as a control framework. They see it as admin friction.
Invoices get stuck in approval.
Suppliers chase payment.
Someone asks, “Why hasn’t this been paid yet?”
The answer is often:
“We’re checking it.”
Which usually means:
“We’re trying to figure out whether this mismatch matters.”
In businesses running on tight margins, especially e-commerce and wholesale, delays like this can hurt cash flow relationships fast.
Where traditional AP automation stops short
Most AP automation focuses on capture.
OCR.
Inbox scanning.
Auto-publish to Xero or MYOB.
That’s useful. It saves time early in the process.
But it doesn’t solve the hardest part of 2-way matching, which is judgement.
Is this mismatch acceptable?
Is it recurring?
Does it need approval, or is it normal for this supplier?
Without context, software can’t answer those questions. So it hands them back to humans.
What better 2-way matching actually looks like
Better matching isn’t about forcing perfection. It’s about reducing noise.
A more realistic approach includes:
tolerance thresholds for price and quantity
supplier-specific rules
awareness of common exceptions like freight
confidence scoring instead of binary pass or fail
For example:
If an invoice matches 95 percent of a PO and the difference is always freight from the same supplier, do you really want it flagged every time?
Probably not.
This is where modern accounts payable automation needs to evolve, away from rigid rules and toward adaptive logic.
Why this matters more as businesses scale
At low volumes, humans cope.
At 20 invoices a month, someone can eyeball everything.
At 200 invoices, cracks appear.
At 2,000, the system breaks.
As businesses grow, the cost of bad matching compounds:
more exceptions
slower approvals
higher bookkeeping costs
frustrated teams
Ironically, this is often when businesses invest in automation, only to realise their tools weren’t built for messy reality.
A quick note on Xero and MYOB users
Both Xero and MYOB handle purchase orders reasonably well. The accounting layer is solid.
The challenge sits between inbox and ledger.
That gap is where invoices are interpreted, matched, split, coded, and approved. And it’s where most tools still rely too heavily on humans.
So where does Pulsify fit into all this?
Pulsify was built after watching this exact problem play out.
Not the clean demo version of 2-way matching. The real one.
The one with:
freight lines
partial matches
mixed tax treatments
recurring supplier quirks
Instead of treating mismatches as failures, Pulsify treats them as signals. It focuses on handling exceptions properly, not just flagging them.
That means fewer invoices bouncing back to bookkeepers, and fewer “why is this stuck?” conversations for business owners.
The quiet truth about 2-way matching
2-way matching isn’t broken.
The way we’ve automated it is.
Most businesses don’t need perfect matching. They need practical matching. The kind that understands patterns, tolerates known issues, and escalates only when something genuinely looks wrong.
When that happens, 2-way matching stops being a bottleneck and starts doing what it was always meant to do.
Protect the business.
Without slowing it down.
Other Blog Posts
Read other articles