Xero Purchase Orders: 2- & 3-Way Matching Explained for Finance Teams

Xero Purchase Orders: 2- & 3-Way Matching Explained for Finance Teams

Xero Purchase Orders: 2- & 3-Way Matching Explained for Finance Teams

Automations

2 Oct 2025

2 Oct 2025

.

.

10 min read

10 min read

Xero Purchase Orders: 2- & 3-Way Matching Explained for Finance Teams

Artur Gavrilenko

Product Marketing Manager at Approveit

Artur knows what users actually need and what they don’t. With hands-on experience in product marketing, he connects user feedback with product value to make automation easy to adopt and hard to live without.

Artur Gavrilenko

Product Marketing Manager at Approveit

Artur knows what users actually need and what they don’t. With hands-on experience in product marketing, he connects user feedback with product value to make automation easy to adopt and hard to live without.

Artur Gavrilenko

Product Marketing Manager at Approveit

Artur knows what users actually need and what they don’t. With hands-on experience in product marketing, he connects user feedback with product value to make automation easy to adopt and hard to live without.

In accounts payable, 2-way matching means comparing a supplier invoice to the originating purchase order to confirm that core terms like quantities, unit prices, tax and supplier details align before posting and paying. 3-way matching strengthens that control by also verifying that goods or services were actually received, typically via a goods-received note (GRN) or receipt confirmation, before the invoice can be approved for payment. In Xero, finance teams already have a practical 2-way match workflow because you can create and link bills directly from purchase orders; details copy across, which reduces manual coding and duplication. For true 3-way matching with automated tolerances (for example, ±5% price or quantity variances), exception holds and line-level controls, teams usually connect a specialist AP/procurement app from the Xero App Store designed to perform PO ↔ receipt ↔ invoice matching. Approveit complements this landscape by speeding PO and bill approvals in Slack or Microsoft Teams, syncing approved purchase orders to Xero, and preserving a clean, time-stamped audit trail across your process, so you keep approvals where your team already works while maintaining accounting-grade evidence.

While you evaluate matching levels, you can keep approvals moving with Approveit’s native collaboration flows and accounting integrations, see the Integrations overview, the Slack approvals guide, Procurement Automation (including PO sync to Xero), and the Xero Purchase Orders user guide for set-up specifics.

Matching in accounts payable, defined

At its core, matching is there to stop erroneous, premature, or fraudulent payments before they leave your bank. A purchase order states what you intended to buy; an invoice states what the supplier says you owe; a receipt or GRN records what actually arrived. Your matching policy determines which of these documents must align, at what level of precision, and under what tolerances, before finance is allowed to post and pay.

In 2-way matching (PO → Invoice), AP compares the supplier invoice against the purchase order. Typical fields include PO number and supplier ID to ensure you’re matching the right documents, and then line-level attributes such as item descriptions or SKUs, quantities, unit prices, discounts, tax rates and codes, and accounting dimensions like tracking categories or cost centres. When these attributes agree within policy, the invoice is cleared for approval. This approach reduces overpayments and duplicates, curbs manual recoding, and accelerates processing for straightforward purchases, especially services where there’s no physical delivery to verify.

In 3-way matching (PO → Receipt/GRN → Invoice), finance layers on proof of receipt. Before approval, the system confirms that the quantity and (where applicable) the specific items actually received match both the purchase order and the invoice. This step is particularly valuable whenever deliveries are partial, prices are subject to change, or quality inspection matters. By insisting that an invoice cannot be approved without a related receipt record, 3-way matching shifts control earlier in the process and makes it harder for mismatches or premature billing to slip through.

It’s also useful to distinguish header- vs line-level matching. Header-level checks compare totals, invoice grand total vs PO total, plus supplier and date metadata. Line-level checks dive into itemized details, ensuring that each invoice line rolls up from an approved PO line and, in 3-way scenarios, that the received line supports the same quantity and price. Most organisations combine both, but line-level matching offers tighter control over substitutions, unit-of-measure issues, and mixed-rate tax lines that can hide variance at the header level.

Finally, every matching policy lives or dies by tolerances and exception holds. In practice, perfect matches are rare. Exchange rates move, suppliers round differently, and freight or duties appear after the PO. A robust policy sets quantitative thresholds (for example, accept price variances of up to 5% or $50, whichever is lower) and qualitative boundaries (for example, no quantity overages without a revised PO). In a modern AP stack, invoices outside tolerance automatically fall into an exception queue for review, while in-tolerance differences are auto-approved to keep throughput high.

How 2-way matching works in Xero today

