Skip to content
Month-End Closing Process

Month-End Closing Process

This is the short version: the order to do things in when you close a month, and what breaks if you do them in a different order. Each stage links to the guide that walks it through properly. By the end you will have a Trial Balance that balances, a Profit and Loss and Balance Sheet you can send to your accountant, and a locked period nobody can quietly post into. Budget most of a working day for your first close and about two hours once the rhythm is established.

Meet GadgetSphere

GadgetSphere Sdn Bhd sells consumer electronics from 22 branches, with two sister companies — GadgetSphere Online (GSO) and GadgetSphere Distribution (GSD). That means three Sets of Books, and month-end runs once per Set of Books, not once for the group. You are closing March 2026. Your external accountant wants the three statements by the 10th.

The one thing that catches everybody. A Financial Report snapshot does not read your journals. It reads the monthly summary rows that Month End Processing writes. If you skip Month End Processing and go straight to the report, your Trial Balance comes back empty — and it looks exactly like losing a month of data. You have not lost anything; the month was simply never processed.

Before you start

  • Every Set of Books has at least one ledger linked to it. One with no ledger fails with Set of Books is missing primary ledger configuration.
  • Every GL Category is linked to a Report Section. A category without that link makes its GL Codes vanish from every statement and from month-end itself, silently.
  • You can open the Financial Report applet with CREATE (or OWNER / ADMIN) rights — creating and re-running a month-end record needs more than read access.

Stage 1: Finish the month’s documents

Sales, Purchasing, Finance applets — the document listings

Everything dated in March has to reach FINAL. A saved document is not a posted document: BigLedger queues the journal when a document is finalised, not when it is saved, and a background job writes it a few seconds later. Walk the listings for sales invoices, credit notes, purchase invoices, receipt vouchers and payment vouchers and clear anything still sitting in DRAFT with a March date.

The common failure here is a document that was finalised but whose posting job then failed, so the journal never got written — usually a missing default GL code on the item or the company. The document still says FINAL, which is why nobody notices. You will catch those in Stage 4; you do not have to hunt for them now.

Stage 2: Reconcile every cashbook

Finance > Bank Reconciliation applet

Twenty-eight cashbooks is a lot of reconciling, so start this early — it is the stage most likely to find a real error rather than a formatting one. Upload each March bank statement, run auto-matching, confirm or reject what it proposes, and post an adjustment journal for whatever is left over.

Bank Reconciliation Guide walks one cashbook through end to end, including what closing a session does and does not lock.

Stage 3: Post the adjusting journals

Finance > Ledger and Journal applet

Accruals for costs you have incurred but not been invoiced for, prepayments for the reverse, depreciation, and any corrections the reconciliation threw up. Date them inside March. If last month’s depreciation journal is the same shape as this month’s, clone it rather than retyping it.

Journal Entries Guide covers the header, the lines, branch tagging, cloning and how to reverse one you got wrong.

Stage 4: Check nothing is stuck

Finance > Financial Report applet > Error Checking

Two diagnostics, five minutes, and they save the embarrassing version of this process where the statements are wrong and nobody notices until the accountant does.

Trace Document tells you why a given document did or did not post. Missing Journal on a FINAL document means the journal was never created — usually a missing GL code on the item, and the message names it. Fix the mapping, then click Resolve (or Repost if the document is already posted). Missing Shadow Document on a foreign-currency document means its company-currency copy was never made; Resolve creates and finalises it.

Stock Flow Report compares inventory value against accounting value per module. A Difference is one of three things: MISSING_ACCOUNTING (stock moved, no journal), MISSING_INVENTORY (journal, no stock movement) or WRONG_AMOUNT (both, disagreeing). Select the rows and click CREATE to post the missing side. A row that comes back with a server error needs its default GL code fixed first.

Stage 5: Run Month End Processing — once per Set of Books

Finance > Financial Report applet > Month End Processing > Create

Pick the Set of Books, the year (2026) and the month (March), and click Create. Repeat for GSO and GSD. Before the close proper, the same click runs two processors that have no button of their own: a cost-of-goods-sold journal (opening stock + purchases − purchase returns − closing stock, debit cost of goods sold, credit stock) if the company has COGS and STOCK_BALANCE default GL codes, and a retained-earnings journal moving the month’s result if it has PROFIT_LOSS and RETAINED_EARNING. Neither complains when the defaults are missing — it simply writes nothing, and the cost-of-sales line on the statements stays at zero. Then, for each ledger in the Set of Books, BigLedger writes three things: a closing-day journal dated 31 March that reverses each account’s net movement for the month, an opening-day journal dated 1 April that re-opens the balance-sheet accounts only, and one summary row per account holding the month’s net movement and its opening and closing amounts. Those summary rows are what every statement is built from.

