Error fixOracle E-Business Suite (R12 General Ledger)General Ledger / Period Close

GL period will not close: unposted or unaccounted journal batches

Error
You cannot close this period, there are unposted journal batches

Also searched as

  • EBS GL period close error unposted journals
  • GL close period unaccounted transactions error
  • Oracle EBS cannot close period fix

Short answer

Oracle EBS General Ledger blocks a period close whenever unposted journal batches, unaccounted subledger transactions, or pending mass allocations still reference that period. Run the Unposted Journals and Period Close Exceptions reports to find the offending batches, then post or reverse them before retrying the close.

Applies to: Oracle E-Business Suite R12.1 and R12.2 General Ledger, applies similarly to 11i

Clear a blocked GL period close

  1. 1Navigate to General Ledger > Reports > Run and submit the Unposted Journals and Suspense Journals Report for the period you are trying to close.
  2. 2From Setup > Financials > Close Cycle Forecast, or Period Close screen, run the Period Close Exceptions report to see which subledgers (AP, AR, PA, FA) still have unaccounted transactions.
  3. 3For subledger transactions, run each subledger's Create Accounting process in Final mode with 'transfer to GL' enabled, then re-run GL Journal Import if any entries are stuck.
  4. 4For journal batches showing as Unposted in GL, open Journals > Enter, query the batch, and either complete and post it or reverse/delete it if it was created in error.
  5. 5Check for journal batches with a status of Error - these usually failed posting due to an invalid or disabled account combination and need the account fixed and the batch re-posted.
  6. 6If a subledger period will not close because of unprocessed transactions (e.g. unmatched AP invoices, unapplied AR receipts), resolve those in the subledger before GL will accept the close.
  7. 7Once all exceptions clear, close the period from Setup > Financials > Open/Close Periods and confirm the status changes to Closed.

How the GL close-period validation actually works

When you attempt to close a GL period, Oracle runs a validation pass that checks three things: no journal batches in Unposted or Error status reference the period, no subledger has unaccounted transactions still pointing at that period (via the subledger accounting event model), and no encumbrance journals are outstanding if budgetary control is enabled.

The error message is intentionally blunt because it is a hard stop, not a warning - EBS will not let a period close with a gap between the GL trial balance and the subledgers, since that gap is exactly what causes reconciliation problems weeks later during audit.

Subledger accounting is usually the real cause

In R12, most 'unposted journal' close blocks actually originate in a subledger (Payables, Receivables, Projects, Fixed Assets) that has not run Create Accounting in Final mode for the period, so its accounting events never made it into GL as journal entries at all.

Check each subledger's own period-close status first (Payables > Control > Accounting > Period Close, similarly for AR and FA) - a subledger period cannot itself close with unaccounted or unprocessed transactions, and until it closes, GL will keep finding the gap.

SELECT je_header_id, name, status, period_name
FROM gl_je_batches
WHERE period_name = '&period_name'
AND status <> 'P';

Recurring and mass allocation journals

A second common cause is a recurring journal formula or a mass allocation batch that was generated but never completed and posted - these sit silently in Unposted status until someone notices at month end.

Check Journals > Enter > Find with a status filter for Unposted and Incomplete across all sources, not just Manual, since MassAllocation, Recurring, and interfaced sources (e.g. Payroll, custom interfaces) are just as likely to leave orphaned batches behind.

Common pitfalls

  • !Force-closing via direct table updates instead of resolving the underlying batches - this corrupts the trial balance and causes reconciliation failures that are far harder to fix later.
  • !Only checking GL journals and missing that a subledger (commonly Payables or Projects) has unaccounted transactions that never reached GL.
  • !Not checking journal batches in Error status separately from Unposted - Error batches usually need an account combination fix before they will post.
  • !Forgetting encumbrance journals when budgetary control is enabled; these follow the same close-blocking rule as actual journals.
  • !Closing the subledger period before confirming GL successfully imported and posted everything from that subledger for the period.

How an ERP-grounded AI assistant handles this

ERPray, grounded on your EBS General Ledger, can run the Unposted Journals and Period Close Exceptions checks proactively a few days before close, list the specific batch numbers and subledgers blocking the period in plain language, and flag Error-status batches with the account combination that needs correcting, so the close team is not manually running four reports against a shrinking deadline.

Frequently asked questions

Why does a subledger period need to close before GL?

GL's close validation checks for unaccounted subledger transactions via the SLA (Subledger Accounting) event model. A subledger with open or unaccounted transactions will keep tripping the GL close check even if GL's own journals look clean.

Can I close GL with a journal still in Error status?

No. Error-status batches block the close just like Unposted ones. Fix the invalid or disabled account combination the batch references, then re-run Post from the batch.

What is the fastest way to find every blocking batch across all subledgers?

Run the Period Close Exceptions report from the Period Close workbench (General Ledger > Setup > Financials > Close Cycle Forecast in R12.2, or Period Close screen in R12.1) - it aggregates GL and subledger exceptions in one view instead of checking each module separately.

Is it safe to just delete an old Unposted batch to unblock close?

Only if you are certain it was created in error and never should have existed. If it represents real activity, reverse it properly instead of deleting it, so the audit trail and any downstream reporting stay intact.

Related

Error fix

Fix Oracle EBS Workflow Notification Mailer Not Sending Emails

When EBS notifications stop reaching inboxes, check the mailer status in Oracle Applications Manager (OAM) Workflow Manager first - a Suspended or Error status almost always points at an SMTP or IMAP connectivity or credential problem introduced by a mail server change, not at Workflow itself. Fix the mail server configuration, restart the mailer component, and requeue the backlog.

How-to

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

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.

Error fix

Fix ORA-01555: Snapshot Too Old in Oracle EBS Concurrent Requests

ORA-01555 in a concurrent request means the program tried to read data from undo that has already been overwritten, usually because the report or custom PL/SQL ran long enough, or committed often enough mid-cursor, that the undo tablespace could not retain the needed read-consistent image. Increase UNDO_RETENTION and undo tablespace size first, then review the program for commits inside open cursor loops.

How-to

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

Error fix

Fix 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 fix

Oracle 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 ERP

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

Stuck on Oracle E-Business Suite (R12 General Ledger)?

Talk to engineers who work inside Oracle E-Business Suite (R12 General Ledger) every week, and who build private AI that answers these questions from your own ERP data.