Xero provides a straightforward PO → Bill flow that many finance teams adopt as their day-to-day 2-way matching pattern. You raise purchase orders in Xero, and when the supplier invoice arrives you create a bill from the purchase order or link the bill to an existing PO. The system copies vendor details, line items, quantities, unit prices, tax codes and tracking categories from the PO into the draft bill. This reduces manual coding, keeps account allocations consistent, and helps your team catch obvious mismatches before they hit the ledger.

Where deliveries arrive in stages, Xero’s PO-to-bill conversion supports partial billing. You can adjust quantities while converting or mark only certain lines as billed, leaving the remaining PO balance open for future invoices. If a bill is captured first (for example, via email or an add-on) you can still link it to outstanding purchase orders for the same supplier to reconcile intent and invoice. These affordances give AP a practical, operator-friendly 2-way control without leaving the accounting system.

What this native flow does not provide out-of-the-box is automated tolerance logic or a formal receipt/GRN checkpoint that blocks payment until the organisation has confirmed receipt. That’s by design: Xero focuses on general ledger, sales and purchasing fundamentals and relies on connected apps to add procurement-grade matching and exceptions. If you need automated variance thresholds, line-level exception routing, segregation of duties around receiving, or multi-step approvals tied to document state, you’ll typically connect a procurement/AP app that specialises in these controls while syncing bills and POs back to Xero for posting and payment.

Meanwhile, you can still modernise approvals even if you keep matching inside Xero. Approveit routes PO and bill approvals in Slack or Microsoft Teams, captures every decision with timestamps, and syncs approved purchase orders to Xero, so the accounting records remain clean while business users never leave their collaboration tools. See how to run approvals directly in Slack and how Approveit syncs POs and bills with Xero using the resources linked above.

What 3-way matching adds

The defining addition in 3-way matching is the receipt step. Someone, warehouse, operations, requestor, confirms what arrived and when. The system records a GRN or receipt entry with quantities received, then compares PO ↔ receipt ↔ invoice. If the invoice quantity exceeds what’s received, the invoice is put on hold. If the price on the invoice exceeds the PO price beyond tolerance, it’s routed for review or a PO amendment. If quantities match but the goods fail inspection, some organisations extend the control to 4-way matching, adding a quality/inspection record before approval. The net effect is a proof-of-performance requirement before cash leaves the business.

In the Xero ecosystem, this capability is delivered by connected AP and procurement apps. The Xero App Store explicitly highlights 3-way matching in its procurement and accounts payable collections, pointing to apps that implement line-level PO/receipt/invoice matching with user-defined tolerances, exception workflows, and audit trails. These tools maintain supplier catalogues, enforce budget checks, and log every receiving event, then sync approved bills back to Xero so your ledger remains the single source of truth for payables and reporting. Typical solutions support partial receipts, backorders, landed-cost allocations, and hold rules so invoices can’t slip through until receiving is complete.

Because 3-way matching touches multiple teams, it benefits from frictionless approvals and clear evidence. Approveit helps on both fronts: approvers stay in Slack/Teams; finance gets a centralised audit trail with who approved what, when, and based on which supporting documents. When you use Approveit to orchestrate approvals across request, receive and invoice stages, and a specialised app to enforce matching, you combine operational speed with compliance-grade guardrails, without burying the business in email chains.

2- vs 3-way: which should finance teams choose?

The right answer depends on risk, operating model, and audit requirements. If you’re buying services, legal, design, subscriptions, there is usually no physical receipt to capture, and project managers are best placed to validate delivery. A well-run 2-way matching process with clear approval policies, consistent coding, and visibility can be more than sufficient, and it avoids the overhead of maintaining item catalogues and receipt events for non-inventory spend. In Xero, creating bills from POs and keeping approvals in Slack/Teams via Approveit already gives you cleaner ledgers, fewer duplicates, and better cycle times.

Conversely, if you handle inventory or capital items, work with partial deliveries, or operate in audit-heavy industries like construction, manufacturing, healthcare or public sector, 3-way matching becomes compelling. It enforces a simple rule: no invoice can be paid unless the organisation acknowledges receipt of what it ordered, within agreed tolerances. This matters when quantities are split across shipments; when prices can fluctuate with commodities, FX, or freight; or when quality checks are mandatory. A connected procurement/AP app can capture receipts on mobile, record serial/lot data where necessary, enforce line-level tolerances, and prevent payment until discrepancies are resolved, all while returning approved bills to Xero for posting and payment.