If a Set of Books genuinely had no activity in March, the run fails with Journal Line is empty. — you cannot close an empty month, and that is expected rather than a fault.

To re-run a month you have already closed, open the record, go to the Processor tab and click PROCESS. It deletes what it wrote last time and rebuilds it, which is how a back-dated posting gets picked up.

Stage 6: Build the statements

Finance > Financial Report applet > Financial Report

Create a snapshot for each Set of Books over the range you need — March alone for the monthly pack, January to March for the quarter. The snapshot freezes the Trial Balance, Profit and Loss, Balance Sheet and MITRS views at the moment you create it. REGENERATE rebuilds its lines from the current summary rows while keeping the header.

Financial Reporting Guide reads each statement in turn and exports the pack.

Stage 7: Lock March

Master Data > Chart of Account applet > Fiscal Year > FY 2026 > Fiscal Period tab

Set March 2026 to the status that matches how settled you are:

  • LOCK_GL — nobody can post a manual journal into March, but automatic journals from documents still post. Use this while you are waiting on one straggler.
  • LOCK_TXN — no operational document can be finalised with a March date (stock transfers are the one exception). This is the usual month-end lock. Note that it checks the date at FINAL only: a manual journal can still be cloned or updated into a LOCK_GL month, because that check runs on create alone.
  • LOCK_ALL — both. Save this for after the audit sign-off; it is the hard close.

Be aware of what the lock is and is not. Anyone who can open the Chart of Account applet can set a period back to OPEN, and there is no approval on it. The control is who has the applet, not the status.

If something lands in March after you have closed

It happens — a late supplier invoice, a correction. The order is fixed and doing it in the other order leaves you with statements that quietly disagree with the ledger:

  1. Set March back to OPEN, post the document or journal, finalise it.
  2. PROCESS the March Month End Processing record again, for the affected Set of Books.
  3. REGENERATE every Financial Report snapshot whose range includes March.
  4. Re-lock March.

What success looks like

Thirty seconds, in the Financial Report applet. Open the March snapshot for GadgetSphere Sdn Bhd and look at the Trial Balance tab: it has rows, and total debits equal total credits. Switch to the Balance Sheet: total assets equal liabilities plus equity. Then open Chart of Account > Fiscal Year > FY 2026 > Fiscal Period and confirm March shows the lock status you set. Three Sets of Books, so do it three times — and if GSD looks fine but GSO is empty, you closed two of the three.

Common mistakes

What you seeWhyFix
The Trial Balance is empty even though you can see balances on individual accountsMonth End Processing was never run for the months in the snapshot’s range — the snapshot reads summary rows, not journalsRun Month End Processing for each month in the range, for that Set of Books, then REGENERATE the snapshot
Month-end fails with Set of Books is missing primary ledger configuration.The Set of Books has no ledger lineChart of Account > Set Of Books > Ledgers > Add the primary ledger, save, run again
A whole group of accounts is missing from the Profit and LossTheir GL Category is not linked to a Report Section, so month-end never saw themChart of Account > GL Category > GL Section tab, link the category, then PROCESS the month again and REGENERATE
Cost of goods sold is zero on the snapshot although the month had salesThe cost-of-goods-sold processor inside Month End Processing found no COGS or STOCK_BALANCE default GL code on the company and wrote nothing, silentlyMap both defaults in Chart of Account > Company > Default GL Codes, PROCESS the month again, REGENERATE
The statements do not reflect a correction you posted yesterdayThe snapshot was frozen before the posting, and a snapshot is not livePROCESS the month again, then REGENERATE the snapshot — REGENERATE alone is not enough
Month-end fails with Journal Line is empty.There is nothing dated in that month for that Set of BooksNothing to fix. An empty month cannot be closed; close the ones that have activity
The books reopen after you thought they were closedA period status can be set back to OPEN by anyone who can open the Chart of Account applet, with no approval stepRestrict who has the applet. The lock is a signal, not a control

Related documentation

Last updated on