Search for invoice matching software and the results describe a product category: a tool that reads a supplier invoice, compares it with a purchase order and a receipt, and flags whatever does not agree. The comparison is real. The category is not. Matching is a function that ships inside at least four different kinds of system, and those four are not interchangeable.

That matters because a match is only as good as the records the matching system can reach: the purchase order line, the receipt supporting it, and the tolerance version in force the day the invoice arrived. Put the match in the wrong place and the software will still clear invoices quickly. It will simply be unable to show, months later, why a particular one was cleared.

Quick answer

Matching software that cannot reproduce the purchase order, receipt and tolerance version behind a specific cleared invoice leaves the control unevidenced, however fast the queue moves.

Decision: Decide which system will execute the match before comparing products, then approve a shortlist only after each candidate passes tolerance, receipt, exception and evidence tests on the company's own invoice population.

Key takeaways

  • The first decision is not which vendor but which system performs the comparison, because that system must reach the purchase order line, the receipt and the tolerance version that applied.
  • Two-way, three-way and four-way count documents, not control strength. Microsoft alone documents four match types for Dynamics 365 Finance, and two price bases within them.
  • A per-invoice tolerance can be passed repeatedly against one purchase order line. Only some products document a cumulative check that closes the gap.
  • Receipt handling separates products more than price checking does. Oracle states that NetSuite’s three-way match workflow does not support partially received item receipts.
  • Ask for match evidence as an export, not a screen. It must name the documents compared, the tolerance applied, the variance measured, the result, and whoever released a hold.

What invoice matching software actually compares

Invoice matching software compares a supplier invoice with the commercial and delivery records that are supposed to support it, then stops the invoice when a difference exceeds an approved threshold. The number in front of the word “match” counts the documents in that comparison and nothing else.

The everyday vocabulary is narrower than what enterprise systems actually do. Microsoft’s accounts payable invoice matching documentation lists four types: invoice totals, two-way, three-way and charges matching. It also separates two price bases inside the middle two. Net unit price matching compares the unit price line by line; price totals matching compares the net amount, and Microsoft notes that here “the invoice net amount includes all previously posted invoices in addition to the invoice that you are currently working with.” A buyer who asks only whether a product supports three-way matching has not yet asked anything precise. Nor can a match beat the extracted line data feeding it, a separate purchase tested in the invoice OCR accuracy testing guide.

Four-way matching adds a quality step. IntelliChief’s published matching comparison sets it out as invoice against purchase order, goods receipt and inspection report, with the fourth document supplying “Quality and acceptance validation.”

Match types, what each compares, and the record each one depends on
Match typeDocuments comparedDefensible whenRecord it depends on
Invoice totalsInvoice header totals against expected purchase order totalsLow-value populations where line detail adds no controlAn approved threshold and a stated expected-total calculation
Two-wayInvoice price against purchase order priceServices, subscriptions and anything with no goods receiptA purchase order line still open and correctly priced
Three-wayAdds invoiced quantity against received quantityOrder-backed goods with receipting recorded outside APA receipt posted by someone other than the invoice approver
Four-wayAdds an inspection or quality acceptance recordRegulated, critical or reworkable materialsAn inspection result with a pass or fail and a named inspector
ChargesInvoice charge codes against purchase order charge codesFreight, duty and surcharges arriving outside the line priceA charge code mapping with a tolerance per code

Where the match executes decides what evidence can exist

Four systems can perform the comparison, and each starts from a different position on the data it already holds. This is the fork that decides the shortlist, and it comes before any feature comparison. Buyers whose requirement is a whole payables platform rather than the matching function should start instead from the complete AP platform comparison.

Execution locus: what each system already holds and what it must obtain
Execution locusAlready holdsMust retrieve or returnMain risk to test
ERP payables modulePurchase order, receipt, tolerance set, supplier siteInvoice image and extracted line dataCapture and exception handling are often thinner than a specialist’s
AP invoice layerInvoice, extracted lines, exception workflowPurchase order lines, receipts and tolerance rules, then the posted resultTwo tolerance definitions exist and can drift apart
Procure-to-pay or spend suiteRequisition, order, receipt, invoice, supplierLedger posting rules and legal entity structureThe suite may not be the system of record for the ledger
Vertical or industry systemWhatever its licensed packages includeAnything held in a package that was not boughtMatching can require three modules before it works at all

The last row is more consequential than it looks. Kojo, built for trade contractors, lists “3-way automated invoice matching” inside its Finance package, while digital purchase orders sit in Procurement and material tracking in Warehouse. Reading the Kojo package breakdown against its matching announcement, a three-way match needs all three licensed. Commercial packaging, not capability, decides whether the match is possible.

