How to Import AP Invoices in Oracle EBS with Payables Open Interface Import
how to import AP invoices into Oracle EBS using Payables Open Interface Import
Also searched as
- Payables Open Interface Import no invoices created
- AP_INVOICES_INTERFACE table structure
- how to load invoices into EBS Payables from an interface table
- Payables Open Interface Import rejected invoices
Short answer
Load invoice header and line data into AP_INVOICES_INTERFACE and AP_INVOICE_LINES_INTERFACE, then run the Payables Open Interface Import concurrent program to create standard invoices in Oracle Payables. Rows that fail validation land in AP_INTERFACE_REJECTIONS with a specific reject reason you can query directly, without opening the Invoice Workbench.
Applies to: Oracle E-Business Suite 12.1 and 12.2, Payables module
Import invoices through the Payables Open Interface
- 1Insert one row per invoice into AP_INVOICES_INTERFACE using ap_invoices_interface_s.nextval for INVOICE_ID, plus INVOICE_NUM, VENDOR_ID or VENDOR_NUM, INVOICE_DATE, INVOICE_AMOUNT, INVOICE_CURRENCY_CODE, TERMS_ID, SOURCE and ORG_ID.
- 2Insert one or more matching rows into AP_INVOICE_LINES_INTERFACE with the same INVOICE_ID, LINE_NUMBER, LINE_TYPE_LOOKUP_CODE (ITEM, FREIGHT, MISCELLANEOUS or TAX), AMOUNT and either DIST_CODE_CONCAT or full accounting flexfield segments.
- 3Set SOURCE to a value your instance recognizes, for example a custom string like 'EDI' or 'CUSTOM IMPORT', so the batch is easy to trace, requery and rerun.
- 4Navigate to Payables > Invoices > Entry > Open Interface Invoices and run Payables Open Interface Import, entering the same SOURCE and a GL date range if you need to restrict the run.
- 5Check the concurrent request log for the count of invoices created versus rejected once the program finishes.
- 6Query AP_INTERFACE_REJECTIONS joined to AP_INVOICES_INTERFACE on INVOICE_ID to read REJECTION_MESSAGE for every rejected row.
- 7Fix the rejected interface rows in place rather than deleting and reinserting with a new INVOICE_ID, then rerun the program with the same SOURCE.
- 8Once STATUS is null on AP_INVOICES_INTERFACE after a successful run, confirm the resulting invoices in Payables > Invoices > Entry > Invoices by INVOICE_NUM and SOURCE.
Why invoices land in AP_INTERFACE_REJECTIONS
The most common rejections are a missing exchange rate and exchange rate type when the invoice currency differs from the ledger currency, an inactive or invalid vendor site, an invalid TERMS_ID, distribution line amounts that do not sum to the invoice amount, and a header row with no matching line row at all.
REJECTION_MESSAGE is usually plain text, for example 'No Lines Exist For This Invoice' or 'Invalid Vendor Site', so most failures can be diagnosed straight from the rejection table without decoding a lookup code. Group by REJECTION_MESSAGE across a batch to spot one systemic upstream data problem instead of triaging rows one at a time.
Interface tables versus other import paths
Open Interface Import is the standard mechanism for EDI feeds, procurement card loads, and third-party AP automation tools that stage invoices before they reach the ledger. It is the same entry point Oracle's own e-Invoicing and scanning integrations use.
For one-off manual loads, Web ADI spreadsheet upload into the same interface tables is common because it avoids writing insert scripts. For custom PL/SQL integrations, calling the underlying AP_IMPORT_INVOICES_PKG directly is possible but bypasses some of the friendlier logging the concurrent program gives you, so most teams stick with the interface tables plus the seeded program.
Distribution lines and tax lines
Use DIST_CODE_CONCAT to pass a full GL account string on an ITEM or FREIGHT line, or leave distributions to be derived automatically when the invoice is matched to a PO and AWT or PO distribution rules apply.
TAX lines need REFERENCE_1 and REFERENCE_2 populated to tie the tax line back to the specific item line it taxes when detail tax lines are used; omitting these usually still imports but can misassociate tax against the wrong line, so validate tax totals after the first test batch.
Performance for large batches
The underlying import program processes rows in groups keyed by SOURCE and GROUP_ID. Populating GROUP_ID on each interface row and running the concurrent program with the Group Id parameter lets you split a multi-thousand-row load into several parallel requests instead of one long serial run, which is the standard tuning move for high-volume EDI feeds.
Common pitfalls
- !Forgetting DIST_CODE_CONCAT or a valid GL date so the import fails on missing accounting information
- !Reusing an old sequence-generated INVOICE_ID after a failed run, which causes a duplicate key error on rerun
- !Foreign currency invoices missing EXCHANGE_RATE and EXCHANGE_RATE_TYPE when the ledger currency differs, causing an automatic rejection
- !An inactive vendor site causing an 'Invalid Vendor Site' rejection even though the vendor id itself is valid
- !Running the import in the wrong operating unit context when Multi-Org Access Control is enabled, so invoices land in the wrong OU
- !Rerunning an insert script against rows that already imported successfully, creating duplicate invoices instead of only reprocessing the rejected rows
How an ERP-grounded AI assistant handles this
ERPray grounded on an EBS instance can pull AP_INTERFACE_REJECTIONS for a named SOURCE batch, group the rejection messages, and draft the corrected interface row values or a ready-to-run diagnostic query the moment a practitioner describes what failed, instead of the usual round trip through SQL*Plus and the AP interface documentation.
Frequently asked questions
What is the SOURCE column used for?
It tags every row in AP_INVOICES_INTERFACE with the origin of the batch, for example EDI or CUSTOM IMPORT. You pass the same value into the concurrent program's Source parameter so only that batch is processed, and it is also the easiest way to filter AP_INTERFACE_REJECTIONS to your own load.
Can I import invoices with multiple distribution lines?
Yes. Insert one row per distribution into AP_INVOICE_LINES_INTERFACE with the same INVOICE_ID and an increasing LINE_NUMBER; the amounts across all lines must sum to the header's INVOICE_AMOUNT or the invoice is rejected.
How do I find only my batch's rejections?
Join AP_INTERFACE_REJECTIONS to AP_INVOICES_INTERFACE on INVOICE_ID and filter AP_INVOICES_INTERFACE.SOURCE to the value you used for the load; that isolates rejections from your run without pulling in unrelated batches.
Does Open Interface Import support PO-matched invoices?
Yes. Populate PO_NUMBER, and optionally MATCH_OPTION and RELEASE_NUM, on the interface lines to have the import automatically match and derive distributions from the purchase order rather than requiring manual distribution data.
Do I need to delete rows from the interface tables after a successful import?
No, successfully imported rows are removed automatically. Only rejected rows remain, which is what lets you fix and rerun without re-staging the whole batch.
Related
How to Use Forms Personalization in Oracle EBS (No CUSTOM.pll Needed)
Forms Personalization lets you change field properties, set defaults, run built-ins and show messages on any Oracle Forms screen through Help > Diagnostics > Custom Code > Personalize, with no custom library or forms compile required. Rules are stored per form and responsibility in FND_FORM_CUSTOM_RULES and apply at runtime for every user who opens that form.
AdvancedHow to Extend an OAF Page in Oracle EBS Without Touching Seeded Code
Use OAF Personalization, through the Personalize Self-Service Defn responsibility or the Personalize Page link, for layout, prompts and simple rules, and Controller Extension, a custom Java class that extends the seeded controller, for logic changes such as new validation or events. Both approaches survive patching because the seeded XML and Java classes are never edited directly.
How-toSQL to Find Responsibilities Assigned to a User in Oracle EBS
Join FND_USER to FND_USER_RESP_GROUPS on USER_ID, then to FND_RESPONSIBILITY_TL on RESPONSIBILITY_ID and APPLICATION_ID to get the responsibility name, filtering the END_DATE columns to show only currently active assignments. This is the standard query DBAs and support teams use instead of clicking through System Administrator > Security > User > Define for every user.
AdvancedHow the adop Patching Cycle Works in Oracle EBS 12.2
adop, AD Online Patching, applies patches to the offline patch edition of the file system while users keep working on the current run edition, then switches editions in a short cutover window. A standard cycle runs prepare, apply, finalize, cutover and cleanup, each invoked as its own adop phase= command.
Error fixFix FRM-40735: WHEN-VALIDATE-RECORD Trigger Raised Unhandled Exception ORA-06508
FRM-40735 with ORA-06508 almost always means a PL/SQL package used by the form was recompiled while your session still held the old cached state, or the trigger's own exception handling does not trap a real data error. Exit the form completely and re-enter it; if the error repeats for all users, recompile invalid objects on the database and check for a bad custom trigger.
Error fixOracle EBS Concurrent Manager Will Not Start: How to Fix It
A concurrent manager that will not start in Oracle EBS is almost always one of three things: the node registered in FND_NODES no longer matches the actual hostname (common after cloning), stale OS processes are blocking a fresh start, or the database and listener the manager connects to are unreachable. Check the internal manager log, verify the node name, clear stale processes, and restart with adcmctl.sh.
AI for ERPAI for Oracle E-Business Suite, Without Leaving On-Prem
Add AI to Oracle E-Business Suite 12.2 without moving off-prem. Query concurrent programs, interface tables, and AP/PO data with a private LLM. See how.
AI for ERPOracle ERP AI Consulting: What a Partner Should Deliver
What to demand from an Oracle ERP AI consulting partner across EBS, JD Edwards, NetSuite, and Fusion Cloud: interface tables, APIs, and buyer questions.
Stuck on Oracle E-Business Suite?
Talk to engineers who work inside Oracle E-Business Suite every week, and who build private AI that answers these questions from your own ERP data.