Skip to content
Month-End: Process, Report, Lock

Month-End: Run Month End Processing, Build the Statements and Lock the Period

Stages 5 to 7 of the month-end close: run Month End Processing for each Set of Books, build the statements from what it wrote, and lock the month — and the order to follow when something lands in a month you have already closed. It follows Stage 4, where Trace Document and the Stock Flow Report showed nothing stuck.

The running example closes March 2026 for GadgetSphere’s three Sets of Books — GS, GSO and GSD — and the external accountant wants the three statements by the 10th.

Before the first Create, check Before you start: a Set of Books with no ledger fails, and a GL Category with no Report Section link drops its codes from month-end silently. And keep the order: a Financial Report snapshot reads the summary rows Month End Processing writes, not your journals, so a snapshot over a month that was never processed comes back with an empty Trial Balance.

  1. Stage 5: run Month End Processing, once per Set of Books, and check each run.
  2. Stage 6: build the statements.
  3. Stage 7: lock March.
  4. If something lands in March after you have closed.

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, plus the month’s stock adjustments and moving-average resets, − 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 (for a profit it debits the profit-and-loss account and credits retained earnings; a loss goes the other way). 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.

Check every run, because the screen says success even when the close failed. Three things stop the closing or opening journal being written, and none of them shows a message. A ledger with no journal lines at all in March has nothing to close. A GL Category with no Report Section link leaves those journals unbalanced. So does a company with no PROFIT_LOSS / RETAINED_EARNING default GL code. Since July 2026 an unbalanced journal is refused. In every case the record is created and the screen reports success. After each run, open Ledger And Journal and, for each ledger of the Set of Books, find the two journals described AUTO CREATED FROM MONTH END PROCESSING: one dated 31 March and one dated 1 April. If both are there, the month is closed. If either is missing, fix the cause and run it again.

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. Months chain to each other. Each month’s close starts from the opening journal the month before wrote on the 1st. So re-processing February changes March’s starting point, and March’s figures stay stale until you PROCESS March too. Always PROCESS the month that changed and then every later closed month, in order. For the same reason, the first month you ever close must be the first month your books have entries in. Close forward from there, one month at a time, or every balance from before your first close is missing from the chain.

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. If you have already closed April or later, PROCESS each of those too, in order, earliest first, and check each run as in Stage 5.
  3. REGENERATE every Financial Report snapshot whose range includes March.
  4. Re-lock March.

What success looks like for this part

For each of the three Sets of Books: in Ledger And Journal, each ledger has its two AUTO CREATED FROM MONTH END PROCESSING journals for March, one dated 31 March and one dated 1 April; the March snapshot’s Trial Balance has rows and total debits equal total credits, and its Balance Sheet has total assets equal to liabilities plus equity; and Chart of Account > Fiscal Year > FY 2026 > Fiscal Period shows March at the lock status you set. If a late posting landed after the close, March and every later closed month were processed again in order and every snapshot covering March regenerated. The whole close’s check is on the front page.

Common mistakes in this part

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 every later closed month in order, 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
Cost of goods sold is too low, and the margin report and the Profit and Loss disagreeSome purchases were posted to an item’s or a line’s own GL code. Month-end counts purchases only on the company’s default Purchase and Purchase Return codes: one purchases account per company is a setup rule. The size of the P&L’s gap then depends on that account’s GL category and report sectionPost all purchases to the default Purchase code, 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 every later closed month in order, then REGENERATE the snapshot. REGENERATE alone is not enough
Month End Processing said success, but a statement is empty, short or does not balance for that monthThe closing or opening journal was not written, and the screen was not told: a ledger with no entries in the month, a GL Category with no Report Section link, or no PROFIT_LOSS / RETAINED_EARNING default GL code on the companyLook in Ledger And Journal for the two AUTO CREATED FROM MONTH END PROCESSING journals per ledger. Fix the cause, PROCESS the month and every later closed month in order, then REGENERATE. A ledger with nothing at all in the month cannot be closed. Take it out of the Set of Books, or post the month’s entries first
April’s Balance Sheet is wrong although April was processed after the fixThe fix went into March, and March was re-processed, but April’s close still starts from March’s old opening journalPROCESS April again, then every later closed month, in order, then REGENERATE
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