Representative invoice matching products, checked 22 August 2026

Products were included when official documentation retrieved on 22 August 2026 described how the product performs the comparison: what it matches against, or how tolerances and exceptions behave. Pages asserting only that matching happens were excluded. AvidXchange publishes an invoice matching glossary entry defining the practice rather than the product, so it fails that rule. SAP S/4HANA is absent because the SAP Help Portal returned a page shell without documentation text at the time of the check, so nothing about it could be verified.

This is not a ranking. Products are grouped by execution locus and alphabetised within each group. Official pages establish what a company states about its own product, not comparative accuracy, control effectiveness or performance on another buyer’s invoices. Pricing is recorded as a disclosure state, not a cost.

Representative products by execution locus, from official documentation checked 22 August 2026
Product and locusMatching behaviour in the official materialPublic pricing stateQuestion to put to the vendor
Microsoft Dynamics 365 Finance
ERP-native
Documents invoice totals, two-way, three-way and charges matching. Tolerance may be a percentage, an amount, or both. The line matching policy is overridable per vendor, item, item and vendor combination, or purchase order.Numeric public list price. The Dynamics 365 Finance pricing page shows $210.00 and $300.00 user/month for Premium, paid yearly, cautioning that prices shown “may not be reflective of actual list price.”Which entities need which line matching policy, and who may override it?
Oracle Fusion Cloud Payables
ERP-native
Oracle’s invoice tolerance documentation separates quantity-based and amount-based tolerance sets and names each tolerance individually. Exceeding one places a hold, and “You can’t pay the invoice until the hold is released.” Sets are assigned to a supplier site.No public price found. The financials pricing path checked returned page-not-found on 22 August 2026.Which tolerance set is assigned to each supplier site, and who holds release authority?
Oracle NetSuite
ERP-native
The 3 Way Match Vendor Bill Approval Workflow validates a vendor bill against its purchase order and item receipt using a configurable amount tolerance and quantity difference, routing discrepancies to the assigned supervisor. It needs the Approvals Workflow SuiteApp and states that “Item receipts that have been partially received are not supported.”Access-limited. The pricing page returned an access error at the check.Does the partial-receipt limitation collide with your actual delivery pattern?
Basware Invoice Matching
AP invoice layer
Basware’s invoice matching page describes line-item and order matching rules from simple to complex, states that it “automatically applies a root cause error description to any invoices that cannot be posted automatically,” and claims compatibility with any cloud ERP exposing an open API.Quote only. The Basware pricing page publishes no amount and directs buyers to “speak to our team.”Which purchase order and receipt fields does your ERP API actually expose, and does the result post back?
IntelliChief
AP invoice layer
Publishes a two-, three- and four-way comparison table, queries the ERP for corresponding purchase order data, and states that rules-based logic highlights variances beyond configured tolerances and routes exceptions to designated approvers. The same page claims enterprises can reach “up to 95% straight-through processing,” which is a company statement with no disclosed method.No price on the product page checked.Where does the inspection record for a four-way match come from, and on what invoice mix was that 95% measured?
Medius
AP invoice layer
The Medius AP automation page describes multi-way matching of invoice line details against purchase orders, goods receipts and contracts, delivered through pre-packaged managed ERP connectors.Package disclosure without amount. The Medius package comparison, dated 5 August 2026, shows AP Essentials covering one entity and AP 360 covering three, on a custom quote.Does contract-based matching replace or supplement purchase order matching, and how many entities does the quote cover?
Stampli
AP invoice layer
The Stampli platform page states “Automatic 2-way and 3-way matching at the line level” against purchase orders and receipts, surfaces exceptions in the communication thread attached to the invoice, and lists integrations including NetSuite, SAP S/4HANA and Dynamics 365.Package disclosure without amount. The Stampli quote page names entities, locations, vendors and PO Matching as scope inputs but publishes no amount.Is PO Matching inside the quoted tier, and does the line-level result write back to the ERP?
Coupa
Procure-to-pay suite
The Coupa invoice API reference, last edited 16 July 2025, exposes failed-tolerances and tolerance-failure fields, a revalidate-tolerances action, dispute reasons, and invoice statuses including ap_hold, on_hold, pending_receipt and disputed.Access-limited. The pricing page returned an access error at the check.Can the tolerance-failure reason be exported per invoice, or is it only visible in the interface?
SAP Concur
Procure-to-pay suite
The SAP Concur three-way match page states that purchase order and receipt data are imported “via FTP flat files or API connections,” that thresholds cover “unit price, quantity, or life-to-date rules,” and that matched data are sent onward to the accounting system or ERP.Quote only. The page checked offers a contact-sales form and no amount.If order and receipt data arrive by flat file, how stale can they be when the match runs?
Kojo
Vertical, trade contractors
States that the system “automatically matches the invoice against the PO and delivery receipt” and highlights issues with price, quantity or delivery. Built for trade contractors rather than general payables.Package disclosure without amount. Matching sits in the Finance package while orders and material tracking sit in Procurement and Warehouse, all on a custom quote.Which packages must be licensed together before any three-way match is possible?

