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.
- Stage 5: run Month End Processing, once per Set of Books, and check each run.
- Stage 6: build the statements.
- Stage 7: lock March.
- 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 aLOCK_GLmonth, 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:
- Set March back to
OPEN, post the document or journal, finalise it. - 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.
- REGENERATE every Financial Report snapshot whose range includes March.
- 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 see | Why | Fix |
|---|---|---|
| The Trial Balance is empty even though you can see balances on individual accounts | Month End Processing was never run for the months in the snapshot’s range — the snapshot reads summary rows, not journals | Run 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 line | Chart of Account > Set Of Books > Ledgers > Add the primary ledger, save, run again |
| A whole group of accounts is missing from the Profit and Loss | Their GL Category is not linked to a Report Section, so month-end never saw them | Chart 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 sales | The cost-of-goods-sold processor inside Month End Processing found no COGS or STOCK_BALANCE default GL code on the company and wrote nothing, silently | Map 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 disagree | Some 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 section | Post all purchases to the default Purchase code, PROCESS the month again, REGENERATE |
| The statements do not reflect a correction you posted yesterday | The snapshot was frozen before the posting, and a snapshot is not live | PROCESS 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 month | The 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 company | Look 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 fix | The fix went into March, and March was re-processed, but April’s close still starts from March’s old opening journal | PROCESS April again, then every later closed month, in order, then REGENERATE |
| The books reopen after you thought they were closed | A period status can be set back to OPEN by anyone who can open the Chart of Account applet, with no approval step | Restrict who has the applet. The lock is a signal, not a control |
Related documentation
- Financial Reporting Guide — the long version of stages 5 to 7, read statement by statement for the running example
- Financial Report Applet — what Month End Processing writes, and every Error Checking diagnostic
- Month-End Closing Process — Stages 1 to 4 and the whole close’s success check