Period Close: The Monthly Ritual

The close is the highest-stress recurring event in any ERP. If you’re on support, your on-call rota is built around it. Understanding the close makes you immediately more useful than a developer who doesn’t.

What “the close” is

Turning a month of transactions into a set of financial statements that management and auditors can rely on. It has a hard deadline, a fixed sequence, and hundreds of dependencies.

Typical timeline (a well-run mid-size company)

Day Activity
−3 to −1 Cut-off communications; freeze non-urgent master data changes; pre-close checks
Day 1 Close sub-ledger entry for the prior period: last invoices, last goods movements, last timesheets
Day 1 Close inventory/material period. This is the first hard lock.
Day 1–2 Bank statements imported and reconciled; cash confirmed
Day 2 AP: goods-receipt accruals, invoice accruals for known-unbilled
Day 2 AR: revenue cut-off testing, unbilled revenue, deferred revenue movement
Day 2–3 Payroll posting and reconciliation
Day 3 Depreciation run; asset reconciliation
Day 3 FX revaluation of open foreign-currency items
Day 3 Provisions and accruals: bonus, warranty, bad debt, rebates, legal
Day 3–4 Production order settlement, WIP calculation, variance settlement
Day 4 Cost centre allocations, assessments, distributions
Day 4 Intercompany reconciliation and elimination prep
Day 4–5 Tax calculation and posting; VAT/GST return preparation
Day 5 Close AP and AR sub-ledgers
Day 5 Trial balance review, account reconciliations, flux analysis
Day 5–6 Management reporting pack; commentary
Day 6 Close GL for the period
Day 7–10 Group consolidation and group reporting

“Fast close” companies do this in 3–4 days. Struggling ones take 15+. The difference is almost entirely automation and data quality, not headcount.

The dependency graph

Sub-ledger cut-off
      │
      ├──▶ Inventory period close ──▶ Production settlement ──▶ Variance to COGS
      │                                        │
      ├──▶ Bank reconciliation                 └──▶ WIP valuation
      │
      ├──▶ Depreciation run ──────────────┐
      ├──▶ Payroll posting ───────────────┤
      ├──▶ Accruals & provisions ─────────┼──▶ Cost allocations ──▶ Profitability
      ├──▶ FX revaluation ────────────────┤
      └──▶ Tax calculation ───────────────┘
                                           │
                                           ▼
                                    Trial balance
                                           │
                                           ▼
                              Account reconciliation & review
                                           │
                                           ▼
                                     Period close
                                           │
                                           ▼
                                    Consolidation

Anything that runs out of order produces wrong numbers. Allocations before payroll means the allocation misses payroll cost. Settlement before all confirmations means WIP is overstated. This is why close is orchestrated, not ad hoc.

The close activities in detail

Cut-off

Ensuring transactions land in the right period. The classic errors:

  • Goods shipped 31 March, invoiced 2 April, revenue recorded in April → understated March revenue
  • Goods received 30 March, invoice arrives 5 April, no accrual → understated March cost and liability

Cut-off testing is a core audit procedure. Auditors take the last 10 shipments before and first 10 after period end and check the period each landed in.

Accruals and provisions

Type Purpose
Accrued expense Cost incurred, invoice not received (utilities, professional fees)
Goods receipt accrual Goods received, invoice not received — usually the GR/IR balance
Accrued revenue Earned, not invoiced
Prepayment Paid in advance, expense belongs to later periods (insurance, rent)
Deferred revenue Invoiced in advance, revenue belongs to later periods
Bonus provision Accrue monthly for an annual payout
Warranty provision Expected future warranty cost on goods already sold
Bad debt provision Expected credit loss on receivables
Rebate accrual Volume discounts customers will earn
Restructuring / legal Where an obligation exists and can be estimated

Most accruals are reversing: posted on the last day of the period, automatically reversed on the first day of the next, so the real invoice can post normally without double-counting. Your accrual mechanism must support auto-reversal with a defined reversal date.

Reconciliations

Every balance sheet account must be explained:

