Retail three-way matching: resolve partial receipts before payment
For accounts payable lead with receiving and procurement · Plan implementation
TL;DR — what you’ll learn
- Anchor accounts-payable three-way invoice matching on **net accepted goods receipt quantities** (`Received Quantity minus QC Rejected Quantity`), never on raw purchase-order (PO) quantities or dock-arrival counts.
- When a purchase order specifies `240 units`, `210 units` arrive at the warehouse dock, and `8 units` fail quality inspection (`202 accepted units`), a supplier invoice billing all `240 units` must be automatically placed on an `Overbilled Quantity Hold` (`38-unit variance`) rather than passing against the `240-unit` PO ceiling.
- Track line-level cumulative matched quantities across partial receipts and multi-GRN invoices so a supplier invoice combining two partial deliveries (`e.g., GRN-1 for 120 accepted units and GRN-2 for 82 accepted units = 202 units`) consumes each receipt line exactly once without double-counting.
- Verify your AP matching engine with three acceptance tests: rejected-unit deduction from matchable quantity, multi-GRN allocation lock, and bounded price-tolerance hold routing.
Topics: retail three way invoice matching · p · u · r · c · h · a · s · e · · o · r · d · e · r · · g · o · o · d · s · · r · e · c · e · i · p · t · · i · n · v · o · i · c · e · · m · a · t · c · h · ; · · p · a · r · t · i · a · l · · r · e · c · e · i · p · t · · i · n · v · o · i · c · e · · e · x · c · e · p · t · i · o · n · ; · · r · e · t · a · i · l · · a · c · c · o · u · n · t · s · · p · a · y · a · b · l · e

