What NetSuite’s 3-way match workflow checks
The 3 Way Match Vendor Bill Approval workflow compares each vendor bill with its purchase order and item receipt: terms, location, quantities and amounts, within the tolerance and difference limits you set. Clean bills are approved automatically; the rest are routed for approval.
| Piece of the match | NetSuite | Notes |
|---|---|---|
| Purchase orders | Yes | Purchase Orders feature |
| Receiving record | Yes, item receipts | Advanced Receiving feature; items set to Match Bill to Receipt |
| Automatic comparison on the bill | Yes, with the SuiteApp | 3 Way Match Vendor Bill Approval workflow (SuiteFlow) |
| Tolerances | Yes | Percentage tolerance and absolute difference, on subsidiary, vendor and item |
| Exception routing | Yes | Bills with discrepancies go to an approver; clean bills auto-approve |
| Bill before receipt | Optional | With Bill in Advance of Receipt, receipt checks are skipped |
| Partially received item receipts | Not supported | Listed by Oracle as a limitation of the workflow |
Before you start
You need an administrator, the Approvals Workflow SuiteApp, a habit of receiving goods in NetSuite before bills are entered, and a written tolerance policy to type into the subsidiary and vendor records.
- Receipts in NetSuite. The workflow can only compare against an item receipt that exists. Warehouses or sites that receive on paper need a step to key receipts promptly.
- Items, not just expense lines. Matching runs on item lines; a PO written entirely as expense lines leaves little to compare.
- A tolerance policy. For example, 2% price tolerance with a $50 difference cap, and no quantity over the receipt.
- A sandbox test. Copy the workflow and run real bills through it, including a partial delivery, before you turn it on in production.
How to set up three-way matching in NetSuite, step by step
Enable the features, route vendor bills for approval, install the SuiteApp, mark items Match Bill to Receipt, set limits, then receive before you bill.
- 1
Turn on the features
An administrator enables A/P, Purchase Orders, Advanced Receiving, Approval Routing and SuiteFlow under Setup, Company, Enable Features. - 2
Route vendor bills for approval
In Setup, Accounting, Accounting Preferences, on the Approval Routing subtab, check Vendor Bills so bills are routed through an approval workflow instead of being approved on save. - 3
Install the approvals SuiteApp
Install the NetSuite Approvals Workflow SuiteApp. It contains three workflows: Vendor Bill Approval, 3 Way Match Vendor Bill Approval and Invoice Approval. Make a copy of the 3 Way Match workflow before you change it. - 4
Make items match bills to receipts
On each inventory or non-inventory item you buy against a PO, set Match Bill to Receipt so the bill is checked against the item receipt and not only the purchase order. - 5
Set tolerance and difference limits
Enter limits on the subsidiary record (Vendor Bill Matching subtab), the vendor record (Financial subtab) and, where needed, the item. A tolerance is a percentage; a difference is an absolute quantity or amount. Fields left blank on the subsidiary and vendor mean the workflow skips the checks that use them. - 6
Turn off conflicting exception criteria
The workflow’s exception criteria are fields that start with [SS]. If you use tolerances, disable the plain “greater than the PO” checks they would otherwise contradict, so a 1% price difference within tolerance is not raised as an exception anyway. - 7
Receive, then bill
Receive goods against the PO with an item receipt. Then bill the PO (Bill from the PO or Transactions, Payables, Bill Purchase Orders). On save the workflow compares terms, location, quantities and amounts with the PO and the item receipt. - 8
Work the exceptions
A bill with no discrepancies is approved automatically. A bill with a discrepancy is routed for approval with the exception noted, so the approver decides whether to accept it, correct it or ask the vendor for a credit.
Worked example: one bill, two exceptions
PO 2117 orders 200 cartons at $14.00 ($2,800.00). The item receipt records all 200. The vendor bills 205 cartons at $14.35 ($2,941.75). Tolerances are 2% on price and a difference of 0 on quantity.
| Check | PO | Item receipt | Bill | Result |
|---|---|---|---|---|
| Quantity | 200 | 200 | 205 | Exception: billed 5 more than ordered and received |
| Unit price | $14.00 | $14.35 | Exception: 2.5% over PO, above the 2% tolerance | |
| Amount | $2,800.00 | $2,800.00 | $2,941.75 | Route for approval |
The workflow routes the bill instead of approving it. The approver can ask the vendor for a corrected bill of 200 cartons at $14.00 ($2,800.00), or, if purchasing agreed the new price, accept $14.35 on the 200 received ($2,870.00). The 5 extra cartons are not paid either way, because they were never ordered or received.
Common mistakes with NetSuite three-way matching
Most problems come from blank tolerance fields, conflicting exception criteria and Bill in Advance of Receipt quietly turning the match into a two-way check.
- Blank tolerance fields. Blank subsidiary and vendor fields switch those checks off rather than meaning zero.
- Tolerances and strict criteria both on. A bill inside tolerance still raises an exception if the “greater than PO” criteria are active.
- Bill in Advance of Receipt everywhere. Handy for services, risky for goods: receipt checks are skipped.
- Editing the shipped workflow. Copy it first, so a SuiteApp update does not overwrite your changes.
- Assuming partial receipts work. Oracle lists them as unsupported; test with your own delivery patterns.
Adding an AP layer in front of NetSuite
If invoices still arrive as PDFs and need keying, coding and approval routing before they become bills, an AP tool can do that work and post the vendor bill to NetSuite, while NetSuite keeps the receipt-based match.
Aequo AP’s NetSuite connector is in early access. It reads invoices, suggests GL accounts, routes approvals, flags likely duplicates and writes each approved invoice to NetSuite as a vendor bill. It does not import NetSuite purchase orders or item receipts yet, so for NetSuite customers the three-way match stays in NetSuite’s workflow described above; purchase orders kept in Aequo AP itself can be matched there. See what the NetSuite connector syncs.
Frequently asked questions
Does NetSuite do three-way matching natively?
Yes, through the 3 Way Match Vendor Bill Approval workflow in the NetSuite Approvals Workflow SuiteApp. It checks each vendor bill against its purchase order and item receipt, approves clean bills automatically and routes bills with discrepancies for approval. It needs Advanced Receiving, Approval Routing and SuiteFlow turned on.
What is the difference between a tolerance and a difference limit in NetSuite?
Oracle’s help defines a tolerance as a percentage of the value being checked and a difference as an absolute number. A 5% quantity tolerance on a 200-unit line allows 10 units; a quantity difference of 3 allows 3 units whatever the line size.
Where do I set three-way match tolerances in NetSuite?
On the subsidiary record (Vendor Bill Matching subtab), the vendor record (Financial subtab) and the item record. If the subsidiary and vendor fields are blank, the workflow does not run the criteria that use them.
What happens with Bill in Advance of Receipt?
If the Bill in Advance of Receipt preference is on and an item receipt is attached, Oracle’s help says the workflow does not run its exception checks against the item receipt. The bill is then effectively two-way matched against the PO, so use it only for vendors and items where that is acceptable.
Does the NetSuite 3-way match workflow handle partial receipts?
Oracle lists partially received item receipts as not supported by the 3 Way Match Vendor Bill Approval workflow. If you receive in several deliveries, test the workflow with your own receiving pattern before relying on it, or match those POs outside the workflow.
Automate matching, approvals and exception handling
Aequo AP captures invoices, matches them to purchase orders and receipts, routes approvals and flags duplicates and exceptions, then syncs with QuickBooks Online, Xero, FreshBooks, Zoho Books or Business Central.
Related guides and tools
- Three-way matching explainedDefinitions, tolerances and examples.
- NetSuite Bill CaptureWhat NetSuite’s own invoice capture does and its limits.
- Aequo AP for NetSuite (early access)What the connector syncs today.
- Partial invoices against a POInstallments and part deliveries.
- Goods received notesThe receiving record behind the match.
- Three-way matching in Business CentralReceipts, Get Receipt Lines and what is manual.
- Invoice exception rateHow many invoices fail matching.
Sources
Checked on November 13, 2026. Vendor capabilities and prices change; confirm current details with each vendor.
- Oracle NetSuite Help, 3 Way Match Vendor Bill Approval Workflow — what the workflow validates; part of the NetSuite Approvals Workflow SuiteApp
- Oracle NetSuite Help, Setting Up 3 Way Match Vendor Bill Approval — required features, Approval Routing preference, Match Bill to Receipt
- Oracle NetSuite Help, 3 Way Match Vendor Bill Approval Exception Criteria — [SS] criteria; Bill in Advance of Receipt; partial receipts not supported
- Oracle NetSuite Help, Setting Tolerance and Difference Limits — subsidiary, vendor and item fields; blank fields skip checks
- Oracle NetSuite Help, Best Practices When Using the Tolerance and Difference Limits — tolerance is a percentage, difference is absolute
- Oracle NetSuite Help, Disabling Exception Criteria — disable criteria that conflict with tolerances