Skip to content
NetSuite reporting

NetSuite month-end close checklist

An ordered NetSuite month-end close checklist: 14 steps with the period-locking, inventory-costing, revenue and intercompany gotchas that break a close.

ERPray teamUpdated 9 min read
Short answer

A NetSuite month-end close runs in a fixed order: cut off entry by locking A/R and A/P for the period, reconcile banks, let inventory costing finish, post accruals, amortisation, depreciation and revenue recognition journals, revalue foreign currency balances, eliminate intercompany, review the P&L, then close each subsidiary from the bottom of the hierarchy up before closing the parent.

Key takeaways

  • Locking a period and closing a period are different actions. Lock A/R and A/P early to stop the ledger moving under you; close only once, at the end.
  • Inventory costing is asynchronous. A backdated receipt can change last month's COGS after you thought the subledger was final.
  • Revenue recognition, amortisation and depreciation journals are generated processes, not automatic ones. If nobody runs them, the period simply lacks them.
  • In OneWorld, closing is subsidiary-aware: children close before the parent, and elimination has to run before anyone reviews consolidated numbers.
  • A close that takes eight days is almost never slow because of the journals. It is slow because the cut-off was never enforced.

A NetSuite month-end close checklist is only useful if it is ordered. Most published close lists are inventories of tasks, which is fine for a first month and useless in practice, because in NetSuite several steps invalidate earlier ones when run out of sequence. Reconcile inventory before costing has settled and you will do it twice. Eliminate intercompany before the currency revaluation and your elimination entries carry the wrong rates.

What follows is the order I use, with the NetSuite behaviour that makes each step matter. It assumes a mid-market account with inventory, some foreign currency and at least two subsidiaries. Strip out what you do not have.

Three things that decide how the close goes

Before the sequence, the conditions. Almost every painful close I have seen was painful for one of these reasons, not because a step was missed.

  • Whether the cut-off is real. NetSuite has granular period controls: separate locks for A/R, A/P and payroll, a lock covering everything, a closed state, and an option that still permits non-G/L changes in a locked period. Use none of them until day six and the ledger keeps moving while you reconcile it, which makes every reconciliation provisional.
  • Whether the period calendar was set up correctly. Periods are defined once, for the whole account, and transactions post to a period rather than just a date. A 4-4-5 calendar, a 53-week year or a non-calendar fiscal year has to be right at setup. The fiscal period calculator checks which period a date should belong to before you argue with the ledger.
  • Whether anyone owns the exceptions. Unapproved bills, unposted fulfilments, orders stuck pending and unapplied cash are daily hygiene, not close tasks. They become close tasks when nobody does them, and they are the biggest cause of a close that drifts past day five.

The NetSuite month-end close checklist

