Oracle EBS GL_INTERFACE Journal Import Error Codes Reference
This reference decodes the error codes that Journal Import writes to GL_INTERFACE.STATUS and prints on the Journal Import Execution Report in Oracle EBS R12. For each code it names the GL_INTERFACE columns to check and the usual fix.
| Code | Category | Meaning | Columns to fix in GL_INTERFACE | Fix |
|---|---|---|---|---|
EP01 | Period (EP) | Accounting date is not in any open or future enterable period | ACCOUNTING_DATE (or PERIOD_NAME) | Open the period in Open and Close Periods, or correct the date |
EP02 | Period (EP) | The ledger has no open or future enterable periods | LEDGER_ID | Open at least one period for the ledger |
EP03 | Period (EP) | Date is not in a period of an open encumbrance year | ACCOUNTING_DATE | Open the encumbrance year or change the date |
EP04 | Period (EP) | Date is not a business day (average balance ledgers) | ACCOUNTING_DATE | Use a business day per the transaction calendar |
EP05 | Period (EP) | There are no business days in the period | ACCOUNTING_DATE | Check the transaction calendar for the ledger |
EF01 | Account (EF) | Account combination is inactive for the accounting date | SEGMENT1 to SEGMENT30 or CODE_COMBINATION_ID | Re-enable the combination or its effective dates, or use another account |
EF02 | Account (EF) | Detail posting is not allowed for the account | Segments or CODE_COMBINATION_ID | Use a detail account, or allow posting on the combination |
EF03 | Account (EF) | Account combination is disabled | Segments or CODE_COMBINATION_ID | Enable the combination or use another account |
EF04 | Account (EF) | Invalid account: cross-validation rule violation or invalid segment values | Segments | Check cross-validation rules and segment values; dynamic insertion must be on to create new combinations |
EF05 | Account (EF) | No account combination exists for this CODE_COMBINATION_ID | CODE_COMBINATION_ID | Use a valid GL_CODE_COMBINATIONS id for the chart of accounts |
WU01 | Warning (W) | Journal is unbalanced but accepted because suspense posting is allowed | ENTERED_DR, ENTERED_CR | Review the suspense entry; fix the source if the imbalance is not intended |
EU02 | Unbalanced (EU) | Journal is unbalanced and suspense posting is not allowed | ENTERED_DR, ENTERED_CR, ACCOUNTED_DR, ACCOUNTED_CR | Balance the lines per group; do not send credits as negative debits by mistake |
EU03 | Unbalanced (EU) | Encumbrance journal is unbalanced and no Reserve for Encumbrance account is defined | ENCUMBRANCE_TYPE_ID, amounts | Define the reserve for encumbrance account or balance the journal |
EC01 | Currency (EC) | A conversion rate must be entered when the rate type is User | CURRENCY_CONVERSION_RATE | Supply the rate with USER_CURRENCY_CONVERSION_TYPE = User |
EC02 | Currency (EC) | No conversion date supplied | CURRENCY_CONVERSION_DATE | Populate the conversion date |
EC03 | Currency (EC) | Foreign currency line needs a conversion rate type or accounted amounts | USER_CURRENCY_CONVERSION_TYPE or ACCOUNTED_DR, ACCOUNTED_CR | Supply a rate type or the accounted amounts |
EC06 | Currency (EC) | No conversion rate for this currency, rate type and date | CURRENCY_CODE, USER_CURRENCY_CONVERSION_TYPE, CURRENCY_CONVERSION_DATE | Load the daily rate in GL_DAILY_RATES or change the rate type |
EC08 | Currency (EC) | Invalid currency code | CURRENCY_CODE | Use an enabled code from FND_CURRENCIES |
EC11 | Currency (EC) | Invalid conversion rate type | USER_CURRENCY_CONVERSION_TYPE | Use the user name of an existing rate type (GL_DAILY_CONVERSION_TYPES) |
EC12 | Currency (EC) | Entered amount must equal accounted amount on functional or STAT currency lines | ENTERED_DR, ENTERED_CR, ACCOUNTED_DR, ACCOUNTED_CR | Leave accounted amounts null or equal to entered for ledger currency lines |
EB01 | Budget (EB) | A budget version is required for budget lines | BUDGET_VERSION_ID | Populate BUDGET_VERSION_ID when ACTUAL_FLAG = 'B' |
EB02 | Budget (EB) | Journals cannot be created for a frozen budget | BUDGET_VERSION_ID | Unfreeze the budget or use another |
EB03 | Budget (EB) | The budget year is not open | ACCOUNTING_DATE, PERIOD_NAME | Open the budget year in Define Budget |
EB06 | Budget (EB) | A period name is required for budget journals | PERIOD_NAME | Populate PERIOD_NAME |
EE01 | Encumbrance (EE) | An encumbrance type is required for encumbrance lines | ENCUMBRANCE_TYPE_ID | Populate it when ACTUAL_FLAG = 'E' |
EE02 | Encumbrance (EE) | Invalid or disabled encumbrance type | ENCUMBRANCE_TYPE_ID | Use an enabled type from GL_ENCUMBRANCE_TYPES |
ER01 | Misc (EM/ER) | A reversal period name must be provided | REFERENCE7 (reverse journal flag) and REFERENCE8 (reversal period) | Provide the reversal period or switch off reversal |
EM01 | Misc (EM/ER) | Invalid journal entry category | USER_JE_CATEGORY_NAME | Use the user category name from GL_JE_CATEGORIES |
EM03 | Misc (EM/ER) | Invalid ledger (set of books) id | LEDGER_ID (SET_OF_BOOKS_ID on older code) | Use a valid GL_LEDGERS.LEDGER_ID the source can access |
EM04 | Misc (EM/ER) | ACTUAL_FLAG must be A (actual), B (budget) or E (encumbrance) | ACTUAL_FLAG | Correct the flag |
EM05 | Misc (EM/ER) | ENCUMBRANCE_TYPE_ID must be null for actual journals | ENCUMBRANCE_TYPE_ID | Null it when ACTUAL_FLAG = 'A' |
EM06 | Misc (EM/ER) | BUDGET_VERSION_ID must be null for actual journals | BUDGET_VERSION_ID | Null it when ACTUAL_FLAG = 'A' |
EM17 | Misc (EM/ER) | Sequential numbering is Always Used and no sequence is assigned for the ledger and category | USER_JE_CATEGORY_NAME | Create a document sequence assignment or change Sequential Numbering |
EM18 | Misc (EM/ER) | Manual document sequences cannot be used with Journal Import | USER_JE_CATEGORY_NAME | Assign an automatic sequence for the category |
Codes follow the error key printed on the Journal Import Execution Report. Older documentation says 'set of books' where R12 says 'ledger'. To list errors after a run: SELECT status, user_je_source_name, group_id, request_id, accounting_date, currency_code, COUNT(*) FROM gl_interface WHERE status <> 'NEW' GROUP BY status, user_je_source_name, group_id, request_id, accounting_date, currency_code;
Interface failure review
Send us a Journal Import Execution Report with errors and we will return the root cause per code and the change to make in the feed.
Optional. The tool and every export work without this. No spam.
How to read the Journal Import Execution Report
Journal Import (program Import Journals) prints a summary per source and group, then the lines in error with their error code and an error key at the end. Rows enter the run with STATUS = 'NEW'. When a row fails, its STATUS holds the code, such as EF04 or EU02, and the whole group is rejected unless you chose to post errors to suspense when submitting. Flexfield errors (EF codes) can go to the suspense account when Post Errors to Suspense is Yes and suspense is enabled; period, currency and miscellaneous errors cannot. Find the failing rows by REQUEST_ID and GROUP_ID, fix the cause, and import the group again.
- Run by source and group: USER_JE_SOURCE_NAME + GROUP_ID
- Error code in STATUS, one per line
- WU01 is a warning: the journal was created with a suspense line
Correcting and requeuing rows
You have three options. Fix the source and reload, which keeps the source system as the record. Use the Correct Journal Import Data window (Journals > Import > Correct) to edit rows in GL_INTERFACE for the request, then resubmit Journal Import for the same source and group. Or delete the rows with Journals > Import > Delete (the Delete Journal Import Data program) and reload. Editing GL_INTERFACE with SQL is possible but should be controlled: set STATUS back to 'NEW' only after fixing the cause, and never touch rows of a run still in progress. GL_INTERFACE_CONTROL tracks import runs; leave it to the program unless Oracle Support tells you otherwise.
Required columns
Most errors come from a short list of required columns. STATUS must be 'NEW'. LEDGER_ID identifies the ledger. ACCOUNTING_DATE must fall in an open or future enterable period. CURRENCY_CODE is the entered currency. ACTUAL_FLAG is A, B or E. USER_JE_CATEGORY_NAME and USER_JE_SOURCE_NAME are user names of a category and source, not internal names. ENTERED_DR or ENTERED_CR carry the amounts, both positive. The account is either SEGMENT1 to SEGMENT30 or CODE_COMBINATION_ID. DATE_CREATED and CREATED_BY are also required. GROUP_ID is optional but lets you import one batch at a time.
- STATUS, LEDGER_ID, ACCOUNTING_DATE, CURRENCY_CODE, ACTUAL_FLAG
- USER_JE_CATEGORY_NAME, USER_JE_SOURCE_NAME
- ENTERED_DR / ENTERED_CR
- Segments or CODE_COMBINATION_ID
- DATE_CREATED, CREATED_BY
Worked example: EU02 on a payroll feed
A payroll interface loads 400 lines and every line comes back EU02. The totals look balanced in the source file. Check SUM(ENTERED_DR) and SUM(ENTERED_CR) per GROUP_ID and ACCOUNTING_DATE: Journal Import balances each journal it builds, and journals are split by date, category and currency. Here the feed sent credits as negative ENTERED_DR values, so all amounts landed on the debit side. Moving them to ENTERED_CR as positive numbers fixes it. If the feed spans two dates, each date must also balance on its own.
Frequently Asked Questions
What are the GL_INTERFACE status values?
New rows must have STATUS = 'NEW' for Journal Import to pick them up. After a run, rows in error carry the error code in STATUS, such as EP01, EF04 or EU02. Use the error key on the Journal Import Execution Report to decode them, and the REQUEST_ID column to find the rows of a given run.
What is the GL import program in Oracle EBS R12?
The program is Journal Import, submitted from Journals > Import > Run (Import Journals). You choose the source, optionally a group id, whether to post errors to suspense and whether to create summary journals. It reads GL_INTERFACE and creates unposted journal batches.
What does EP01 mean in Journal Import?
The accounting date of the line is not in an open or future enterable period for the ledger. Open the period in Open and Close Periods, or correct ACCOUNTING_DATE. Check the date has no time portion pushing it into an unexpected period when it is computed in code.
Can Journal Import errors post to suspense?
Only account (EF) errors can be posted to the suspense account, and only if you set Post Errors to Suspense to Yes and suspense is allowed in the ledger. Unbalanced journals go to suspense when suspense is allowed, giving warning WU01. Other errors reject the group.
If you want finance staff to ask why last night's GL interface failed and get the rows and fix in plain English, from a model on your own servers, we can set that up.
Related Tools
Oracle EBS GL Journal Import Worksheet
Prepare journal lines in the shape of GL_INTERFACE, check debits against credits per row set, and export to Excel or CSV before loading.
OracleOracle EBS GL Period Close Checklist
A month-end close sequence for Oracle General Ledger and the subledgers that feed it, with critical steps marked.
OracleOracle EBS GL Open Journals and Period Status SQL Generator
Enter a ledger and period and get queries to see period status, unposted journals, stuck import rows and subledger entries not yet in the GL.
OracleOracle EBS Multi-Org Structure Tables and MO_GLOBAL Reference
Searchable map of the R12 org hierarchy: GL_LEDGERS, XLE legal entities, HR_OPERATING_UNITS, ORG_ORGANIZATION_DEFINITIONS, MOAC profiles and the MO_GLOBAL calls that make secured synonyms return rows.
More Oracle tools
See all- Oracle EBS Inventory Tables Reference
- Oracle EBS WIP Tables Reference
- Oracle EBS Cycle Count Workload Calculator
- Oracle EBS Discrete Manufacturing Go-Live Checklist
- Oracle EBS Inventory Accuracy Readiness Assessment
- Oracle EBS Concurrent Request Phase and Status Reference
- Oracle EBS Responsibility Design Worksheet
- Oracle EBS AP Invoice Interface Template
- Oracle EBS 12.2 Upgrade Readiness Checklist
Keep exploring
Free tools
- Oracle EBS GL Journal Import WorksheetPrepare journal lines in the shape of GL_INTERFACE, check debits against credits per row set, and export to Excel or CSV before loading.
- Oracle EBS Open Interface Tables, Import Programs and Error Tables ReferenceEach EBS 12.1/12.2 open interface table mapped to the concurrent program that loads it, the status column to check and where the errors land.
- Oracle EBS BOM Interface Load WorksheetStage BOM component rows with the columns used by the Oracle BOM open interface, then export to Excel for loading.
ERP fixes and how-tos
- Data Conversion in Oracle EBS: Interface Tables, Open Interfaces and ReconciliationHow data conversion works in Oracle EBS: extract, stage, validate, load through interface tables and APIs, then reconcile. Practical steps and common failures.
- Oracle Fusion General Ledger: Import Journals errors and rejected rowsFix Oracle Fusion General Ledger journal import errors: read GL_INTERFACE status, check source, ledger, period and account validity, then correct and reimport.
- Fix Oracle EBS Requisition Import Errors in PO_INTERFACE_ERRORSRequisition Import rejected your rows? Read PO_INTERFACE_ERRORS and the Exceptions Report, fix item, category, org or approver data, then rerun the import in Oracle EBS.
AI on your ERP
- AI for Oracle E-Business Suite, Without Leaving On-PremHosting Oracle EBS 12.2 on-prem or in a private cloud? Add a private LLM over concurrent programs, interface tables and AP/PO data without moving to Fusion.
- AI for Oracle EBS in Industrial Manufacturing: WIP, MRP, and BOM Questions Answered DirectlyAI for Oracle E-Business Suite in industrial manufacturing: WIP jobs, BOMs, MRP, inventory and purchasing answered in plain English, private and read-only.
Integrations
- How to use ChatGPT with Oracle E-Business SuiteUsing ChatGPT with Oracle E-Business Suite: export vs live access, custom GPT actions over ISG REST, enterprise data controls and when to keep data on-prem.
- How to automate email-to-transaction in Oracle E-Business SuiteTurn inbound POs, RFQs, invoices and supplier confirmations in shared mailboxes into Oracle EBS transactions through open interfaces, with review and audit.