AP_HOLDS_ALL — RELEASE_LOOKUP_CODE, RELEASE_REASON (Invoice ID: 1002345)
CONS_BACKUP.AP_HOLDS_ALL_784528 — 2 rows verified ✓ | Registry ID: 1042
Exhaustive diagnosis of every condition that causes Oracle EBS AP Invoice Validation to fail. Runs 47+ checks across header integrity, distributions, PO matching, tax, holds, currency, and accounting — then guides you to the fix.
When the Oracle EBS Accounts Payable team reports that invoices are "stuck in validation" or that holds "won't release," the situation is almost always more complex than it appears on the surface. The Invoice Validation concurrent program — submitted either online from the Invoice Workbench or in batch via the Payables Invoice Validation Program — evaluates every invoice against dozens of conditions simultaneously. When it finds an exception, it writes a record to AP_HOLDS_ALL and sets the invoice's VALIDATION_STATUS to NEEDS REVALIDATION. The invoice cannot be paid, cannot be posted to General Ledger, and cannot be included in the period-close reconciliation until every blocking hold is resolved. In a high-volume AP environment, a single COA cleanup event or a batch of mismatched purchase orders can generate hundreds of holds overnight.
What makes this operationally difficult — and what standard Oracle documentation does not clearly address — is that not all holds are the same kind of problem, and each kind requires a fundamentally different resolution path. An ACCOUNT INVALID hold fires because a distribution's code combination has been disabled or end-dated in GL_CODE_COMBINATIONS, most commonly after a Finance team runs a Chart of Accounts cleanup without cross-referencing open AP transactions. A QTY ORD or QUANTITY RECEIVED hold fires because the billed quantity exceeds what was ordered or received on the matched purchase order, requiring either a receiving transaction or a PO amendment before the hold can be released. A PRICE hold fires when the invoice unit price breaches the tolerance defined in AP_PO_MATCHING_CONTROLS. A workflow approval hold, placed by the Invoice Approval Workflow in WF_ITEM_ACTIVITY_STATUSES, has its own release path through the workflow engine — not through the validation program at all. When an AP manager says "I released the hold but it came back," it is usually because the underlying condition was not actually corrected, or because two different hold types are interacting in a way the standard UI does not make visible.
The business impact extends well beyond the AP team. Invoices in NEEDS REVALIDATION status block the Payables Accounting Process from creating subledger accounting entries in XLA_EVENTS. Without those entries, the invoices cannot transfer to General Ledger. Without the GL transfer, the AP-to-GL reconciliation is out of balance. Without that reconciliation, the period cannot close — and every downstream module that depends on a closed AP period is affected: Fixed Assets mass additions, Project billing, Purchasing accrual reporting, and the corporate consolidation. A cluster of unresolved invoice holds that appears to be an AP team operational issue is frequently the direct cause of a missed period-close deadline at the controller level.
AP-01 was built specifically for this scenario. It runs a structured investigation across all 47+ validation conditions, categorizes every hold by type and root cause, identifies which holds are system-applied versus user-placed versus workflow-generated, detects repeat hold patterns that signal recurring data quality problems, and produces a prioritized action list. More importantly, it identifies which conditions require a guided data fix, which can be resolved through Oracle's standard front-end forms, and which require an Oracle Support service request — before any action is taken. The diagnostic output becomes the foundation for both the immediate resolution and the knowledge base article that prevents the same condition from being treated as a new incident next quarter.
AP-01 runs a systematic investigation of every condition the Oracle AP Validation engine checks — and many conditions it does not surface clearly. Here is what it covers.
Representative output for an invoice with two issues — a disabled CCID on a distribution and a 3-way match quantity shortfall. The script identifies both, explains the root cause, and generates the fix.
══════════════════════════════════════════════════════════════
ORACLE EBS R12 — AP INVOICE VALIDATION DIAGNOSTIC
══════════════════════════════════════════════════════════════
Invoice ID : 1002345
Invoice Number : INV-2026-00892
Vendor : Acme Corporation (Vendor #: 10045)
Operating Unit : US Operations OU
Case Number : 784528
Report Date : 20-FEB-2026 14:32:07
══════════════════════════════════════════════════════════════
[ SECTION 1 — INVOICE HEADER ] STATUS: ⚠ WARNING
────────────────────────────────────────────────────────────
Vendor Active : YES ✓
Vendor Site Active : YES ✓
Invoice Date : 15-FEB-2026 ✓
GL Date : 15-FEB-2026 ✓
Period Status : OPEN ✓
Invoice Currency : USD ✓
Invoice Amount : 15,250.00
Payment Terms : NET 30 ✓
⚠ WARNING: Invoice in NEEDS REVALIDATION for 14 days
[ SECTION 2 — AMOUNT RECONCILIATION ] STATUS: ✓ PASS
────────────────────────────────────────────────────────────
Invoice Header Amount : 15,250.00 ✓
Sum of Line Amounts : 15,250.00 ✓ MATCH
Sum of Dist Amounts : 15,250.00 ✓ MATCH
Lines Without Dists : 0 ✓
[ SECTION 3 — DISTRIBUTIONS / ACCOUNTS ] STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
Total Distributions : 3
Distribution Line 1 : CCID 77210 01-500-6100-0000 ACTIVE ✓
Distribution Line 2 : CCID 88432 01-500-7810-0000 DISABLED ✗
Distribution Line 3 : CCID 77215 01-500-6200-0000 ACTIVE ✓
✗ FAIL: Distribution #2 — CCID 88432 DISABLED as of 01-JAN-2026
Hold Placed: ACCOUNT INVALID (System Hold)
Tier 2 Fix: Remap to active CCID — see Phase 4 below
[ SECTION 4 — TAX VALIDATION ] STATUS: ✓ PASS
────────────────────────────────────────────────────────────
Tax Code : CA-SALES-TAX — ACTIVE ✓
Tax Amount : 1,250.00 ✓
[ SECTION 5 — PO MATCHING ] STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
Match Type : 3-WAY
PO Number : PO-2026-04412
PO Status : APPROVED ✓
Quantity Ordered : 100.00
Quantity Received : 85.00
Quantity Billed : 100.00
✗ FAIL: Billed qty (100) exceeds received qty (85)
Tolerance: 0% | Shortfall: 15 units
Hold: QUANTITY RECEIVED (System Hold)
Fix: Receive 15 units OR reduce invoice qty to 85
[ SECTION 6 — HOLDS ] STATUS: ✗ FAIL
────────────────────────────────────────────────────────────
Total Active Holds : 2 UNRESOLVED
ACCOUNT INVALID — System Hold — 20-FEB-2026 — NOT RELEASED
QUANTITY RECEIVED — System Hold — 20-FEB-2026 — NOT RELEASED
[ SECTION 7 — CURRENCY ] STATUS: ✓ PASS
[ SECTION 8 — ACCOUNTING PRE-CHECK ] STATUS: ⚠ BLOCKED
────────────────────────────────────────────────────────────
⚠ Cannot account until all holds resolved and validation passes
[ SECTION 9 — DUPLICATES ] STATUS: ✓ PASS
════════════════════════════════════════════════════════════
DIAGNOSTIC SUMMARY
════════════════════════════════════════════════════════════
Total Checks : 47 | PASSED: 38 | WARN: 3 | FAILED: 6
VALIDATION WILL FAIL — 2 blocking holds must be resolved
RECOMMENDED ACTIONS (priority order):
1. Update Distribution #2 CCID 88432 → active replacement
(resolves: ACCOUNT INVALID hold)
2. Receive 15 units on PO-2026-04412 Line 1, or reduce qty
(resolves: QUANTITY RECEIVED hold)
3. Re-run AP Invoice Validation after both fixes
════════════════════════════════════════════════════════════
Backup Created : CONS_BACKUP.AP_INVOICE_DISTRIBUTIONS_ALL_784528 ✓
Registry ID : 1042
Rollback Script : Generated and stored ✓
KB Article : KB-AP-784528-001 generated ✓
════════════════════════════════════════════════════════════
CONS_BACKUP.AP_INVOICE_DISTRIBUTIONS_ALL_784528 and AP_HOLDS_ALL_784528 are created and row counts verified. Abort if backup fails.Every table touched by AP-01 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-01 execution — written from actual run output. No manual documentation required.
| Table / View | Schema | Purpose in Diagnostic |
|---|---|---|
| AP_INVOICES_ALL | AP | Invoice header — status, amounts, dates, vendor, currency, payment terms |
| AP_INVOICE_LINES_ALL | AP | Invoice lines — amounts, tax lines, line types, PO references |
| AP_INVOICE_DISTRIBUTIONS_ALL | AP | Distributions — CCID, amounts, posted flags, accounting event IDs |
| AP_HOLDS_ALL | AP | All holds — type, reason, placed by, placed date, release status |
| GL_CODE_COMBINATIONS | GL | CCID validation — enabled flag, effective dates, account type |
| GL_PERIOD_STATUSES | GL | Period open/closed status for invoice and GL dates |
| PO_HEADERS_ALL | PO | Referenced PO approval status and document type |
| PO_LINE_LOCATIONS_ALL | PO | Shipment quantities, receipt required, match type, open status |
| RCV_TRANSACTIONS | PO | Receipt quantities for 3-way and 4-way match validation |
| ZX_RATES_B | ZX | Tax code active status and regime validity |
| XLA_EVENTS | XLA | Accounting event status — processed, error, unprocessed |
| AP_SUPPLIERS / AP_SUPPLIER_SITES_ALL | AP | Vendor and site active status, payment method, holds |
Distribution references a disabled, end-dated, or summary CCID. Most common after GL Chart of Accounts cleanup. AP-01 identifies the exact CCID, the disable date, and provides the remap fix with authorized replacement.
Billed quantity exceeds received quantity on a 3-way or 4-way matched invoice. AP-01 shows exact quantities ordered, received, and billed with the shortfall amount and both resolution options.
Unit price on the invoice exceeds the PO line price beyond tolerance. AP-01 calculates the exact variance, the tolerance threshold, and identifies whether a PO amendment or price correction is needed.
Invoice GL date falls in a closed period. Common when invoices are entered after period close without updating the GL date. AP-01 identifies the next open period and generates the date correction fix.
Invoice marked as taxable but no tax lines present, or tax lines exist but the tax code has been inactivated in ZX_RATES_B. AP-01 identifies the tax code status and the applicable active rate.
Sum of distribution amounts does not equal the invoice line amount. Often caused by manual edits leaving a rounding difference. AP-01 identifies the exact discrepancy and the correcting entry.
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. Enabling a disabled code combination in the GL Accounting Flexfield, releasing a supplier hold through the Supplier form, correcting a PO quantity and rerunning validation — these are functional fixes that require no DML and carry no database risk. AP-01 identifies these conditions explicitly and states the exact front-end navigation path. If the fix can be made through Oracle's own UI, the script stops there.
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. AP-01 flags these conditions and generates the Service Request documentation:
XLA_EVENTS, XLA_AE_HEADERS, XLA_AE_LINES — incorrect changes corrupt the subledger audit trail in ways that are undetectable until period close fails or an auditor requests a reconciliationWF_ITEMS, WF_ITEM_ACTIVITY_STATUSES — Oracle Support has specific recovery procedures; 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 |
|---|---|---|
| ACCOUNT INVALID — disabled or end-dated CCID on distribution | Functional First | Re-enable the account in GL → Accounting Flexfield if the account is valid and simply disabled. If permanently retired, AP-01 identifies the correct replacement CCID and applies a direct fix with full backup and explicit confirmation. |
| QUANTITY RECEIVED / QTY ORD — billed quantity exceeds ordered or received | Functional First | Receive the remaining quantity in Oracle Receiving, or amend the PO shipment. AP-01 shows exact quantities ordered, received, and billed with the shortfall and both resolution options. |
| PRICE hold — unit price exceeds PO price beyond tolerance | Functional First | Buyer amends the PO price, or AP creates a price correction invoice. AP-01 calculates the exact variance, the tolerance threshold from AP_PO_MATCHING_CONTROLS, and identifies the appropriate path. |
| Invalid GL date — falls in a closed period | Direct Fix | AP-01 identifies the next open period, generates the GL date update against AP_INVOICES_ALL with full backup, and releases the period-related hold. Pre-flight confirms invoice is unposted and no XLA event is active. |
| Distribution amount mismatch — sum of distributions ≠ line amount | Direct Fix | AP-01 calculates the exact rounding or entry difference, generates a correcting distribution entry with full backup. AP_INVOICE_DISTRIBUTIONS_ALL and AP_INVOICE_LINES_ALL updated in a single transaction. |
| Tax code inactive in ZX_RATES_B | Functional First | Tax administrator reactivates the rate in Oracle E-Business Tax, or updates the invoice to the current active rate via Invoice Workbench. AP-01 identifies the applicable active rate for the invoice date and regime. |
| XLA event in ERROR status — accounting blocked | Oracle Support | XLA tables are never modified directly. Error events are documented, reproduced on a test instance, and submitted as a Service Request. Direct DML on XLA tables can break the subledger audit trail in ways that are undetectable until an external audit. |
| Workflow approval hold — stuck in WF_ITEM_ACTIVITY_STATUSES | Oracle Support | Workflow engine state is never modified directly. Oracle Support has specific recovery procedures for stuck WF items. Ad-hoc DML on WF tables can corrupt the workflow engine for every workflow in the instance, not just the affected invoice. |
Before any data fix runs, AP-01 verifies a set of 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, AP-01 creates a complete copy of every row to be modified. Tables are named CONS_BACKUP.<TABLE>_<CASE#> and persist permanently after execution — they are never dropped.
INSERT from the backup table. No reconstruction required.The knowledge base article is generated automatically from AP-01's execution output. No manual documentation required. The article becomes the institutional record — for the team, for auditors, and for every future engagement in the same environment.
References the Oracle public documentation for this diagnostic area. These links open directly on docs.oracle.com.
| R12 Guide (PDF) | Title & Chapter | Detail |
|---|---|---|
| 120apug.pdf | Oracle Payables User's Guide — Chapter 3: Invoices — Validation | Ch. 3: Validation (pp. 3-168 to 3-187): Invoice Validation Program, holds applied by validation, and hold release procedures |
| 120apug.pdf | Oracle Payables User's Guide — Appendix C: Oracle Payables Holds | Appendix C: Complete hold codes and release names reference for ACCOUNT INVALID, matching holds, tax holds |
| 120apug.pdf | Oracle Payables User's Guide — Ch. 3: Payables Open Interface Import | pp. 3-139 to 3-151: Open interface import troubleshooting and validation errors |
| 120apug.pdf | Oracle Payables User's Guide — Ch. 8: Accounting | Ch. 8: Accounting entries created during validation and the Payables Accounting Process |
AP-01 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 →