Absence is not a negative assessment. A product may fall outside this method, publish too little to verify, or serve a narrower requirement. Extend the list for any ERP, invoice channel or country it omits, and repeat the check rather than inheriting these dates.

Tolerances are a control, not a configuration screen

Every product above allows a threshold. The differences appear in what the threshold can be expressed against, and in whether it can be evaded.

The first property is form. Microsoft documents percentage tolerances, amount tolerances and both applied together, noting that where both are set, breaching either creates a discrepancy. A percentage-only tolerance on a low unit price permits a trivial absolute overcharge; an amount-only tolerance on a high-value line permits a large percentage one.

The second is dimension. Oracle’s tolerance sets name each check separately, including ordered percentage, received percentage, price percentage and maximum quantity variants, on either a quantity or an amount basis. Microsoft allows the matching policy itself to differ by vendor, item, item and vendor combination, or individual purchase order. That granularity is useful and is also a control surface, because whoever can change it can change the outcome.

The third is accumulation, and it is most often missed. A tolerance evaluated per invoice can be passed repeatedly against one order line, so ten invoices each three percent over price will each pass while the line runs ten percent over. Two products document an answer. Microsoft’s price totals matching compares the invoice net amount including all previously posted invoices for that line, and SAP Concur names life-to-date rules among its threshold types. Ask every other candidate what happens on the tenth invoice, not the first.

Receipts, services and partial deliveries break more matches than prices do

Price comparison is arithmetic and works almost everywhere. Receipt handling is where products diverge, because a receipt is a physical event that may arrive late, partially, repeatedly, or not at all.

Goods with a receipt

The straightforward case still has awkward variants: several receipts against one invoice, one receipt spanning several orders, an over-receipt, and a unit-of-measure difference between how an item was ordered and how it was billed. Test each against your own data. Oracle states that the NetSuite three-way match workflow does not support item receipts that have been partially received. For an organisation that routinely receives in instalments, that single line reshapes the shortlist.

Services and anything without a receipt

Services generate no goods receipt, so three-way matching does not apply unless something stands in for one: a service entry, a milestone acceptance, an approved timesheet, or a contract the engine can compare against. Medius documents matching against contracts alongside orders and goods receipts, which is one answer. What must not happen is a service invoice quietly falling back to two-way matching without anyone deciding it should. Set the policy by invoice population, as the stage-level invoice automation controls guide does, and confirm the product can hold different policies per population rather than one global setting.

Invoices that arrive before the receipt

This is normal, not exceptional, and the correct behaviour is to hold rather than match against nothing. Oracle’s invoice options documentation describes a hold-unmatched-invoices option applying a Matching Required hold to invoices not matched to purchase orders or receipts, and Coupa exposes a pending_receipt status through its API. Confirm the chosen product ages that population visibly and clears it automatically once the receipt posts.

Price and quantity exceptions need different resolvers

A single exception queue is the most common configuration mistake in this category, and it is not a technology limitation. It happens because both failures look identical on screen: an invoice with a red flag.

They are not the same problem. A price variance is commercial: somebody agreed a price, the supplier billed a different one, and the answer sits with whoever owns the contract or the order. A quantity variance is physical: something was received or was not, and the answer sits with the receiving location or the requester who took delivery. Routing both to accounts payable makes the AP clerk a relay for two conversations they cannot resolve, which is how exception ageing becomes month-end accrual work.

Basware’s root cause error description is the pattern to look for. The test is not whether a product can route exceptions, since all of them can. It is whether the reason code is specific enough to route on without a human reading the invoice first, and whether that code exists outside the interface. This is where matching and the purchase order lifecycle controls upstream must agree: an exception caused by an unacknowledged order change is a purchasing failure that surfaced in AP.

Who may release a matching hold

Approving an invoice and releasing a matching hold are different acts, and conflating them removes the control the match was installed to provide. Oracle is explicit that an invoice on hold cannot be paid until the hold is released, which makes release authority the point where a tolerance becomes negotiable.