Many teams also adopt a hybrid policy: default to 2-way for low-risk services and escalate to 3-way for specific suppliers, categories, or order values. The point is to align control intensity with risk. You may start by cleaning up PO creation and bill linking in Xero, then layer Approveit to standardise who approves what and to centralise your audit trail, and finally add 3-way matching where the data and risk justify it. Approveit makes that path smoother by meeting users where they work (Slack/Teams) and keeping every state change and comment captured, which eases audits and dispute resolution later.

When you’re ready to operationalise, sketch three things:

  1. Scope, which categories and vendors require receipts to approve invoices.

  2. Tolerances, how much variance you’ll allow per line and in total.

  3. Exception flow, who triages mismatches and what evidence they need.

From there, configure your Xero POs to carry the right coding from the outset, train requestors on when to raise POs, collect bills in a consistent channel, and use Approveit to route approvals and capture decisions in context. If and when you add a 3-way matching app, you’ll already have the data hygiene and approval discipline in place to get value on day one.

Set up & run 2-way matching in Xero

Start by making purchase orders the front door for spend. In Xero, the path is straightforward: go to the Business menu and open Purchase orders, then create a new PO and populate the supplier, delivery and reference fields, as well as the line items that define the commercial promise you’re making, quantities, unit prices, tax treatment and any tracking categories or cost centres. Treat this document as the canonical instruction to the supplier and to your own finance team: it’s what you expect to receive and what you expect to pay, and it’s the anchor Xero will use when you subsequently raise the bill. Because purchase orders are accessible to budget owners and project leads, they’re also the simplest way to push accountability upstream, before any invoice arrives, the intent is visible and pre-approved.

When the supplier invoice lands, resist the urge to key it in from scratch. Instead, open the originating PO and create the bill from the purchase order, letting Xero copy across the header details and line-level coding you already curated. This is the essence of 2-way matching in Xero: you compare the invoice to the PO you raised, but practically you’re saving yourself the comparison work by converting the PO into a draft bill and editing only where the supplier’s document compels you to. If the delivery was complete and the invoice matches the PO, your draft bill will already be correct; if it was a split delivery or the supplier has billed a subset, you adjust quantities or lines at the point of conversion so that the bill reflects what you’re approving for payment now, while the PO remains open for the outstanding balance. This workflow cuts down on recoding and misallocation, and it collapses the error surface of manual entry to the handful of fields that truly changed.

Part-billing is common in project-based and inventory contexts, and Xero accommodates it within the same conversion flow. You can copy just the relevant lines or reduce quantities on the bill if only part of a line has been supplied or invoiced. For situations where the supplier sends invoices ahead of delivery or in staggered batches, your policy should be explicit: approve and post only what the PO covers and what you intend to pay now, leaving the rest on the PO for later. If you need to represent multi-stage fulfilment more formally, such as backorders and part deliveries, remember that Xero doesn’t provide a native goods-receipt module; you handle the accounting by shaping the bill at conversion time and keeping the PO open to track the remainder. This keeps the ledger clean while signalling to the team that more is due.

Once your draft bill matches the PO scope you intend to pay, move it through approve and onto awaiting payment. Xero centralises bill approvals in Bills to pay, and from there you either pay manually or with an online bill-payment workflow if you’ve enabled one. The controls you exercised at the PO and bill-creation stages now pay off; you’re no longer relying on someone to remember coding or tax settings under time pressure, because the PO already carried that structure into the bill. The combined effect is a faster cycle and fewer corrections downstream.

For day-to-day reliability, a few operating habits make 2-way matching in Xero hum. First, enforce a consistent PO numbering convention that is human-readable and auditable, teams will recognise their POs instantly and can search quickly when a bill references the number. Second, train suppliers to print the buyer’s PO number on every invoice; this trivial change pays dividends because your AP staff can locate and convert the right PO in seconds, eliminating mis-matches in busy periods. Third, codify how you handle partials and backorders: when a bill arrives for part of a PO line, adjust the quantity on conversion and leave the balance on the PO; when a supplier will never ship the remainder, close or reduce the PO so your open commitments don’t overstate expected cash outflows. Approveit can reinforce these routines by keeping requests and sign-offs visible in Slack or Microsoft Teams, while the Xero side stays pristine thanks to PO-to-bill conversion rather than ad-hoc entry.

Going 3-way in Xero: receipts/GRN options

If your risk profile or operating model calls for stronger controls, the next layer is to require proof of receipt before an invoice can be approved. In accounting shorthand this is 3-way matching, PO ↔ receipt/GRN ↔ invoice, and it moves the focal point from “does the invoice match what we ordered?” to “does the invoice match what we actually received?” In the Xero ecosystem, the receipt/grn object typically lives in a connected AP or procurement app. Those apps add receiving screens or mobile capture so operations or requestors can confirm deliveries, and then they compare that receiving record against the invoice and the originating PO. Because Xero intentionally keeps purchasing lean, the marketplace points you to these integrations when you need formal matching with tolerances and exception holds.