Fourteen steps. Steps 1 to 3 are the cut-off, 4 to 7 are the subledger reconciliations, 8 to 12 are the generated journals and currency work, 13 and 14 are review and close.

  1. 01

    Publish the calendar and enforce the cut-off

    Circulate the close calendar with named owners and hard times, not dates: expense claims by 17:00 on day 1, vendor bills by 12:00 on day 2. Then enforce it with the period controls rather than with email. A cut-off that exists only as a request is not a cut-off.

  2. 02

    Clear the transaction backlog

    Work the exception lists before you lock anything: transactions pending approval, fulfilments not yet invoiced, invoices in a pending status, vendor bills in an inbox, expense reports awaiting a manager, unapplied customer payments. Each is a number that will appear in the period whether or not you accounted for it. Build these as saved searches once and leave them on the controller's dashboard.

  3. 03

    Lock A/R and A/P for the period

    Locking blocks new subledger transactions in the period while still allowing the journals the close needs. This is the step teams skip, and the step that makes everything after it stable. Locking is reversible and operational; closing is the final act at step 14. Note that locking A/R does not stop a journal to the AR control account, which is why step 7 still matters.

  4. 04

    Reconcile bank and credit card accounts

    Match statements to the ledger, clear deposits in transit, and chase anything unmatched older than the statement date. Watch for payments whose transaction date sits in the prior period but whose posting period sits in this one — they reconcile against the bank and land in the wrong month's cash flow. Banks first, because unrecorded bank activity changes AR and AP applications.

  5. 05

    Let inventory costing finish, then reconcile inventory to the GL

    This is the step that is genuinely different in NetSuite. Costing is calculated by background processing rather than at the instant you save a transaction, and inventory transactions carry a cost-accounting status indicating whether their GL impact is complete. Out-of-order events — a fulfilment processed before the receipt that supplied it, a backdated receipt, negative on-hand going positive — trigger recalculation, which can move a prior period's COGS. So: confirm costing has caught up, reconcile the inventory valuation total to the inventory asset accounts, and only then treat COGS as final.

  6. 06

    Post landed cost, and clear purchase variances

    Freight, duty and brokerage that belong in inventory cost have to be applied to the relevant receipts, not left in an expense account, or item margins are wrong all year. Then review the accounts collecting price and exchange-rate differences between the receipt and the vendor bill. A material balance there is either a standard-cost hygiene problem or a receiving problem, and both are cheaper to find monthly. The landed cost calculator shows the per-unit effect if you need to judge materiality.

  7. 07

    Reconcile AR to the control account and set the reserve

    Run the aging as at the period end and tie the total to the AR control account. The two usually disagree for one of three reasons: a journal posted directly to the control account, a transaction whose transaction date and posting period fall in different months, or unapplied credits and payments the aging treats differently from the GL. Then set the bad debt provision from the aging buckets rather than from habit — the AR aging calculator gives bucket mix and weighted days overdue, and the bad debt reserve calculator checks the provision against a flat-percentage method.

  8. 08

    Reconcile AP and the received-not-billed balance

    Tie the AP aging to the AP control account, then look hard at the clearing account holding goods received but not yet billed. Every item receipt without a matching vendor bill sits there. A balance that only grows means receipts are being processed and bills are not — and the accrual you think you are booking manually is already in the ledger.

  9. 09

    Post accruals and run the amortisation journals

    Recurring accruals for goods and services received without paperwork, plus the amortisation journals for prepaid and deferred costs on amortisation schedules. Amortisation journals are a process you run for a period — they do not appear on their own. If the period is already locked to all transactions the run fails, which is one reason step 3 locks the subledgers rather than everything.

  10. 10

    Run revenue recognition

    Where you use revenue arrangements and recognition plans, the plans must be current before you generate the journals, and the journals are generated per period. Two timing traps: an arrangement created after the run will not be included, and unbilled receivable adjustments are a separate run. Revenue recognised but not billed, or billed but not recognised, is where the balance sheet reveals which run was missed.

  11. 11

    Run fixed asset depreciation

    Depreciation is a monthly process run against the asset register, and the period must still accept postings. Check the run result rather than assuming success: assets get skipped for prosaic reasons — a missing depreciation method, an in-service date in the future, an asset already at residual — and a skipped asset shows up as a depreciation charge that is quietly light.

  12. 12

    Handle foreign currency: rate issues, revaluation, consolidated rates

    Three separate things, in this order. Resolve transactions with date or exchange-rate problems, because they distort everything downstream. Revalue open foreign currency balances: open AR, AP and bank balances in non-base currencies restate at the period-end rate, with the difference to unrealised gain or loss. Then calculate the consolidated exchange rates the translated group numbers depend on.

  13. 13

    Eliminate intercompany, then adjust what elimination could not reach

    Run the elimination task so intercompany activity reverses into the elimination subsidiary. Then check that the intercompany accounts actually net to zero. Where one side posted and the other did not, or the two sides used different rates, elimination leaves a residue that needs an explicit adjustment. Doing this before step 13 is not optional: reviewing consolidated numbers before elimination has run means reviewing gross figures. The mechanics are covered in consolidated multi-subsidiary reporting.

  14. 14

    Review, then close from the bottom of the hierarchy up

    Review before closing, always. Compare the P&L to prior month, prior year and budget; explain every variance above your materiality threshold in one sentence; scan the balance sheet for accounts that should be zero and are not. Only then close. In OneWorld the close is subsidiary-aware, so children close before the parent, and the parent cannot be finished while a child is outstanding. Reopening a closed period is deliberately visible. Publish the pack, and log what went wrong — that log is what shortens next month.

The four gotchas that actually break a NetSuite close

