Run a month-end close that finishes on time: publish cutoff rules and a dated close calendar with an owner and a separate reviewer per task, work reconciliations and accruals in dependency order, clear review gates before statements go out, and assemble the close pack that proves the numbers. Ships a checklist system, worked calendars for solo, small, and multi-entity teams, and a tool that generates the calendar, audits gate discipline, and flags flux variances. Use when planning, running, speeding up, or fixing a monthly, quarterly, or year-end close, building a close checklist or calendar, or explaining why a close keeps slipping.
name: month_end_close description: "Run a month-end close that finishes on time: publish cutoff rules and a dated close calendar with an owner and a separate reviewer per task, work reconciliations and accruals in dependency order, clear review gates before statements go out, and assemble the close pack that proves the numbers. Ships a checklist system, worked calendars for solo, small, and multi-entity teams, and a tool that generates the calendar, audits gate discipline, and flags flux variances. Use when planning, running, speeding up, or fixing a monthly, quarterly, or year-end close, building a close checklist or calendar, or explaining why a close keeps slipping."
Month-End Close
Purpose
A close is a small project that repeats every month: fixed scope, fixed order, a hard finish date. Closes slip for project reasons, not accounting reasons. Owners are unclear, dependencies run out of order, review starts after the statements are drafted, and support lives in one person head. This skill treats the close as a system: a published calendar, a stable checklist, work in dependency order, three review gates, and a pack that proves the result.
The system ships in three parts. The checklist in references/close-checklist.md defines the work by phase. The calendars in references/close-calendars.md show the same system sized for a solo operator on a 10 day target, a small team on a 5 day target, and a multi-entity team with staggered inputs. The standards in references/reconciliation-and-review.md define what finished means for a reconciliation, a flux explanation, and a review gate. The tool in bin/close_check.py generates the calendar, audits the gates, and flags the variances.
This skill covers process and review discipline. It does not replace judgment on accounting treatment. Estimates, tax positions, and unusual transactions go to a qualified accountant or controller for the organization, and the pack records who decided what.
Workflow
1. Set the calendar before the month ends
- Pick the target finish day from the latest hard deadline that depends on the statements, then set the target one business day earlier. Five business days is a workable target for a small team with current bank feeds. A solo operator should plan on 10 and protect it.
- Generate the dated calendar and assign a named owner and a separate named reviewer to every task:
bash
python3 bin/close_check.py calendar --period 2026-09 --target-day 5
python3 bin/close_check.py calendar --period 2026-09 --target-day 5 --format csv > tasks.csv
- Publish cutoff rules with the calendar: last day and time for invoices, receipts, expense reports, and journal requests, and who can approve an exception. Exceptions get logged. An informal exception is a cutoff that does not exist.
- Confirm the payroll calendar and subledger health at minus 2 days. A pay period that straddles period end needs an accrual plan, not a surprise on day 3.
2. Work the checklist in dependency order
Follow references/close-checklist.md phase by phase:
- Pre-close (minus 3 to minus 1): cutoff published, payroll confirmed, bank and cards pre-reconciled except last day activity, open purchase orders reviewed for accruals.
- Capture and reconcile (days 1 to 2): post all entries to cutoff first, then bank and card reconciliations, then receivable and payable aging tie-outs, then clearing accounts to zero or an itemized balance.
- Adjust (day 3): accruals with a named basis, prepaid amortization, deferred revenue, depreciation, payroll accrual, tax accruals, then inventory and intercompany where they apply.
- Review (day 4): trial balance scan, flux review, draft statement review, correcting entries, then a rerun of the reports for every account a late entry touched.
- Finalize (target day): final statements, close pack, sign-off, period lock, carryforward log.
Do not reorder to suit availability. Reconciliation before final posting produces rework, and review after statement production produces restatements of finished work. When a dependency is blocked, log it as blocked with an owner and keep working on tasks that do not depend on it.
3. Hold the reconciliation standard
A reconciliation counts as done only when it meets the five point standard in references/reconciliation-and-review.md: tied to an outside source or an itemized schedule, every difference named with an amount, age, and owner, old items explained, checked by someone other than the preparer, and filed in the pack. Apply the same standard to accrual and reserve schedules, which reconcile to their own rollforward. Clearing, suspense, and undeposited funds accounts end the month at zero or at a balance listed item by item. A lump balance is an open task, not a reconciliation.
4. Run flux review with recorded thresholds
- Set the dollar threshold, percent threshold, and small balance floor before opening the numbers. Record them in the pack. Use the tool defaults only as a starting point for the first three closes: 5,000 dollar, 10 percent, 500 floor, in reporting currency.
- Flag variances with the tool or the same rules by hand:
bash
python3 bin/close_check.py flux --current tb_now.csv --prior tb_prior.csv --dollar-threshold 5000 --percent-threshold 10 --floor 500
- Give every flagged account a disposition: explained with a named driver and a source, fixed by a listed journal entry, timing with an expected reversal period, or escalated with the open question stated. Sign flips, new accounts, and disappeared accounts get a disposition regardless of size.
- Reject explanations that restate the number. A usable explanation names a driver: price, volume, timing, mix, a new or lost contract, a cutoff shift, or a one-off item, and points at the record that supports it.
5. Pass the three review gates, then lock
- Gate 1, preparer self-check: checklist complete, reconciliations meet the standard, journal entries carry support.
- Gate 2, independent review: a reviewer who did not prepare the work checks tie-outs, reads every flux disposition, and samples journal entry support. Review notes are written in the checklist or pack and cleared there.
- Gate 3, approver sign-off: the named approver signs the pack, confirms the carryforward log, and authorizes the lock.
- Audit the task list before gate 3. The audit fails on a missing owner, on preparer and reviewer being the same person, on a task marked done over an unfinished dependency, and on any blocked task still open:
bash
python3 bin/close_check.py audit tasks.csv
- Lock the period or restrict backdated posting once gate 3 passes. Reopening needs the approver and a logged reason, and any entry posted on a reopen restarts gate 2 for the accounts it touches.
6. Close the loop into next month
- Record the actual finish date against the target in the pack. Name the phase that ran longest.
- Open next month checklist with the carryforward log already filled in: every unresolved item, its owner, and its clearance date.
- Change the system, not the effort level, when the same phase slips three months running: move a cutoff earlier for a repeat late source, shift a reconciliation to weekly during the month, or move a dependency. Working later in the same broken order is not a fix.
Output Contract
Every close delivers a close pack with these parts, in this order:
- Final income statement, balance sheet, and cash flow statement for the period.
- The dated close calendar as executed, with owner, reviewer, and final status per task, plus the audit output from
bin/close_check.py audit.
- Every balance sheet reconciliation, meeting the five point standard, with reconciling items listed by amount, age, and owner.
- The journal entry list for the period, with support references, and the accrual schedules with the basis for each accrual.
- The flux report with the thresholds used and a disposition for every flagged account.
- The cutoff exception log: each exception, who approved it, and its effect.
- Sign-off page: preparer, reviewer, and approver names with dates, covering gates 1 to 3.
- Carryforward log: open items, owners, clearance dates, and the actual finish date against target.
Operating Rules
- Never present close timing or threshold figures as standards. Targets and thresholds in this skill are planning defaults from practitioner practice. The team sets its own, records them, and applies them consistently.
- Never invent a variance explanation. If the driver is not in the records, the disposition is escalated or unknown with a named owner to find out. A plausible story with no source is worse than an open question.
- Keep preparer and reviewer separate wherever a second person exists. For a solo close, state that in the pack and use a delayed self-review or an outside reviewer. Do not list the same person twice to make the form look complete.
- Keep support with the work. A reconciliation, entry, or explanation that depends on information in one person inbox or memory is not finished.
- Do not lock a period with blocked tasks open. Waive a task in writing with a reason and an approver, or finish it.
- Treat period reopening as an event: approver, reason, entries posted, and a fresh gate 2 review for affected accounts, all logged in the pack.
- Escalate treatment questions, such as revenue recognition on a new contract type, tax positions, and large estimates, to a qualified accountant for the organization. Record the decision and who made it in the pack.
- Keep the checklist stable. Change it from evidence: a miss that a new line would have caught, or a system change that removed the risk a line was guarding.
No ratings yet — be the first to rate it.