When you evaluate options, you’ll notice a repeating pattern across vendors: line-level matching that checks quantity and price per item rather than only totals; tolerance rules so small differences within policy auto-clear while larger ones hold for review; many-to-many allocation so one invoice can be matched to multiple POs (and vice-versa) without spreadsheet gymnastics; and a durable audit trail that records who received what and who approved exceptions. Tools such as ApprovalMax, ProcureDesk, Lightyear and Zahara publicly emphasise these capabilities in their Xero-connected offerings, and the App Store descriptions reinforce 3-way matching as a key benefit. Matching at the line level protects you from a class of errors that header-level checks miss, unit substitutions, freight misallocation, changed quantities on an otherwise correct total. Tolerance rules keep throughput high by auto-approving invoices that deviate only within an agreed band, while routing the outliers to the right budget owners with context. Many-to-many matching matters when suppliers consolidate shipments or when a single long-running PO is billed across multiple months. The audit trail makes your external reviews quicker because every approval and receipt is timestamped and attributable.

A concrete illustration helps. Suppose your warehouse books a partial delivery; the receiving entry shows 60 units against a 100-unit PO line. When the supplier invoices for 100, the 3-way engine flags a quantity variance above tolerance and puts the invoice on hold. If the invoice price per unit has also drifted above the PO’s locked rate beyond tolerance, the system adds a price variance and routes it to the category owner or buyer who negotiated the original terms. Some apps expose the GRN status directly on the bill-matching screen so approvers can see Not received, Partially received or Fully received at a glance and take action accordingly. The hold remains until either the missing goods are received or the PO is amended to reflect the new commercial reality. This is how you prevent cash leaving the business for items you didn’t get or prices you didn’t agree to.

Because Xero doesn’t itself record receipts, you implement GRN status and 3-way logic in the connected app, then sync back the approved bill to Xero for posting and payment. From a finance-ops perspective, that’s ideal: the matching logic sits where operations can interact with it, while the ledger remains the clean system of record. As you evaluate apps, look for clean Xero sync of suppliers, accounts and tracking categories, mobile-friendly receiving, configurable line-level tolerances, and reporting that exposes matched vs on-hold invoices and remaining PO balances. Lightyear, for example, promotes automated, line-item 3-way matching with goods-receipt capture; Zahara markets three-way matching and GRN-driven receipt confirmation; ProcureDesk advertises both 2- and 3-way matching alongside Xero integration; and ApprovalMax offers GRN status tracking in a Xero PO workflow plus many-to-many bill-to-PO matching. The Xero App Store collections for Procurement and Accounts Payable make it easy to shortlist vendors that meet these criteria.

How Approveit fits your Xero controls stack

Approvals live where people work. With Approveit, your teams create and approve purchase orders, bills and invoices directly inside Slack or Microsoft Teams, while all the accounting fidelity stays synced to Xero. That means category owners and managers don’t have to learn the Xero interface to participate in spend control; they simply receive a structured request with the right fields, see the PO or bill details, and approve, reject or comment in the same place they collaborate every day. This approach lifts adoption and reduces cycle time without compromising on the audit trail, because Approveit records every decision, actor and timestamp and associates those events with the accounting object that ultimately lands in Xero. If you’re standardising 2-way matching inside Xero, this alone is a major win: bills created from POs arrive already coded, and approvers move quickly because context is embedded. Integrations, including Xero, are configured without code so finance can own the flow.

On the PO lifecycle, Approveit acts as the orchestrator and Xero as the ledger. A requester submits a PO in Approveit; the PO appears in Xero in Awaiting approval with all the structure you expect. As approvers in Slack or Teams clear the request, Approveit updates the status in Xero to Approved, so downstream users can convert it to a bill with confidence. If the request is rejected, Approveit withdraws it from the “awaiting” list so your Xero remains tidy, free of orphaned documents that can confuse receiving and matching. This tight loop keeps your audit trail coherent: the request, approvals, and resulting accounting documents remain aligned across systems. For teams that have struggled with sprawl in the “awaiting approval” queue, this is the difference between chasing ghosts and having a clean worklist. The setup and flow are documented in the Xero Purchase Orders guide, while the Slack approvals guide shows how to keep approvers responsive without email. Approveit guide: Xero purchase orders · Creating & approving requests in Slack.

