# How to Import AP Invoices in Oracle EBS with Payables Open Interface Import

> Source: https://netray.co/erp-help/ebs-payables-open-interface-import-how-to
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: ERP Help

## 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.

## Kind

how-to

## System

oracle-ebs

## Erp

Oracle E-Business Suite

## Module

Payables / Open Interface

## Query

how to import AP invoices into Oracle EBS using Payables Open Interface Import

## Alternate Queries

- 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

## Applies To

Oracle E-Business Suite 12.1 and 12.2, Payables module

## Steps

### Import invoices through the Payables Open Interface

**Items:**

Insert 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.

Insert 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.

Set 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.

Navigate 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.

Check the concurrent request log for the count of invoices created versus rejected once the program finishes.

Query AP_INTERFACE_REJECTIONS joined to AP_INVOICES_INTERFACE on INVOICE_ID to read REJECTION_MESSAGE for every rejected row.

Fix the rejected interface rows in place rather than deleting and reinserting with a new INVOICE_ID, then rerun the program with the same SOURCE.

Once 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.

## Sections

### Why invoices land in AP_INTERFACE_REJECTIONS

**Body:**

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

**Body:**

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

**Body:**

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

**Body:**

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.

## 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

## Ai Angle

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.

## Faq

### What is the SOURCE column used for?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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?

**Answer:** 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.

## Search terms

ap_invoices_interface, payables open interface import, oracle ebs import invoices, ap_invoice_lines_interface, ap_interface_rejections, oracle payables edi invoice load, how to import invoices oracle ebs, ap open interface reject reason

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