GotchaHow it shows upWhat to do
Transaction date and posting period disagreeThe aging report and the GL control account differ by exactly one invoice, and both are 'right'Reconcile by posting period, not transaction date. Restrict who can override the posting period on a transaction.
Inventory costing recalculates after you reconciledCOGS for a closed-feeling month shifts by a few thousand dollars with no journal you recogniseConfirm costing has caught up before reconciling inventory. Make out-of-order receipts and negative on-hand a standing weekly job.
A generated journal run was never executedDeferred expense or deferred revenue balances that never move; depreciation that is light for one month onlyPut each generated run on the checklist with a named owner and evidence of the result.
Consolidated rates missing or stale for the periodGroup results move materially with no operational cause; a subsidiary looks 5% off in every accountTreat the consolidated rate calculation as a close task with sign-off, and check the currency rate table it derives from.
None of these produce an error message. They all produce a plausible wrong number.
Free calculator
AR aging calculator

Paste your open invoice amounts and days overdue to get bucket mix, weighted average days overdue and a suggested reserve — the two numbers step 7 needs.

Closing a OneWorld group

Multi-subsidiary close has one structural rule: work up the hierarchy, because a parent's consolidated position depends on its children being final. The currency and intercompany steps then sit between the subsidiary work and the group review, in the order above.

  • Give every subsidiary a named local owner and a visible status. Waiting on Germany should be obvious on day 4, not discovered on day 7.
  • Do not let a fast subsidiary close early while intercompany is still moving. A closed child needing a correction becomes a reopen.
  • Reconcile intercompany balances pairwise before elimination runs. Elimination reverses what it is told to; it does not find what one side never recorded.

What a good close looks like

Day 2
A/R and A/P locked
Day 5
Journals posted, subledgers tied out
Day 6
Reviewed, closed, pack published

Those days are achievable in a mid-market account with inventory and two or three subsidiaries, and they are directional rather than a benchmark. What separates a six-day close from a twelve-day close is almost never the journals. It is whether exceptions were worked daily and whether the cut-off was enforced with period controls instead of goodwill. The review step is also where a defensible budget versus actual story gets written, while the numbers are fresh enough to explain.

The reconciliations in steps 5 to 8 eat the days, because each is a report, an export and a comparison. answers that shape of question directly against your own account — does the inventory valuation total tie to the inventory asset accounts for June, by subsidiary? — and shows the SuiteQL it ran, so the reconciliation becomes a check rather than a build. The inventory valuation report covers that tie-out in detail.

Frequently asked questions

What is the difference between locking and closing a period in NetSuite?

Locking blocks new subledger transactions in a period — A/R, A/P and payroll can be locked separately — while still allowing the journals a close needs. Closing is final: nothing posts to a closed period unless it is reopened, which is a visible action. Lock early to stabilise your reconciliations, close once at the end.

How long should a NetSuite month-end close take?

Five to six working days is a realistic target for a mid-market account with inventory and a few subsidiaries, and it is directional rather than a published benchmark. The differentiator is not journal speed. It is whether exceptions like unapproved bills and unapplied cash were worked daily, and whether the cut-off was enforced with period locks.

Why did my COGS change after I closed the month in NetSuite?

Inventory costing is calculated by background processing rather than at the moment you save a transaction. Backdated receipts, fulfilments processed before their supplying receipt, and negative on-hand quantities all trigger recalculation, which can move a prior period's COGS. Confirm costing has caught up before reconciling inventory, and treat out-of-order receipts as a weekly job.

What order should the NetSuite period close tasks run in?

Cut-off and locking first, then bank and subledger reconciliations, then the generated journals — amortisation, revenue recognition, depreciation — then currency work in the order resolve rate issues, revalue open balances, calculate consolidated rates, then intercompany elimination, then review, then close. The built-in checklist enforces much of this order by keeping later tasks unavailable.

Can I close one subsidiary before another in NetSuite OneWorld?

Yes, and you generally must: closing is subsidiary-aware and works up the hierarchy, so children are finished before the parent. Avoid closing a subsidiary while intercompany activity is still moving, because an intercompany correction to a closed child means reopening it. Elimination should run before anyone reviews consolidated numbers.

Why does my AR aging not match the AR control account?

Three usual causes. A journal was posted directly to the AR control account, so it never appears in the aging. A transaction has a transaction date and a posting period in different months, so the two reports date it differently. Or unapplied payments and credit memos are treated differently by the aging than by the GL.

Your ERP already knows. Start asking.

ERPray computes answers like these live from your own ERP account and shows the exact query behind every number. Early access is open for NetSuite teams — free plan at launch.