AP_HOLDS_ALL — HOLD_LOOKUP_CODE = QTY ORD
PO_LINE_LOCATIONS_ALL — QUANTITY, QUANTITY_BILLED (Shipment ID: 441820)
Analyzes all PO matching tolerance controls and identifies invoices at or beyond quantity, price, amount, and exchange rate tolerance thresholds.
Oracle EBS 3-way and 4-way purchase order matching is the primary control that prevents AP from paying more than was ordered and received. When it works correctly, it is invisible — invoices validate cleanly and process to payment. When it fails, it generates a specific class of system holds — QUANTITY RECEIVED, QTY ORD, PRICE, and AMOUNT — that block the invoice from validation until the underlying discrepancy between the invoice, the PO, and the receipt is resolved. These holds are the correct behavior of the matching engine, not errors. The difficulty is that the resolution path is different for each hold type, and each resolution requires coordination between the AP team, the Purchasing team, and sometimes the Receiving team.
The tolerance configuration in AP_PO_MATCHING_CONTROLS determines when a variance becomes a hold. A 0% quantity tolerance means any overbilling — even a single unit — places a QUANTITY RECEIVED hold. A 5% price tolerance means the invoice price can be up to 5% above the PO price before a PRICE hold fires. When these tolerances are not aligned with the business's actual operational flexibility, the result is a high volume of holds for minor variances that the business considers acceptable — and an AP team spending time releasing holds rather than processing payments.
The subtler problem is the interaction between matching holds and invoice aging. An invoice placed on a QUANTITY RECEIVED hold requires action from the Receiving team before it can be released — but Receiving may have received the goods against a different PO line, or the receipt may be in transit and not yet entered. Meanwhile, the invoice ages on hold, the vendor's payment terms clock continues to run, and the discount cutoff date — if the invoice carries a discount term — approaches. AP-04 identifies these time-sensitive conditions and flags invoices where the hold resolution delay is creating a financial cost through lost discounts or late payment risk.
AP-04 runs a complete analysis of the matching engine state — tolerance configuration by operating unit, all invoices at or beyond tolerance thresholds with exact variance amounts, receipt existence and quantity status per shipment, exchange rate variance for multi-currency matched invoices, and aging analysis with discount risk flags. It generates a prioritized resolution list ordered by financial impact.
AP-04 systematically investigates every major condition that can cause the issue this diagnostic targets. Below is the complete coverage breakdown.
Representative output showing the diagnostic running against a real-world scenario. The script identifies every condition, states the root cause, and generates the fix.
════════════════════════════════════════════════════════════
ORACLE EBS R12 — PO MATCHING TOLERANCE DIAGNOSTIC
════════════════════════════════════════════════════════════
Invoice ID : 2204891
PO Number : PO-2026-07734
Vendor : Consolidated Supply Co (Vendor #: 8812)
Case Number : 848102
Report Date : 22-FEB-2026 14:20:11
════════════════════════════════════════════════════════════
[ SECTION 1 — TOLERANCE CONFIGURATION ] STATUS: ✓ PASS
────────────────────────────────────────────────────────────
Qty Tolerance : 0% (strict)
Price Tolerance : 2%
Amount Tolerance : $100
Match Type : 3-WAY
[ SECTION 2 — QUANTITY VARIANCE ] STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
Qty Ordered : 500.00
Qty Received : 500.00 ✓
Qty Billed : 520.00 ✗
Overage : 20 units — 4% above ordered
✗ FAIL: QTY ORD hold — billed 520 vs ordered 500
Fix Option 1 : Reduce invoice qty to 500 via price correction
Fix Option 2 : Amend PO-2026-07734 Line 1 qty to 520 (buyer approval required)
[ SECTION 3 — PRICE VARIANCE ] STATUS: ✓ PASS
────────────────────────────────────────────────────────────
PO Unit Price : $42.50
Billed Unit Price : $43.10
Variance : 1.4% — within 2% tolerance ✓
[ SECTION 4 — DISCOUNT RISK ] STATUS: ⚠ WARNING
────────────────────────────────────────────────────────────
⚠ Discount date: 28-FEB-2026 — 6 days remaining
⚠ Discount amount at risk: $1,280.00 (2% of $64,000)
════════════════════════════════════════════════════════════
DIAGNOSTIC SUMMARY
════════════════════════════════════════════════════════════
QTY ORD hold — 20 unit overage must be resolved before 28-FEB-2026
Priority: HIGH — $1,280 discount expires in 6 days
════════════════════════════════════════════════════════════
Every table touched by AP-04 data fixes is backed up before the first UPDATE fires. Backup is verified by row count. One script restores the original state if needed.
Backup happens before any DML. Script aborts if backup creation fails.
This article is produced automatically at the end of every AP-04 execution — written from actual run output. No manual documentation required.
Billed quantity exceeds received quantity beyond tolerance. AP-04 shows exact shortfall, tolerance setting, and identifies whether additional receipt is expected or invoice qty should be reduced.
Invoice unit price exceeds PO price beyond tolerance. AP-04 calculates the exact variance, shows the PO price and billed price, and identifies whether a PO amendment or price credit memo is appropriate.
Total invoice amount exceeds PO shipment amount tolerance. Common for service-based POs. AP-04 shows the exact overage and the correct action.
Tolerance set to 0% causing holds on minor variances. AP-04 identifies the tolerance configuration and the business impact of relaxing it.
| Table / View | Schema | Purpose in Diagnostic |
|---|---|---|
| AP_INVOICES_ALL | AP | Invoice header — amounts, vendor, currency |
| AP_INVOICE_LINES_ALL | AP | Invoice lines with PO references |
| AP_HOLDS_ALL | AP | Active matching holds |
| PO_LINE_LOCATIONS_ALL | PO | Shipment quantities and tolerances |
| RCV_TRANSACTIONS | PO | Receipt quantities |
| AP_PO_MATCHING_CONTROLS | AP | Tolerance configuration per OU |
| GL_DAILY_RATES | GL | Exchange rates for multi-currency |
Before any data is modified in a production Oracle database, AP-01 walks through a four-stage decision process. Every condition identified by the diagnostic maps to exactly one resolution path.
Oracle's own forms and concurrent programs are always the first option. If the condition can be corrected through Oracle's standard UI — a form, a concurrent program, a setup screen — that path is taken first. No consultant SQL required, no database risk, and the fix is fully supported by Oracle. The diagnostic identifies these conditions explicitly and states the exact front-end navigation path.
When the front-end path is unavailable or would require an unacceptable volume of manual steps, a direct fix is evaluated against explicit criteria. All of the following must be true before proceeding:
Certain table areas are never touched directly, regardless of how well the underlying structure is understood. The diagnostic flags these conditions and generates the Service Request documentation:
XLA_EVENTS, XLA_AE_HEADERS — incorrect changes corrupt the subledger audit trail in ways undetectable until period close fails or an auditor requests a reconciliationWF_ITEMS, WF_ITEM_ACTIVITY_STATUSES — ad-hoc DML can corrupt the workflow engine state instance-wideA timestamped backup table is created and row-count verified before the first UPDATE fires. Explicit parameter confirmation is required — the script will not self-execute. After execution, a verification query confirms the expected state. A complete change record — rows affected, before and after values, database username, timestamp — is written to the FIX_BACKUP_REGISTRY and becomes the primary artifact in the knowledge base entry for this incident.
| Condition Identified | Resolution Path | Notes |
|---|---|---|
| QTY ORD hold — billed quantity exceeds ordered quantity | Functional First | Buyer amends the PO line quantity to match the billed amount, or AP creates a quantity correction credit memo to reduce the billed quantity. AP-04 calculates the exact overage and identifies whether a PO amendment is appropriate based on PO status. |
| QUANTITY RECEIVED hold — billed quantity exceeds received quantity | Functional First | Receiving team enters the additional receipt transaction for the outstanding quantity. AP-04 shows the exact shortfall per shipment and the RCV_SHIPMENT_HEADERS reference for the receiving transaction. |
| PRICE hold — invoice price exceeds PO price beyond tolerance | Functional First | Buyer amends PO price or AP creates a price correction credit memo. AP-04 calculates the exact variance, identifies whether it exceeds the price tolerance, and shows both the PO price and billed price. |
| AMOUNT hold — total invoice amount exceeds PO shipment amount | Functional First | Common for services-based POs with amount-based matching. Resolution is a PO amendment or a price correction invoice. AP-04 calculates the exact overage against the PO shipment amount. |
| 0% tolerance causing holds on minor variances | Functional First | Tolerance adjustment via Payables > Setup > Matching > Matching Tolerances. AP-04 identifies the business impact of the current configuration and the variance amounts that would pass under alternative tolerance settings. |
| Exchange rate variance hold — multi-currency invoice | Functional First | AP-04 identifies the rate variance between the invoice rate and the GL daily rate. Resolution is typically a rate correction on the invoice or an exchange rate gain/loss account setup correction. |
| Receipt in transit — goods received but not yet entered | Functional First | Coordinate with Receiving to enter the receipt transaction in RCV_TRANSACTIONS. AP-04 identifies whether an expected receipt exists in the receiving module that has not yet been confirmed. |
| PO closed to receiving — cannot receive against a closed shipment | Oracle Support | If the PO shipment was closed prematurely and additional goods were received, Oracle Support may need to assist with reopening the shipment. Direct DML on PO shipment close status is not performed. |
Before any data fix runs, the script verifies pre-flight conditions and creates a complete verified backup. If any check fails, the script aborts. There is no partial execution path.
Before the first UPDATE fires, the script creates a complete copy of every row to be modified. Tables are named CONS_BACKUP.<TABLE>_<CASE#> and persist permanently after execution.
INSERT from the backup table. No reconstruction required.The knowledge base article is generated automatically from the script's execution output. No manual documentation required. It becomes the institutional record — for the team, for auditors, and for every future engagement in the same environment.
| R12 Guide (PDF) | Title & Chapter | Detail |
|---|---|---|
| 120apug.pdf | Oracle Payables User's Guide — Ch. 3: Matching to Purchase Orders | pp. 3-32 to 3-36: Two-way and three-way matching, tolerance setup, and matching hold resolution |
| 120apug.pdf | Oracle Payables User's Guide — Appendix C: Oracle Payables Holds | Appendix C: QTY ORD, QTY REC, PRICE, and AMOUNT matching hold codes and release criteria |
| 120poug.pdf | Oracle Purchasing User's Guide — Ch. 4: Purchase Orders | Ch. 4: Purchase order price tolerances and receipt accrual settings that drive matching holds |
AP-04 is one of 65 diagnostic scripts covering every major Oracle EBS and Fusion module. William A. Green Consulting runs the script in your environment, applies guided data fixes, and builds the knowledge base that prevents the same issues from recurring.
See this script run autonomously — Oracle AI Platform →