Skip to main content

Period close

The general ledger runs real accounting periods: they open, they close, and they lock. A closed period rejects new postings; a locked one rejects reopening. This is the workflow for month-end, and the order matters because a close is a one-way gate for everything upstream of it.

The period lifecycle

Lock is irreversible. Close when the month’s work is done; lock when the numbers have been reported externally — filed, sent to investors, used in a bank covenant. The gap between close and lock is your correction window. Once locked, a correction goes in the current period as an explicit adjusting entry, which is exactly the audit trail you want.

The close, in order

1 — Sweep unposted entries

Every draft either gets posted (POST /api/v1/gl/journal-entries/{id}/post) or voided (/{id}/void). A draft left behind is a number that changes after you’ve reported it.

2 — Revalue foreign currency

Restates open foreign-currency balances at period-end rates. Run it before the trial balance, not after — otherwise the trial balance you review is not the one you close.

3 — Reconcile the subledgers

The AR and AP views must agree with their control accounts:
A mismatch is almost always an unapplied payment (order to cash, step 4) or an unposted bill — find it now, because after the close it becomes a prior-period adjustment.

4 — Review the trial balance

Debits equal credits by construction — the engine enforces balanced entries — so what you are reviewing is placement: suspense-account balances, sign flips, anything that moved more than the business did.

5 — Close

The admin console runs this same close as a dry run first with a per-step report, and requires typed confirmation for the real one. Per-item failures do not abort a close — read the report rather than assuming success. If you close via API, mirror that: check the response’s per-step results, not just the status code.

6 — Report, then lock

The correction that arrives late

An invoice for June surfaces in July, after the close:
  • June closed but not locked — reopen, post, re-close. Cheap now, impossible later.
  • June locked — post to July with a memo referencing the June document. Do not be tempted by reverse on old entries to “make room”: POST /api/v1/gl/journal-entries/{id}/reverse creates the reversal in the current period, which is correct behaviour — it will not un-happen June.