The operational logic sits comfortably beside any 3-way matching layer you add. If you adopt a GRN-capable app to record receipts and enforce tolerances, Approveit still handles the human approvals, purchase requests, receipt exceptions, price variance overrides, while the matching engine manages the automated holds. That separation supports segregation of duties without proliferating Xero access. Requestors and approvers act in Slack/Teams; the receiving team updates the GRN in the procurement app; finance posts and pays in Xero once the bill is synced and cleared. The result is shorter cycle times, fewer manual touch points, and stronger evidence for auditors because every state change is captured where it belongs. To explore the end-to-end flow from purchase request through to synced PO and bill, see Approveit’s Procurement Automation overview and Xero-specific guides. Procurement automation.

Implementation checklist & controls

Design your controls from the top down, starting with who can raise POs and who approves them. Map SoD lines so the person requesting goods or services is never the same individual who approves the spend or receives the goods. In Xero, that policy becomes muscle memory when every purchase is initiated as a PO and every subsequent bill is created from that PO rather than ad-hoc entry. Decide on numbering conventions that encode useful context, such as entity or location and the year, so a PO number signals where it belongs even outside the system. Then standardise how the team references POs across documents: internal requests should include the intended PO number if pre-assigned, and suppliers should be asked to quote the buyer’s PO number on every invoice to accelerate matching and reduce friction in AP triage. These administrative choices are simple but potent multipliers of accuracy and speed.

If your analysis points to 3-way matching, shortlist Xero-connected apps that support GRN/receipt capture and line-level tolerances. Pilot with a high-volume vendor whose deliveries and invoicing patterns reflect your operational reality, split shipments, occasional price changes, and credits, so you exercise the full edge-case surface area during evaluation. Use the vendor’s live documents to confirm that the app handles many-to-many allocation between invoices and POs, that variance holds are visible and actionable for approvers, and that sync back to Xero produces clean, fully coded bills. Xero’s own App Store collections for Procurement and Accounts Payable are a good starting point because they flag three-way matching explicitly and describe the kinds of controls these apps add around Xero.

For partials and backorders, put a playbook in writing so everyone behaves consistently. In a 2-way scenario, when only part of a PO is billed, convert the PO to a bill and reduce the quantities to the amount you’re paying now, leaving the remainder on the PO. If backordered items won’t arrive, close out or reduce the PO to stop carrying phantom commitments. When you move to 3-way, partials become explicit receiving events, so your invoice holds will resolve automatically as goods are receipted. Regardless of matching level, the goal is the same: reflect economic reality precisely in each stage so the ledger, the approval artefacts and the physical flow agree. Xero’s PO-to-bill conversion tools and awaiting-payment views make the accounting side of this routine quick, and your chosen GRN app will make the operational side reliable.

Finally, train vendors as if they’re an extension of your workflow. Provide a one-page vendor guide that shows where to place the PO number on the invoice, how to format line descriptions to match your items or SKUs, and what your acceptable variances are so they understand when a price change needs prior approval. Ask for itemised PDFs rather than scanned images, which improves field capture in any automation you deploy and removes ambiguity during matching. Vendors that supply clean, structured invoices reduce your exception rate by a surprising margin; your team will feel it within a month of rollout.

FAQs

1.Does Xero support 3-way matching out-of-the-box?
No. Xero gives you a solid 2-way matching workflow by letting you create bills from purchase orders and link them cleanly, but the receipt/GRN layer, formal three-way matching with tolerances and holds, is delivered by connected apps in the Xero ecosystem. That’s by design: Xero keeps purchasing streamlined and relies on add-ons for procurement-grade controls. If your risk profile demands receipts and variance handling, shortlist a GRN-capable app and sync approved bills back to Xero.

2.Can I link a bill to a purchase order in Xero?
Yes. The recommended pattern is to open the PO and create the bill from it so coding and tax treatment carry across, or, if the bill exists first, to link and convert from the PO so the bill inherits the right structure. If only part of the PO is being billed, adjust quantities during conversion to reflect what you intend to pay now. This is the daily workhorse of 2-way matching in Xero and is what allows you to keep approvals fast without sacrificing accuracy.

3. How do I track goods received (GRN) with Xero?
You add this capability via an app that records receiving events and exposes GRN status, for example, Not received, Partially received or Fully received, to approvers during bill-to-PO matching. Some tools also surface the remaining PO balance and permit many-to-many allocation so consolidated supplier invoices can be matched cleanly. Once matched and approved, the app syncs the bill back to Xero for posting and payment, while your audit trail keeps the PO, receipts and invoice linked.