Account Reconciled against
Bank Bank statement
AR control AR subledger, aged
AP control AP subledger, aged
Inventory Stock valuation report / physical count
Fixed assets Asset register
GR/IR Open PO analysis
Payroll liabilities Payroll system
Tax accounts Tax returns
Intercompany Counterparty’s balance
Clearing accounts Should be near zero

A reconciliation has: a balance, a supporting schedule, an explanation of every difference, and a signature. Tools like Blackline and FloQast exist entirely to manage this workflow.

Flux analysis

Explain every material movement versus prior period and versus budget. “Repairs up 340% because of the compressor failure at DHK1” — a real explanation, not “increase in costs”. Auditors and the CFO both ask for this.

Where developers get involved

The jobs you’ll build or fix

Job Requirements
Depreciation run Idempotent, restartable, test mode, catch-up
Revenue recognition run Same
FX revaluation Reversing, per rate type, per account class
Allocation cycles Correct sequence, iterative solve, restartable
Order settlement High volume, parallelisable, restartable
Accrual posting + auto-reversal Reversal date is data, not code
Recurring entries Schedule, validity range, skip rules
Balance carryforward (year end) Re-runnable after late postings
Tax calculation and return extract Reconciles to GL
Reconciliation reports Fast enough to run repeatedly

The universal requirements for every close job

  1. Idempotent — re-running for the same period/scope changes nothing
  2. Restartable — resume from failure, don’t reprocess what’s done
  3. Test/simulation mode — produce the numbers without posting
  4. Parallelisable — split by company/plant/asset range; the close window is short
  5. Progress visible — a stuck job at 2am needs a progress indicator, not silence
  6. Clear error output — “1,247 of 90,000 assets failed, here’s the list with reasons”, not one exception and a rollback
  7. Auditable — who ran it, when, with what parameters, what it produced

That last point matters: a close job’s log is audit evidence.

Performance

The close is when your system runs its heaviest workload against its largest tables while everyone is watching. Common failures:

  • Settlement job that takes 14 hours and blows the window
  • Trial balance report that times out
  • Allocation cycle that deadlocks against posting
  • A report joining 12 tables with no index on posting_date
  • Nightly batch overlapping with close jobs

Profile close jobs against production-volume data, in a pre-prod environment, before the first close. “It was fast in DEV with 500 rows” is the classic go-live disaster.

Close automation and control

Modern practice manages the close as a task list with dependencies:

task(id, name, period, owner, due_offset_days, depends_on[],
     status,          -- NOT_STARTED | IN_PROGRESS | COMPLETE | BLOCKED
     evidence_url, completed_by, completed_at, sign_off_by)

Benefits: everyone sees the critical path, dependencies are enforced, sign-offs are captured as audit evidence, and next month you can see which task was the bottleneck.

SAP Financial Closing Cockpit, Oracle Close Manager, Blackline Task Management, FloQast — all implement this pattern. If your customer doesn’t have one, a well-built task list in their existing tooling is a genuinely high-value deliverable.

Hard close vs soft close

  • Hard close — full process, all reconciliations, audit-ready. Quarter and year end.
  • Soft close — abbreviated, estimates instead of full analysis, management reporting only. Interim months for some companies.

Year-end additions

On top of the normal month-end:

  • Physical inventory count and valuation adjustment
  • Fixed asset physical verification
  • Full impairment review
  • Provision reassessment
  • Balance carryforward
  • New year number ranges, budget versions, calendars, tax rates
  • External audit fieldwork
  • Statutory accounts and tax return preparation

The pre-close checklist you should automate

  • Exchange rates loaded for the period end date
  • All interfaces have run successfully; no records in error queues
  • No documents in “parked”/”held” status awaiting posting
  • No unposted goods movements or unconfirmed production orders
  • Number ranges have capacity
  • Batch job schedule for the close is armed and in the right order
  • Period status matches the close plan
  • Sub-ledger to GL reconciliations are clean before you start
  • Clearing accounts reviewed
  • Intercompany balances confirmed with counterparties

Every one of these can be a query with an alert. Building that dashboard is one of the most appreciated things a developer can do for a finance team.

Next