Accounting
eProcurement
ERP
Financial Management
NetSuite Procure-to-Pay: Requisitions, Purchase Orders, Receipts and Three-Way Match

Last updated: November 3, 2026 · Independent guide · We do not sell rankings or coverage.
NetSuite procure to pay runs on a chain of linked records: a requisition or purchase request, a purchase order, an item receipt, a vendor bill, a bill payment and, at period end, a vendor bill variance journal. Approval routing gates requests, POs and bills, three-way match tolerances decide which bills pay without review, and variance posting clears the Accrued Purchases account when the bill and the receipt disagree. Automated matching needs an Oracle SuiteApp, while requisition approval, contracts and blanket orders sit in the separately sold Advanced Procurement module.
The NetSuite procure-to-pay flow in eight steps
- Request. An employee enters a requisition (or a purchase request) and it routes for approval.
- Order. A buyer converts approved requisitions into purchase orders on the Order Requisitions page.
- Approve the PO. Purchase order approval routing or a SuiteFlow workflow checks the buyer’s authority.
- Receive. Receiving posts an item receipt against the PO, which updates inventory and Accrued Purchases.
- Bill. AP creates the vendor bill from the PO or receipt, either by hand or through bill capture.
- Match and approve. The 3 Way Match Vendor Bill Approval workflow compares the bill to the PO and the receipt against your tolerances.
- Pay. Approved bills are paid in a run from the Pay Bills page or an electronic payments SuiteApp.
- Post variances and close. Accounting runs Post Vendor Bill Variances and reviews received-not-billed balances before closing the period.
The sequence follows the generic procure-to-pay process; NetSuite changes which feature or SuiteApp enforces each control.
Who owns each stage in NetSuite
A RACI-style summary. Adjust titles to your organization, but keep price changes with purchasing.
| Stage and NetSuite record | Responsible / Accountable | Key control in NetSuite | Output |
|---|---|---|---|
| 1. Requisition or purchase request | Requester / budget owner | Purchase Limit and Purchase Approval Limit on employee records | Approved request |
| 2. Purchase order | Buyer / purchasing manager | PO approval routing; purchase contract pricing where licensed | Approved PO sent to vendor |
| 3. Item receipt | Receiving clerk / warehouse manager | Advanced Receiving; overage preference left off | Receipt, Accrued Purchases credit |
| 4. Vendor bill | AP specialist / AP manager | Bill created from PO; Match Bill to Receipt where needed | Bill pending approval |
| 5. Match and approval | Workflow, AP / controller owns tolerances | 3 Way Match Vendor Bill Approval exceptions | Approved bill or exception |
| 6. Payment | AP manager / controller or treasurer | Payment run approval (SuiteFlow) | Bill payment, bank file |
| 7. Variances and close | Staff accountant / controller | Post Vendor Bill Variances; variance accounts on items | Variance journal, clean accrual |
Stage 1: Requisitions, purchase requests and approval routing
A requisition needs no vendor per line, can span vendors and can become several POs, and buyers can consolidate the same item from several requisitions onto one PO; a purchase request names one vendor and becomes exactly one PO (Oracle NetSuite Help, no date shown).
Purchase request approval uses four employee fields: Supervisor, Purchase Limit, Purchase Approver and Purchase Approval Limit. A request within the requester’s Purchase Limit approves automatically; otherwise it climbs the chain until someone’s Purchase Approval Limit covers it, with an alert if nobody’s does (Oracle NetSuite Help, no date shown).
For requisitions, the Requisitions box on the Approval Routing subtab of Setup > Accounting > Accounting Preferences requires the Requisition Approval Workflow bundle (Oracle NetSuite Help, no date shown), which Oracle ships in the Advanced Procurement SuiteApp, part of the Advanced Procurement Module (Oracle NetSuite Help, no date shown).
What goes wrong: stale approver fields after a manager leaves, so requests stall. Review them quarterly and at each termination.
Stage 2: Converting requisitions to purchase orders and PO approval
Buyers order approved requisitions at Transactions > Purchases/Vendors > Order Requisitions. Each line needs a vendor and rate, the page proposes the qualifying purchase contract with the lowest base rate, and lines consolidate up to the Maximum Purchase Lines to Consolidate preference (Oracle NetSuite Help, no date shown), which defaults to 10 and allows up to 250 (Oracle NetSuite Help, no date shown).
For PO approval, check Purchase Orders on the Approval Routing subtab and optionally replace the standard logic with SuiteFlow (Oracle NetSuite Help, no date shown), or install the Purchase Order Approval Workflow SuiteApp (bundle 239645), which lets you add steps such as a substitute approver (Oracle NetSuite Help, no date shown).
What goes wrong: POs raised after the invoice arrives, which defeats the match. Report POs dated after their bill.
Stage 3: Receiving with Advanced Receiving
Turn on Advanced Receiving under Setup > Company > Enable Features so that receiving and billing are separate transactions. Receivers post quantities at Transactions > Purchases > Receive Order; the PO moves to Partially Received or Pending Billing (Oracle NetSuite Help, no date shown).
A PO has no accounting impact; the receipt puts the value received into Accrued Purchases, which the bill later clears (Oracle NetSuite Help, no date shown). That balance is NetSuite’s version of goods received not invoiced.
Controls and failure points: leave Allow Overage on Item Receipts (Order Management subtab) off, since it lets receivers exceed the PO quantity, and keep PO creation and receiving with different people. Late receipts are the usual failure: the bill arrives first and fails on a missing receipt.
Stage 4: Entering the vendor bill
AP bills received POs at Transactions > Payables > Bill Purchase Orders, one vendor at a time. With Match Bill to Receipt on the PO line, you pick specific receipts and the bill is checked against them (Oracle NetSuite Help, no date shown). Use it for purchases spanning periods.
NetSuite Bill Capture, an add-on Oracle sells without a published price, extracts vendor, PO, item, quantity and price data from emailed invoices and runs two- or three-way matching (Oracle NetSuite, no date shown).
What goes wrong: bills keyed straight to an expense account skip the match. Keep the workflow’s [SS] VB Standalone exception on, which flags bills created without a PO (Oracle NetSuite Help, no date shown).
Stage 5: Three-way match tolerances and bill approval
Native automated matching comes from the 3 Way Match Vendor Bill Approval workflow in the NetSuite Approvals Workflow SuiteApp (bundle 537941). It needs the A/P, Purchase Orders, Advanced Receiving, Approval Routing and SuiteFlow features, the Vendor Bills approval routing box, a supervisor on each bill creator, and a status change from Not Running to Released under Customization > Scripting > Workflows (Oracle NetSuite Help, no date shown).
It compares the bill to the PO (terms, location, quantity, amount) and the receipt (existence, quantity), routing breaches to the creator’s supervisor. Partially received item receipts are not supported (Oracle NetSuite Help, no date shown), so test partial shipments before go-live.
Tolerances sit in six fields on item, vendor (Financial subtab) and subsidiary (Vendor Bill Matching subtab) records: quantity tolerance, amount tolerance and quantity difference, each for bill-to-PO and bill-to-receipt. Tolerances are percentages, differences are absolute quantities, and blank vendor and subsidiary fields switch the criteria off. To use tolerance limits, Oracle says to disable four overlapping default exceptions: VB Qty Greater Than PO Qty, VB Qty Less Than PO Qty, VB Amt Greater Than PO Amt and VB Amt Less Than PO Amt (Oracle NetSuite Help, no date shown).
The two quantity exceptions can also conflict with difference limits. In Oracle’s example, a difference limit of 4 still routes a bill for 98 of 100 units because “VB Qty Less Than PO Qty” is on; copy the workflow and disable the conflicting exceptions (Oracle NetSuite Help, no date shown). Background: our guide to three-way match in accounts payable.
Stage 6: Paying approved bills
Pay bills at Transactions > Payables > Pay Bills, choosing the A/P account, bank account, period and the bills and credits to apply (Oracle NetSuite Help, no date shown). The Payment Runs approval routing box adds a SuiteFlow approval.
What goes wrong: fraudulent bank detail changes, which no match catches. Require a callback for each change and review vendor system notes before each run.
Stage 7: Posting vendor bill variances and closing the period
When receipt and bill differ on quantity, price or exchange rate, the difference sits in Accrued Purchases until you run Transactions > Payables > Post Vendor Bill Variances, which journals it to three accounts set on each item record: Bill Quantity Variances, Bill Price Variances and Exchange Rate Variances (Oracle NetSuite Help, no date shown). It is a manual run by period and transaction type. The period must be open with A/P not locked, and posted journals freeze the related PO, receipt and bill until voided (Oracle NetSuite Help, no date shown).
Per Oracle’s formulas, bill price variance is bill quantity times the difference between bill and receipt unit values, adjusted by an exchange rate factor, and bill quantity variance is the quantity difference times the receipt unit value (Oracle NetSuite Help, no date shown).
Illustration (constructed numbers, single currency): 100 units at $10.00 are received, crediting Accrued Purchases $1,000. The bill is 100 units at $10.30, debiting Accrued Purchases and crediting Accounts Payable $1,030. With a 2% bill-to-PO amount tolerance, the 3% gap routes the bill to the supervisor. After purchasing confirms the price and the bill is approved, the variance run computes 100 × ($10.30 − $10.00) = $30, debiting Bill Price Variances and crediting Accrued Purchases $30, which clears the accrual. See our purchase price variance guide for analysis.
What goes wrong: skipped runs leave unexplained Accrued Purchases balances. Schedule the run before A/P locks and add the Bill Variance Status column to the bill form.
Where Advanced Procurement and punchout fit
Oracle sells NetSuite Procurement as an add-on module, without published pricing, covering requests for quote, purchase contracts with minimum and maximum spend tracking, blanket POs with scheduled releases and vendor management (Oracle NetSuite, no date shown). The Advanced Procurement SuiteApp (bundle 57060) adds a Procurement Dashboard showing POs to approve, late POs, blanket POs to release, expiring contracts and spend by department (Oracle NetSuite Help, no date shown). You need it for contract buying or requisition approval; spot purchasing runs without it.
Punchout runs through SuiteProcurement, an indirect procurement SuiteApp that works with Oracle Business Network. Users shop a supplier store, the SuiteApp creates a purchase request that goes through approval and is sent to the supplier, and confirmations, ship notices and bills come back. Curated suppliers are Amazon (US and Canada) and Staples Contract & Commercial; non-curated partners need Advanced Procurement. It handles non-inventory items only, and Oracle lists it as compatible with accounts without SuiteTax (Oracle NetSuite Help, no date shown). Release 2026.1 added multi-vendor requisitions, partial receipts and multicurrency (Oracle NetSuite Help, updated May 18, 2026).
Metrics to track
- PO compliance: share of vendor bill value linked to a PO, and share of POs dated after the bill.
- First-pass match rate: share of PO-backed bills approved by the 3 Way Match workflow without routing to a supervisor.
- Exception mix: exceptions by criterion, showing whether to fix receiving, purchasing or tolerances.
- Requisition-to-PO cycle time: days from requisition approval to PO creation.
- Receipt lag: days between delivery and item receipt posting.
- Accrued Purchases aging: received-not-billed balances older than 60 or 90 days.
- Variance trend: monthly totals in the three bill variance accounts by vendor and item.
Build these as saved searches and set targets from your own baseline.
How software supports each stage
Core NetSuite covers requests through variance posting; Oracle SuiteApps add PO approval and three-way match; paid add-ons add Advanced Procurement and Bill Capture. Third-party options: SquareWorks sells a NetSuite-native 3-way match bundle with line or header thresholds on quantity, rate or amount, with no published price (SquareWorks, no date shown); Vroozi sells a procure-to-pay platform with requests, approvals and invoice matching for NetSuite (Vroozi, modified October 29, 2026); and Tipalti sells AP automation and payments integrated with NetSuite (Tipalti, updated October 9, 2026).
How we researched this
We read the Oracle NetSuite Help Center topic for each record and SuiteApp, Oracle’s product pages, and vendor pages for the third-party tools, and reviewed the partner and vendor pages that rank for this topic. Oracle help pages show no date; we checked each on November 3, 2026. Confirm paths in a sandbox, since they vary by release and license.
Related guides
- Purchase Requisition Software: Approvals, Budgets, Pricing
- Invoice Approval Workflow: Routing AP Invoices for Sign-Off
Frequently asked questions
Does NetSuite do three-way matching out of the box?
It records the PO, receipt and bill natively, but tolerance-based matching comes from the 3 Way Match Vendor Bill Approval workflow in the NetSuite Approvals Workflow SuiteApp. You install it, enable Advanced Receiving and vendor bill approval routing, and release the workflow.
Where do I set three-way match tolerances in NetSuite?
On the item record, the vendor’s Financial subtab or the subsidiary’s Vendor Bill Matching subtab. Disable the four default exceptions that compare bill and PO quantities and amounts directly, as Oracle instructs, or bills will route for approval even within tolerance.
Why does my Accrued Purchases account not clear in NetSuite?
Usually because vendor bill variances have not been posted. Set variance accounts on each item, close PO lines that will never be received, and run Post Vendor Bill Variances for the period.
Do I need Advanced Procurement to use punchout in NetSuite?
Oracle ties the requirement to non-curated trading partners: connecting them through SuiteProcurement requires Advanced Procurement. The curated suppliers are Amazon and Staples Contract & Commercial.
Can I edit a vendor bill after posting variances?
No. Void or delete the variance journal, correct the bill, and post variances again.
Sources
- Oracle NetSuite Help, Requisitions Overview, no date shown (checked November 3, 2026). docs.oracle.com
- Oracle NetSuite Help, Setting Requisition Preferences, no date shown. docs.oracle.com
- Oracle NetSuite Help, Requisition Approval Workflow, no date shown. docs.oracle.com
- Oracle NetSuite Help, Supervisors, Approvers, and Approval Limits, no date shown. docs.oracle.com
- Oracle NetSuite Help, Ordering Requisitions in Bulk, no date shown. docs.oracle.com
- Oracle NetSuite Help, Approval Routing Accounting Preferences, no date shown. docs.oracle.com
- Oracle NetSuite Help, Purchase Order Approval Workflow SuiteApp, no date shown. docs.oracle.com
- Oracle NetSuite Help, Receiving a Purchase Order With Advanced Receiving, no date shown. docs.oracle.com
- Oracle NetSuite Help, Accounting for Received Purchase Orders, no date shown. docs.oracle.com
- Oracle NetSuite Help, Billing a Purchase Order With Advanced Receiving, no date shown. docs.oracle.com
- Oracle NetSuite, What is NetSuite Bill Capture? (vendor product page), no date shown. netsuite.com
- Oracle NetSuite Help, Setting Up 3 Way Match Vendor Bill Approval, no date shown. docs.oracle.com
- Oracle NetSuite Help, 3 Way Match Vendor Bill Approval Workflow, no date shown. docs.oracle.com
- Oracle NetSuite Help, 3 Way Match Vendor Bill Approval Exception Criteria, no date shown. docs.oracle.com
- Oracle NetSuite Help, Setting Tolerance and Difference Limits, no date shown. docs.oracle.com
- Oracle NetSuite Help, Best Practices When Using the Tolerance and Difference Limits, no date shown. docs.oracle.com
- Oracle NetSuite Help, Paying Bills to Multiple Vendors, no date shown. docs.oracle.com
- Oracle NetSuite Help, Vendor Bill Variances, no date shown. docs.oracle.com
- Oracle NetSuite Help, Posting Vendor Bill Variances, no date shown. docs.oracle.com
- Oracle NetSuite Help, Vendor Bill Variance Journals, no date shown. docs.oracle.com
- Oracle NetSuite, Sourcing Management (NetSuite Procurement product page), no date shown. netsuite.com
- Oracle NetSuite Help, Setup Requirements for the Procurement Dashboard, no date shown. docs.oracle.com
- Oracle NetSuite Help, SuiteProcurement Overview, no date shown. docs.oracle.com
- Oracle NetSuite Help, 2026.1 SuiteApp release notes (SuiteProcurement), updated May 18, 2026. docs.oracle.com
- SquareWorks, 3 Way Match Bundle (vendor page; SquareWorks sells this product), no date shown. squareworks.com
- Vroozi, Procure-to-Pay Platform for NetSuite (vendor page; Vroozi sells this product), modified October 29, 2026. vroozi.com
- Tipalti, NetSuite Procure-to-Pay: Process and Automation Guide (vendor blog; Tipalti sells AP automation), updated October 9, 2026. tipalti.com