Illustrative e-commerce returns grading and warehouse inventory reconciliation desk; not a client facility.
All quantities, amounts, product codes and events are illustrative teaching examples.
A specialty kitchenware retailer issues purchase order PO-MUM-4410 for 240 units of cast-iron skillets (SKU-CI-SK26) at an agreed unit cost of ₹850.00 (₹204,000.00 total PO value before GST). On Tuesday, the supplier delivers a partial shipment of 210 units (GRN-8810) to the Bhiwandi distribution centre; the remaining 30 units are backordered. During inbound quality inspection on Wednesday morning, warehouse staff identify 8 units with cracked enamel coatings and log a formal rejection (REJ-8810-01 for 8 units), leaving exactly 202 net accepted units (₹171,700.00 accepted inventory value) posted to sellable stock. However, the supplier's billing clerk generates tax invoice INV-SUP-9920 for the full original PO quantity of 240 units (₹204,000.00). Because the retailer's ERP is configured with a weak two-way PO check—and its warehouse integration feeds raw dock arrival quantity (210 units) without deducting the 8 rejected units—an AP clerk overrides the partial-delivery warning and schedules INV-SUP-9920 for payment. The retailer overpays for 38 unaccepted units (30 unshipped + 8 rejected = ₹32,300.00 base value) and spends six weeks chasing a vendor credit note.
The operational decision for an accounts payable lead with receiving and procurement across multistore, specialty retail, and omnichannel businesses is how to allocate vendor invoice lines strictly to net accepted receipt quantities before applying approved price tolerances—following Dynamics 365 Finance three-way invoice matching controls and structured supplier purchase-order receipt tracking—so overbilled or rejected goods are never paid without documented commercial resolution (Microsoft Learn — Accounts payable invoice matching in Dynamics 365 Finance, Shopify Help Center — Managing suppliers and purchase orders). By linking this control to retail purchase order partial receipt controls and retail invoice OCR extraction evaluation, accounts payable lead with receiving and procurement teams prevent downstream financial, operational, and audit breaks before records or funds move.
Why PO-header checks and unadjusted dock receipts leak cash in retail AP
In retail procurement, a single purchase order frequently splits across multiple inbound deliveries, experiences short-shipments during peak season, and suffers carton or unit-level damage rejections at the receiving dock. If accounts payable treats three-way matching as a simple comparison of Invoice Total vs PO Total, four costly control failures occur:
- Matching against raw dock arrivals instead of net QC-accepted stock: When a truck unloads
210 cartons, the receiving clerk may log an initial gate receipt of210 unitsbefore quality inspection rejects8 damaged units. If the AP matching engine queriesGross_Received_Qty (210)instead ofNet_Accepted_Qty (202 = 210 - 8), AP will approve payment for8 damaged units(₹6,800.00) that were never accepted into sellable inventory. - Allowing full-PO invoices (
240 units) to pass against open partial receipts (202 units): Suppliers routinely generate their invoice at factory dispatch for the full240 unitsordered, or bill the entire PO when only the first partial truckload (210 units) has arrived. Without a line-levelOpen_Unmatched_Accepted_Qtyceiling, AP pays for30 unshipped units(₹25,500.00) before they ever reach the warehouse. - Double-counting a single GRN across two partial supplier invoices: Conversely, when a supplier sends two separate invoices (
INV-AandINV-B) that both reference the samePO-MUM-4410, an ERP that checksInvoice_Qty <= Total_PO_Received_Qtywithout decrementingRemaining_Uninvoiced_Accepted_Qtyon each GRN line can inadvertently match both invoices against the sameGRN-8810receipt. - Misapplying percentage tolerances to unreceived units: Price and invoice-total tolerances (
e.g., ±1.0% or ₹500.00for rounding and minor unit-rate drift) exist to stop trivial unit-price fractions from blocking payment—not to permit billing for unreceived physical units. Quantity overbilling aboveNet_Accepted_Qtymust have a0-unittolerance unless procurement logs a verified dock re-count adjustment.
To enforce strict line-level three-way matching, govern every invoice line (L) through four equations:
Net Accepted Receipt Qty (GRN_k, Line L) = Gross_Dock_Received_Qty(k, L) - QC_Rejected_Quarantined_Qty(k, L)Available Matchable Qty (PO Line L) = Sum_k(Net Accepted Receipt Qty(k, L)) - Sum_m(Previously_Matched_Invoice_Qty(m, L))Unmatched Overbilled Qty (Invoice Line L) = Max(0, Invoiced_Qty(L) - Available_Matchable_Qty(L))Payable Base Amount (Approved Partial Match) = Min(Invoiced_Qty(L), Available_Matchable_Qty(L)) x Min(Invoiced_Unit_Price(L), PO_Unit_Price(L) x (1 + r_price_tol))
Scroll horizontally to see all columns.
| Three-way matching discrepancy type | Operational root cause | System matching key & formula check | Tolerance policy | Mandatory resolution path & owner |
|---|---|---|---|---|
Short delivery (210 arrived vs 240 PO) |
Supplier short-shipped 30 units; billed full 240-unit PO | Invoiced_Qty (240) > Gross_Received (210) (30u gap) |
0 units (Hard hold on unreceived stock) |
Receiving + AP: Confirm no unposted dock receipt; require credit note or partial payment (202u) |
Inbound QC rejection (8 rejected of 210) |
Damaged/defective units quarantined at receiving (202 accepted) |
Net_Accepted = 210 - 8 = 202u (8u QC deduction) |
0 units (Rejected units never payable) |
Receiving + Vendor Desk: Attach QC rejection note REJ-8810-01 and issue 8-unit debit/credit claim |
Multi-GRN composite invoice (GRN-1 + GRN-2) |
One supplier invoice bills across two separate partial deliveries | Allocate INV_Qty across GRN-1_Open_Qty + GRN-2_Open_Qty |
Exact sum (GRN_Open_Qty decremented to 0) |
AP System: Lock consumed GRN quantities so neither GRN can be matched to a second invoice |
| Minor unit-price rounding variance | Tax-exclusive unit rate differs by ₹1.50 due to pack-size division |
` | Inv_Price - PO_Price | / PO_Price <= 0.5%and<= ₹500` |
Material unit-price overcharge (>0.5%) |
Supplier billed old rate card (₹890.00 vs PO ₹850.00) |
Inv_Price (₹890) > PO_Price (₹850) (+4.71% breach) |
Hard hold above 0.5% or ₹500.00 |
Procurement Buyer: Either upload signed PO price amendment or enforce ₹40.00/u vendor credit note |
When the ERP enforces Available Matchable Qty = 202 units (210 received - 8 rejected) with a zero-unit overbilling tolerance, no AP clerk can accidentally pay for 38 missing/damaged units without triggering an explicit executive exception workflow.
Worked illustrative example: resolving a 240-unit invoice against 210 received and 8 rejected units
Illustrative example (hypothetical scenario): To see how line-level three-way matching protects working capital, follow purchase order PO-MUM-4410 for cast-iron skillets (SKU-CI-SK26) from warehouse dock arrival through accounts-payable settlement.
Step 1: Establish the baseline operational and financial parameters
- Purchase order and receiving parameters:
- Purchase Order (
PO-MUM-4410):240 unitsofSKU-CI-SK26ordered at₹850.00per unit (₹204,000.00base PO total). - Inbound Delivery (
GRN-8810): Supplier ships210 units(₹178,500.00gross arrival value), leaving30 units(₹25,500.00) unshipped on the PO. - Inbound QC Inspection (
REJ-8810-01): Receiving quality control rejects8 units(₹6,800.00) due to cracked enamel and moves them to theReturn-to-Vendor (RTV) Quarantine Cage. - Net Accepted Inventory Receipt:
210 gross received - 8 QC rejected = 202 net accepted units, valued at202 x ₹850.00 = ₹171,700.00.
- Purchase Order (
- Supplier invoice submission (
INV-SUP-9920):- The supplier submits
INV-SUP-9920billing240 unitsat₹850.00per unit =₹204,000.00base amount (plus 18% GST).
- The supplier submits
Step 2: Reconcile states, exceptions, and financial or compliance impact
Now trace how the three-way matching engine evaluates INV-SUP-9920 and resolves the discrepancy:
- Step 2A — Quantity waterfall evaluation: The matching engine compares
Invoiced_Qty = 240 unitsagainstAvailable_Matchable_Qty = 202 units(GRN-8810). It detects a total quantity variance of240 - 202 = 38 units(₹32,300.00at₹850.00/unit), decomposed into:Short-Shipped Unreceived Variance = 240 PO - 210 Arrived = 30 units(30 x ₹850.00 = ₹25,500.00).Inbound QC Rejected Variance = 8 rejected units(8 x ₹850.00 = ₹6,800.00).
- Step 2B — Automatic AP hold and exception routing: Because
Unmatched_Overbilled_Qty = 38 units > 0,INV-SUP-9920is placed onAP_THREE_WAY_QTY_HOLD. The system automatically attachesGRN-8810(210 arrived) andREJ-8810-01(8 rejected) to the exception packet and notifies the supplier and procurement buyer. - Step 2C — Documented resolution and GRN consumption lock: The supplier issues formal tax credit note
CN-SUP-410for38 units(₹32,300.00base + GST), or AP posts the invoice coupled with an approved38-unitvendor debit note (DN-MUM-4410for₹32,300.00), releasing net payable value of202 x ₹850.00 = ₹171,700.00. Upon posting,GRN-8810'sAvailable_Matchable_Qtyis decremented from202 unitsto0 units. When the remaining30 backordered unitslater arrive onGRN-8905(30 accepted units = ₹25,500.00) with a new invoiceINV-SUP-9985(30 units), the engine matchesINV-SUP-9985exclusively againstGRN-8905without touching the already-consumedGRN-8810.
Scroll horizontally to see all columns.
| Waterfall stage / document ref | Physical / billed quantity | Unit cost (₹) |
Base rupee value (₹) |
Matchable status in ERP | Control owner & audit trail |
|---|---|---|---|---|---|
1. Original Purchase Order (PO-MUM-4410) |
240 units | ₹850.00 | ₹204,000.00 | Authorized commitment ceiling | Procurement Buyer (PO v1 signed) |
2. Unshipped Shortfall (PO vs Dock) |
-30 units | ₹850.00 | -₹25,500.00 | Unreceived — Blocked from AP match | Receiving Dock (GRN-8810 = 210u arrived) |
3. Inbound QC Rejection (REJ-8810-01) |
-8 units | ₹850.00 | -₹6,800.00 | Quarantined RTV — Blocked from AP match | QC Inspector (8u enamel defect logged) |
4. Net Accepted Receipt (GRN-8810) |
202 units | ₹850.00 | ₹171,700.00 | Approved Matchable Quantity Ceiling | WMS -> ERP Inventory Ledger (202u) |
5. Supplier Invoice (INV-SUP-9920) |
240 units billed | ₹850.00 | ₹204,000.00 | Held (38u = ₹32,300.00 overbilled) |
AP Lead (Cleared at ₹171,700 after ₹32,300 CN) |
Verified scenario calculation summary
Original_PO_Commitment (PO-MUM-4410) = 240 units * ₹850.00 = ₹204,000.00Net_Accepted_Receipt_Qty (GRN-8810) = 210 gross arrived units - 8 QC rejected units = 202 net accepted unitsVerified_Payable_Inventory_Base = 202 accepted units * ₹850.00 = ₹171,700.00Unmatched_Overbilled_Qty (INV-SUP-9920) = 240 invoiced units - 202 accepted units = 38 units (30 short-shipped + 8 QC rejected)Held_Overbilled_Rupee_Variance = (30 * ₹850.00) [₹25,500.00 short-shipped] + (8 * ₹850.00) [₹6,800.00 rejected] = ₹32,300.00Reconciled_Invoice_Settlement = ₹204,000.00 (Invoiced) - ₹32,300.00 (Credit/Debit Note for 38u) = ₹171,700.00
By enforcing the 202-unit net accepted receipt ceiling, accounts payable prevents a ₹32,300.00 overpayment before cash leaves the bank, rather than discovering the 30 short-shipped and 8 rejected units during a year-end inventory write-off.
Standard operating workflow for retail three-way invoice matching
To ensure every supplier payment is backed by accepted physical stock and contracted pricing, implement four operational steps across receiving, procurement, and AP:
- Enforce composite matching keys across PO line, GRN line, and SKU (Owner: Accounts Payable Systems Lead). Configure the ERP matching engine to join vendor invoices on
(Vendor_ID, PO_Number, PO_Line_Number, GRN_Number, SKU_ID)rather than matching on header rupee totals. When a single invoice covers two GRNs (GRN-1andGRN-2), require explicit line allocation against each GRN's open accepted balance. - Feed net QC-accepted quantities—not gross dock arrivals—into the AP match pool (Owner: Warehouse Receiving Supervisor). Hold inbound receipts in a
Pending QC Inspectionstaging state until damaged or defective units are counted. Only theNet_Accepted_Qty(210 arrived - 8 rejected = 202 units) may populate the APMatchable_Receipt_Qtyfield, while rejected units (8 units) automatically generate an RTV claim record. - Separate quantity holds (
0-unittolerance) from bounded unit-price tolerances (Owner: Accounts Payable Lead + Financial Controller). Configure a hard0-unitupper tolerance onInvoiced_Qty > Available_Matchable_Qtyso unreceived goods never auto-approve. Restrict automated tolerances (e.g., <= 0.5% and <= ₹500.00 per invoice) strictly to tax-rounding or minor unit-price fractions on accepted units. - Route held invoices to accountable owners with immutable approval evidence (Owner: Procurement Buyer + AP Lead). Route
Quantity Holdsto the warehouse receiving supervisor (to verify if a physical delivery scan was missed) or the vendor desk (to obtain a credit note for short/rejected goods), and routePrice Holdsto the category buyer. Record every hold release, credit-note link, and approver ID in the voucher audit trail.
Choosing the right implementation order: Configure native ERP three-way matching rules, GRN quantity locks, and tolerance thresholds first; introduce automated invoice OCR or document extraction only after your matching gates are solid and manual data-entry effort is proven to be the actual bottleneck.
Data lineage, exception handling, and system configuration boundaries
Before deploying this workflow across multistore; specialty retail; omnichannel operations, accounts payable lead with receiving and procurement teams must lock down four structural specifications that govern how records move from source capture to final sign-off:
- Authoritative input data contract: Every run of this workflow must ingest and version-stamp the required source fields: po versions; receipt lines; rejection records; invoice lines; tax fields; tolerance policy; approval history. Do not allow downstream summaries or manual adjustments to bypass these primary inputs; if a required identifier, timestamp, or supporting document reference is absent from the feed, hold the record in a pre-posting staging queue rather than interpolating missing values.
- Deterministic exception quarantine rule: Operational streams routinely encounter edge cases that violate standard matching assumptions—specifically, a supplier invoice aggregates two receipts; allocate quantities explicitly without counting either receipt twice. Rather than forcing an automated override or silently netting out the discrepancy, isolate the anomalous record in a dedicated exception state with its full supporting evidence bundle attached for human review.
- Pragmatic system architecture and tooling choice: Configure ERP matching first; introduce document extraction only when data-entry effort is the actual constraint. Avoid over-engineering custom integration code before the underlying business rules, approval limits, and exception classifications are proven stable in a controlled operating model.
- Verifiable acceptance and audit standard: The workflow is only considered production-ready when a test set catches overbilling and allows a supported partial invoice while preserving approver evidence. Furthermore, before any external reporting or policy reliance, require joint sign-off from the designated process owner and specialist reviewer confirming that all sample calculations, state transitions, and exception queues reconcile to primary source queries.
Operational governance and audit controls for sustained compliance
To prevent this workflow from eroding after the initial implementation sprint across identify match keys; distinguish accepted and rejected receipts; resolve quantity/price differences; configure tolerances; prove approval history, embed four recurring governance checkpoints into your weekly retail operations cadence:
- Version-locked rule and threshold tables: Store every tolerance band, status-transition rule, and exception-routing map in a versioned configuration table rather than ad-hoc personal spreadsheets. Any threshold change requires sign-off from accounts payable lead with receiving and procurement and commercial finance, recording the effective timestamp and the cohort of transactions or accounts affected.
- Automated daily orphan and stale-state sweep: Run a scheduled morning query that flags records stuck in an intermediate state (
Pending Verification,Awaiting Evidence,Held for Review, orDisputed) beyond their agreed service-level cutoff. Route aged exceptions directly to the named role owner before period-close or regulatory cutoffs are breached. - Separation of operational execution from financial or compliance sign-off authority: Staff who execute operational entries, catalogue updates, or customer service actions should never have unilateral system permission to clear reconciliation variances, alter legal mappings, or post financial write-offs. Require independent review once cumulative adjustments exceed your materiality floor.
- Monthly root-cause retrospective tied to source-system hygiene: Aggregate exception logs by upstream root cause—such as missing remittance references, unversioned rate-card changes, or unmapped channel fields—and require the responsible upstream team to remediate the top three recurring defects before the next monthly cycle.
Bounded pilot scope, baseline measurement, and stop/recovery criteria
Because this workflow alters operational control gates across finance and financial reconciliation, run a bounded 30-day pilot in one category, carrier, or vendor cohort before enabling enterprise-wide enforcement:
Scroll horizontally to see all columns.
| Pilot governance dimension | Bounded design parameter | Accountable owner | Verification evidence required before expansion |
|---|---|---|---|
| Bounded pilot scope | Top 25 merchandise suppliers shipping into the primary distribution centre (~180 purchase orders and ~260 GRNs over 30 days). |
Accounts payable lead with receiving and procurement | Signed scope charter naming the exact carrier, vendor cohort, or channel group and excluding automated general-ledger postings until parallel reconciliation passes. |
| Pre-change baseline window | 30-day pre-pilot AP ledger audit measuring partial-receipt invoice exception rate, post-payment debit-note claims (₹), and GRN-to-invoice resolution time. |
Accounts payable lead with receiving and procurement + commercial finance analyst | Locked 30-day historical baseline extract recording denominator counts, exception rates, and manual rework hours prior to rule activation. |
| Stop and recovery triggers | Allow supervised AP manager override with mandatory Dual-Sign-Off reason code if a WMS-to-ERP receipt sync outage delays verified GRN posting by >24 hours. |
Accounts payable lead with receiving and procurement + IT systems administrator | Tested rollback procedure that pauses automated holds or queue transitions within 30 minutes, preserves raw event logs, and reverts to supervised manual review. |
During the pilot window, hold a weekly joint review between accounts payable lead with receiving and procurement, fulfilment or receiving operations, and commercial finance to inspect every quarantined exception record. Do not expand the rule set to additional cohorts or automate ledger adjustments until the pilot achieves zero unexplained reconciliation breaks across two consecutive weekly cut-offs.
Observable acceptance tests for your retail systems
Before relying on this workflow in production, execute three deterministic acceptance tests (ACT-R075-01 to ACT-R075-03) in your staging environment or controlled worksheet:
Scroll horizontally to see all columns.
| Test ID | Scenario setup | Action executed in system | Expected pass criteria | Failure indicator |
|---|---|---|---|---|
ACT-R075-01 |
Create PO-MUM-4410 for 240 units at ₹850.00, post GRN-8810 with 210 gross arrived and 8 QC rejected (202 net accepted), and enter INV-SUP-9920 for 240 units (₹204,000.00). |
Run the three-way invoice matching validation. | System blocks payment release, places INV-SUP-9920 on AP_QTY_HOLD, and displays Matchable = 202u (₹171,700.00); Overbilled = 38u (₹32,300.00). |
System matches INV-SUP-9920 against the 240-unit PO header or the 210-unit gross arrival count. |
ACT-R075-02 |
Post two partial receipts on PO-MUM-4420: GRN-A (120 accepted units) and GRN-B (82 accepted units), then match INV-1 for 202 units across both GRNs. |
Attempt to enter a second supplier invoice (INV-2 for 82 units) referencing GRN-B. |
System confirms GRN-A (0 open) and GRN-B (0 open) are fully consumed by INV-1 and blocks INV-2 as a duplicate billing exception. |
System allows GRN-B (82 units) to be matched a second time against INV-2. |
ACT-R075-03 |
Enter an invoice for 202 accepted units at ₹890.00/unit (+4.71% above the ₹850.00 PO price; ₹8,080.00 price variance) under a 0.5% / ₹500.00 price tolerance rule. |
Execute the three-way match check. | System passes the 202-unit quantity check but places the voucher on AP_PRICE_HOLD (₹8,080.00 > ₹500.00 ceiling) and routes to the procurement buyer. |
System auto-approves the ₹40.00/unit price hike or posts ₹8,080.00 silently to price variance. |
Putting strict three-way invoice matching into practice
To stop paying suppliers for short-shipped or QC-rejected stock, execute these four steps with your AP and receiving teams:
- Audit your ERP's receipt-matching field mapping today: Verify that your three-way match formula reads
Net_Accepted_Qty(Gross Dock Arrival minus QC Rejections) rather than raw gate-entry quantities. - Enforce a zero-unit overbilling tolerance above accepted receipts: Ensure that percentage tolerances (
e.g., 0.5%) apply only to minor unit-price rounding on accepted units, never allowingInvoiced_Qtyto exceedAvailable_Matchable_Qty. - Lock consumed GRN line quantities across partial and composite invoices: Test multi-GRN and split-invoice scenarios in your ERP to confirm that once a GRN line's accepted units are matched, its open matchable balance drops to zero.
- Inspect a 30-day sample of AP exceptions before buying invoice OCR tools: Measure how many AP delays come from unposted warehouse receipts, unlogged QC rejections, or unapproved supplier price changes versus manual typing before investing in extraction software.
Discuss this workflow
Inspect a sample of AP exceptions before choosing matching rules or OCR with NextEdge Labs to lock down partial-receipt and QC-rejection controls.
References
Sources checked 15 October 2026. Vendor documentation supports platform facts; the worked examples and diagrams are original.
- Microsoft Learn — Accounts payable invoice matching in Dynamics 365 FinanceCovers purchase order, product receipt, and vendor invoice three-way matching rules, tolerance configurations, and discrepancy holds before settlement.
- Shopify Help Center — Managing suppliers and purchase ordersDocuments purchase-order creation, supplier SKU mapping, inbound receipt recording, and vendor reconciliation for retail locations.