Three separations are worth configuring and then testing by attempting to breach them. Release authority should sit apart from invoice approval authority, so whoever benefits from clearing the queue is not deciding a variance is acceptable. Tolerance-change rights should sit apart from release rights, or a blocked invoice can be cleared by widening the threshold instead of resolving the difference. And whoever posted the receipt should not release a quantity hold on the same invoice.

Broader approval design and delegation of authority across the whole invoice population sit outside this page. What belongs here is narrower: the authority to overrule a failed match, and the record it leaves.

Treat the ERP integration as a data contract

When the match executes outside the ERP, integration stops being a connector question and becomes a question about which fields cross the boundary, how current they are, and what comes back.

Three directions need specifying. Inbound: order header and line, schedule detail, unit of measure, currency, open quantity and value, receipts, and the tolerance rules if they are not redefined locally. Outbound to the ledger: match result, variance, reason code, hold status and distribution. Then refresh frequency, which decides whether the match is trustworthy at all. SAP Concur documents order and receipt import by FTP flat file or API, and a file loaded nightly means a match can run against an order amended that morning.

Where tolerance rules are configured in two places they will eventually disagree, so decide which system is authoritative before implementation rather than after the first audit finding. Buyers evaluating the wider transactional chain rather than the matching step alone should start from the procure-to-pay architecture guide.

The audit evidence a match must leave behind

A reviewer looking at a cleared invoice a year later asks a narrow set of questions, and the software either answers them or it does not. Which documents were compared. Which tolerance version applied at that moment. What variance was measured. What the result was. If a hold was released, who released it and on what basis.

Two details separate a usable record from a screen. The first is versioning: a tolerance that was five percent when the invoice matched and is eight percent today must still read as five percent on that invoice, or the record proves nothing. The second is export. Coupa’s API exposing tolerance-failure fields and invoice statuses is match state that can be extracted rather than screenshotted. Ask every candidate to produce one matched invoice’s evidence as a file during the evaluation, not as a roadmap commitment.

The expectation behind this is not vendor-specific. The GAO Standards for Internal Control in the Federal Government, revised as GAO-25-107721 in May 2025 and effective for fiscal year 2026, place documentation and preventive control activities at the centre of an effective internal control system. A matching control that cannot be evidenced afterwards is difficult to describe as operating.

Acceptance tests to run before you sign

Every test below uses the buyer’s own invoices, purchase orders and receipts. A vendor demonstration set will pass all of them, which is why it proves nothing.

  1. Bill one purchase order line across ten invoices, each slightly over the agreed price but individually within tolerance. Confirm whether anything stops the tenth.
  2. Invoice against a partially received receipt, given that at least one documented workflow does not support it.
  3. Send one invoice covering several purchase orders, then several receipts covering one invoice.
  4. Bill an item in a different unit of measure from the one ordered.
  5. Submit a service invoice with no receipt and confirm which policy it falls into, and whether that was configured or defaulted.
  6. Submit an invoice before its receipt exists, then post the receipt, and watch whether the hold clears without intervention.
  7. Create a price failure and a quantity failure and confirm they route to different owners with distinct reason codes.
  8. Attempt to clear a blocked invoice by widening the tolerance, using an ordinary AP user account.
  9. Amend a purchase order after the last integration refresh, then match against it.
  10. Export the full match evidence for one invoice and have someone outside AP read it without explanation.

Score these before comparing prices. A product that fails tests two, seven or eight will keep failing them after implementation, and no commercial term available at signature will fix it.

Frequently asked questions

Do we still need matching software if our ERP already performs three-way match?

Often not. Oracle, Microsoft and NetSuite all document native matching with configurable tolerances, so the real question is whether the ERP handles your invoice channels, exception routing and receipt patterns. Buy a separate layer when capture, exception workflow or supplier communication is the gap, rather than when matching itself is.

What happens to an invoice that arrives before the goods receipt is posted?

It should be held, not matched. Oracle documents a Matching Required hold applied to invoices not matched to purchase orders or receipts, and Coupa exposes a pending-receipt invoice status through its API. Confirm the hold ages visibly, names an owner, and clears automatically once the receipt posts.

Who should be allowed to change a matching tolerance?

Not the person clearing the exception. Oracle assigns tolerance sets to a supplier site and Microsoft allows a matching policy override at vendor, item or purchase order level, so the setting is reachable during ordinary work. Restrict changes to a controls owner, log them, and review them alongside released holds.

Can spreadsheet-based invoice matching produce acceptable audit evidence?

Rarely at volume. The evidence a reviewer asks for is which documents were compared, which tolerance version applied, the measured variance, and who released any hold. A spreadsheet records the arithmetic but not the authority or the version. If matching stays manual, add an independent recalculation on a documented sample.

Continue your research

Keep the decision path moving.