Closing twenty client files in the same week: the month-end checklist for a practice
Day four. Client 3's bank feed has a two-week gap, Client 9's payroll journal is waiting on a report the client has not sent, Client 14 you finished on Tuesday, and you genuinely cannot remember whether anyone has opened Client 6. Every published close checklist is unhelpful here, because every one of them is written for a single company with a single set of books: a finance team of five, one ledger, sequenced day one to day five.
A practice closes in a different shape. The tasks barely vary across the portfolio and neither does the order; what varies is which clients are stuck, and on what. The thing you need in front of you on day four is not a twenty-task list — it is one grid, clients down and tasks across, that answers three questions at a glance: what is blocked, who is waiting on the client, and which files can still be finished this week.
So this page keeps the twenty-task list, because you still need it per file. What it adds is the portfolio layer over the top, the four tasks that work differently when you do not own the ledger, and the part every other checklist leaves out entirely — how to actually lock the period in QuickBooks Online, Xero, Zoho Books, Odoo and FreshBooks, and exactly what each of them still lets the client change after you have closed.
(For matching a statement to a ledger, see the bank reconciliation guide; for explaining the numbers, variance analysis.)
Why a practice close is a different shape
Twenty tasks times twenty clients is a matrix, not a list. That sounds like a pedantic distinction until you try to run the second one with the first one's tools, which is what a single-entity checklist asks you to do — twenty copies of the same sheet, none of which can see each other.
The binding constraint changes too. In one finance team, the close is gated by sequencing: you cannot do the P&L until the bank is reconciled. In a practice the sequencing is trivially easy, because you have done it nineteen times already this week. What gates you is how fast twenty different clients answer an email — and no amount of re-ordering your own tasks moves that.
Three failure modes follow, and a single-entity checklist has no concept of any of them:
- The file nobody started. Not blocked, not late, not flagged — simply never opened, because two people each assumed the other had it. On a per-file checklist it looks identical to a file that has not reached day one yet. There is nothing in the file that says "nobody is coming".
- The file that is finished but not locked. Every task ticked, pack sent, period wide open. Until someone locks it, the figures you reported are a snapshot of a ledger that can still move.
- The file the client kept posting into. The worst of the three, because you find out next month: you closed at the end of August, the client carried on entering August invoices in the second week of September, and the comparative in next month's pack no longer agrees with the pack you sent.
All three are portfolio problems. All three are invisible from inside a single file, and visible in about two seconds from a grid.
Start from the single-file checklist
hisab-month-end-close-checklist.xlsx — free, no signup. What is inside it, accurately:
- 20 tasks, grouped across: Cash & bank, Revenue, Receivables, Payables, Payroll, Fixed assets, Prepayments, Inventory, Tax, Intercompany, Review, Reporting, Close.
- Six columns: #, Task, Owner, Status, Due day, Notes.
- Status is a Data Validation dropdown with four options: Not started, In progress, Done, N/A.
- A Progress % cell counting tasks marked "Done" over the total.
That is the whole thing — deliberately small, because a checklist you fill in beats a 200-row workbook you abandon in month two. Two companions cover the reporting step: the profit and loss template and the balance sheet template.
Be clear about what it is, though: it ships as a single-entity file. It has no client column, no roll-up and no notion that twenty copies of it exist. Three edits turn it into the practice version, and none of them take longer than a coffee:
- Insert a Client column as column A and shift everything right. Every formula on the sheet that references a column by letter needs re-pointing after you do this, which is two minutes of work and the reason to do it before you populate anything.
- Convert the task range to an Excel table (select it, Ctrl+T). A table extends its own formatting, formulas and data validation when you add a row, so a task 21 does not arrive without a status dropdown.
- Save one workbook per period, with one tab per client and a roll-up tab — not one file per client. The reason is the roll-up: a formula can reach across tabs in one workbook without every one of them being open, and it cannot reach into twenty closed files without a query.
That is the per-file layer sorted. The layer above it is the one that actually gets you through the week.
The portfolio grid: clients down, tasks across
One sheet. Clients in column A, one row each. The twenty tasks as columns B through U. Every cell holds the same four-option status the single-file sheet uses — Not started, In progress, Done, N/A — plus a fifth that only exists at portfolio level: Waiting on client.
That fifth status is the point of the whole grid. On a single-file checklist there is no difference between a task you have not done and a task you cannot do; both read Not started, and both look like your fault. Across twenty files the difference is everything, because the first is a morning's work and the second is an email you sent on Tuesday.
Apply the same Data Validation list to the whole block (the build steps are below, and they are identical), then three formulas.
Per-client progress, in the column to the right of the grid, with the twenty task cells for that client in B2:U2:
=IFERROR(COUNTIF(B2:U2,"Done")/(COUNTA($B$1:$U$1)-COUNTIF(B2:U2,"N/A")),0)
The denominator is the number of task columns that exist, less the ones marked not applicable for this client — which matters far more in a practice than in one company, because a sole trader with no payroll and no stock will never have twelve of the twenty and should not sit permanently at 60%.
Per-task stall, in a row underneath the grid, for the twenty clients in B2:B21:
=COUNTIF(B2:B21,"Waiting on client")
Read that row across and it tells you something no per-file view ever will. One client stuck on the payroll journal is a client problem. Fourteen clients stuck on the payroll journal is your problem — a standing request that goes out too late, or a report you should be pulling yourself rather than asking for.
Not started at all, for the files nobody has opened:
=COUNTIF(B2:U2,"Not started")=COUNTA($B$1:$U$1)
Returns TRUE for a client where nothing has been touched. Conditional-format that column and the abandoned file announces itself on day two instead of day eight.
Colour the grid so it reads from across the room: a formula-based conditional formatting rule per status, with Waiting on client in the loudest colour you have — amber or orange, not red, because red is where you want the genuinely late ones. Home > Conditional Formatting > New Rule > Format only cells that contain, set to the specific text, is enough; you do not need a formula rule for a plain text match.
What to look at first thing each morning, in this order: the Waiting on client count for the whole grid, because that is today's chasing list and it goes out before you open a single ledger; then any client sitting at zero; then the per-task row, for the thing that is stuck everywhere.
Why write it down at all
Consistency: an unwritten close quietly changes shape — a task gets skipped once, then never comes back. Handover: when the usual person is away, the checklist is the handover document. Audit trail: owners, dates and notes record that the work was done, so when someone asks "who reconciled this, and when", the answer is a cell.
There is a fourth reason in a practice that does not apply to a finance team: it is the file-review evidence. When a client moves to a different preparer inside the firm, the completed grid is what the new person inherits instead of a conversation. And it is close to the first thing a professional-body reviewer asks to see, because a signed-off checklist is how you demonstrate the work was done in a defined order by a named person, rather than asserting it.
The per-file sequence
Inside one file the order barely changes from client to client, so treat this as a reference list rather than the spine of the work — the spine is the grid above. The task set below follows Intuit's published Month-end close checklist for QuickBooks. It is a vendor document — no accounting body we could find publishes a canonical month-end list — so adapt it rather than obeying it.
It opens with a "Gather this info first" section listing exactly: total income/revenue; accounts receivable; bank accounts and statements; expense receipts and supplier invoices; petty cash totals; inventory total. Get those six on your desk first. Then the ten steps, in Intuit's order:
| # | Step (Intuit's wording) | Covers |
|---|---|---|
| 1 | Create a closing schedule | Owners, dates, sequence |
| 2 | Record sales | Income, revenue, receivables |
| 3 | Reconcile expenses | Vendor statements, supplier invoices, payables |
| 4 | Record petty cash | Cash tin, small reimbursements |
| 5 | Record customer invoices and payments | Cash application |
| 6 | Review assets and liabilities | Loans, accrued expenses, deferred revenue, equipment |
| 7 | Reconcile bank statements | Bank and card accounts |
| 8 | Count inventory | Physical vs book |
| 9 | Reconcile income and payroll | Payroll cost, deductions, liabilities |
| 10 | Prepare financial reports | P&L, balance sheet, cash flow, KPIs |
What each step means when it is not your ledger
One departure: the template puts bank reconciliation early rather than at step 7, because everything downstream depends on cash being right. Reorder to suit the client — the value is a fixed sequence. Six things the step names do not tell you:
Reconcile every account, not just the main one — cards and petty cash included. Each needs a closing statement balance, an adjusted balance after deposits in transit and outstanding cheques, and a difference of zero. Our bank reconciliation template prints "RECONCILED" or "OUT BY amount".
Cut-off is one question: was the good delivered or the service performed before period end? Invoices dated in the period for work not yet done belong in deferred revenue, carried as a liability and released month by month on a revenue-recognition schedule — Intuit's step 6. Then post receipts and pull an aging; if it lands as a pivoted layout that will not sort, cleaning messy data covers unpivoting.
The invisible tasks need their own rows. Goods received but not yet invoiced belong in the period as an accrual, so work from the goods-received log or open purchase orders — the invoice pile is by definition missing the ones you want. Same for releasing this month's portion of each prepayment. Nothing prompts either one; only the checklist asks.
"Count inventory" is really a cost-of-sales step. The closing count is what sets cost of goods sold for the period, where FIFO, LIFO and weighted average each return a different figure from the same physical count. Fix the costing method once and apply it every month, or gross margin moves for reasons that have nothing to do with trading.
Tax and intercompany early, not last. Reconcile the VAT/GST or sales-tax control accounts now, not the week the return is due, and agree intercompany balances before closing — an unagreed difference blocks consolidation.
Add a review layer before reporting. Zoho Books' Academy guidance on closing the books runs: update the general ledger, calculate ledger totals, take a preliminary trial balance, add adjustments such as depreciation, prepare a new trial balance, run variance analysis, then generate the statements. Then the pack — P&L, balance sheet, cash flow, KPIs — and the last line: lock the period. What that is called differs by system, so check your software's docs.
One thing to keep straight: zeroing out revenue and expense accounts does not belong in a monthly checklist — that is a year-end step (see the FAQ).
Four more only bite when the books are somebody else's.
You cannot chase the missing supplier invoice yourself. In a finance team, "get the invoice from the warehouse" is a task with an owner who works there. In a practice it is a request to a person you cannot see, whose priority it is not. So the task's real owner is the client, and the row needs a named client contact — a person, not "the client" — and a date you asked. A task whose owner is outside the firm is the one that needs the most tracking, not the least.
A coding review comes before anything downstream. You inherit whatever the client coded during the month, and that is not an input you can take on trust the way a finance team takes its own postings. Everything after it — the P&L, the VAT return, the variance commentary — is built on their category choices. Put a coding review in as its own task, early, and scope it honestly: you are looking for the obvious wrongs (capital items in repairs, drawings in wages, everything dumped in one suspense code), not re-doing their month.
The bank feed may be broken and nobody will have told you. Feeds drop out when a bank changes its authentication, when a client changes a password, or for no reason anyone can explain, and the client does not notice because the client is not looking. The symptom is a clean-looking account with a gap in the middle of it. Make "feed has no gaps for the period" an explicit check rather than an assumption — the bank reconciliation guide covers what a gap does to a rec.
The client will keep posting into the period after you finish. Not maliciously — they raise a late invoice, back-date it to the month it relates to, and the period you closed on the 8th is different on the 20th. There is exactly one fix, and it is the next section.
Locking the period — and what the client can still change afterwards
This is the step every close checklist ends with and none of them explains. "Lock the period" is one line on a list and a different mechanism in every system, with different things still permitted after you have done it. It is also the task most often skipped, because unlike a reconciliation nothing is visibly wrong if you do not do it — until next month.
The paths below are current as of writing, but these interfaces move. Check the vendor's own help page before you rely on a click path, and be especially careful with Odoo, where the lock dates have been relocated between major versions.
QuickBooks Online
Settings (the gear) > Account and settings > Advanced tab > the Accounting section > Edit > turn on Close the books and enter a closing date. Then the choice that actually matters, in the dropdown underneath: a closing date that only warns someone before they change a closed transaction, or one that requires a password. The warning-only setting is not a lock. It is a dialog that a busy person clicks through, and it produces exactly the scenario above. If you want the period to hold, set the password. Only an admin can change the closing date or the password afterwards, so make sure that is somebody at the firm.
Xero
Accounting > Advanced > Financial settings > Lock Dates. Xero gives you two, and the distinction is built for exactly this relationship. The period lock date stops everyone except advisers from changing anything on or before that date — your client is locked out, you are not, which is the setting you want while you are still finishing. The adviser lock date stops everyone including you, which is the one you set when the file is genuinely signed off. You need the Adviser role to set either.
What a Xero lock does not stop: users can still create draft invoices, bills and expense claims and submit them for approval, and can still save draft manual journals. Nothing posts into the locked period, but drafts accumulate, so check the drafts before you re-open rather than after.
Zoho Books
Accountant > Transaction Locking. Set a lock date and a reason, and transactions dated before it can no longer be modified or deleted. Two things to know. Zoho locks before the date you enter, so to lock through 31 March you set the lock date to 1 April — enter 31 March and that day stays open. And locking is per module (sales, purchases, accountant, banking, inventory adjustments), so a partial lock is possible and a partial lock is also easy to leave behind by accident. Unlocking can be done for a specific date range rather than all-or-nothing, which is the graceful way to let one correction through.
Odoo
Odoo uses lock dates that prevent both modifying posted entries dated on or before the date and posting new ones into that period; if you try, it moves the accounting date to the day after the lock. There are separate locks for different scopes, including one that applies to all users regardless of their accounting permissions. Recent versions reach them through the Accounting app's own lock-dates dialog; older ones put them in the accounting settings. Administrators can grant a time-limited exception, for themselves or for everyone, which is the sanctioned way to let a correction through rather than moving the lock date backwards and forgetting to move it again.
FreshBooks
FreshBooks calls it Financial Lock, under Settings > Advanced Preferences > Accounting. It stops changes to bills, credits, expenses, expense refunds, invoices, invoice payments, manual journal entries and other income dated in the locked period. On first use the lock date defaults to your fiscal year end, so if you are locking a month you have to change it. It can be unlocked at any time from the same screen, which makes it a discipline rather than a control — fine for your own workflow, weaker as evidence.
Then prove what the figures were
A lock stops the ledger changing. It does not record what the ledger said. Those are different things, and only the second one helps you six months later when a client queries a figure in a pack you sent.
So after you lock, export the trial balance for the period and keep it with the workpapers — a PDF or an .xlsx, saved in the client's period folder, not a screenshot in an email. It takes thirty seconds and it is the only artefact that lets you answer "this is what the accounts said on the day we closed them" without argument. If the lock is later unlocked, by you or anyone else, that export is the difference between noticing and not.
Make the lock and the export two separate rows on the checklist. One of them is routinely done and the other routinely is not, and a single row marked Done hides which.
Owners, due days and the client's own deadline
Owner must be a person, never a team — "Finance" is not an owner, and neither is "the client". If one person does the whole close, put your own name against all 20; it still tells a stand-in nobody else is covering.
In a practice every row wants two names: a preparer and a reviewer. That is not bureaucracy, it is the only thing that distinguishes a file that was done from a file that was done and checked, and it is the column a reviewer or a professional-body inspection actually reads. Where the task depends on the client, add a third — the named person at the client you asked, because "waiting on the client" with no name attached is how a request sits unchased for nine days.
Due day should be relative — day 1, day 2, day 3 — not a date, which keeps the sheet reusable: copy it, rename the tab, clear the statuses, and the due days still hold. A workable shape: inputs and sales on day 1; bank, card and AP reconciliations on day 2; accruals, prepayments, depreciation and payroll on day 3; inventory, tax and intercompany on day 4; trial balance, variance analysis, reporting and period lock on day 5.
But relative to what is the practice question. Day 1 of your month is not a deadline anybody outside the firm cares about. The due day should hang off the client's own date — their VAT quarter, their filing deadline, the date they promised their bank the management accounts, the board meeting on the third Tuesday. A client with a VAT return due on the 7th and a client whose lender wants figures on the 25th are not on the same timetable and should not be on the same day-3.
Which means the day-1-to-day-5 shape above is an example of a single file's rhythm, not a plan for the week. Across a portfolio it becomes a staggered rota: three or four files starting each day rather than twenty on day one, sequenced by whose deadline is nearest. Put the client's own deadline in a column on the grid and sort by it, and the rota builds itself.
Tracking it in Excel
Build the Status dropdown
Building your own sheet? The path on Windows desktop Excel:
- Type the status options in a single column with no blank cells — ideally inside an Excel table, because dropdowns based on a table update automatically as you add or remove items.
- Select the cells to restrict (the Status column).
- Data tab > Data Validation (in the Data Tools group).
- On the Settings tab, in the Allow box, choose List.
- Click in the Source box and select the list range, excluding header rows — or type entries separated by commas, e.g.
Not started,In progress,Done,N/A. - Tick In-cell dropdown, plus Ignore blank if empty cells are allowed. Optionally set an Input Message or Error Alert on their tabs, then click OK.
In Excel for the web it is Data tab > Data Tools > Data Validation; on Mac, on the Data tab, under Tools, select Data Validation or Validate. One caveat: validation cannot be changed while the workbook is shared or the sheet is protected, so set it up before you protect.
The Progress % formula
Say Status sits in D2:D31 and task names in B2:B31 (adjust to your row count). Completed tasks: =COUNTIF(D2:D31,"Done").
The obvious percentage is =COUNTIF(D2:D31,"Done")/COUNTA(D2:D31), formatted as Percentage — but it has two failure modes. An empty status range returns #DIV/0!. And COUNTA counts error values and empty text "" as non-empty, so formulas returning "" inflate the denominator. Both disappear if you count the task-name column and wrap the division:
=IFERROR(COUNTIF(D2:D31,"Done")/COUNTA(B2:B31),0)
Use that form: the denominator becomes the number of tasks that exist. COUNTIF(range, criteria) takes exactly two arguments, both required, and text criteria must be quoted. It is case-insensitive, so "done", "Done" and "DONE" all match.
On a single sheet holding every client's tasks — the alternative layout to the grid, one row per client-task pair — the same move gives you per-client progress. With the client name in A2:A600 and status still in D2:D600:
=IFERROR(COUNTIFS($A$2:$A$600,$G2,$D$2:$D$600,"Done")/COUNTIFS($A$2:$A$600,$G2),0)
where G2 holds the client name. Fill it down a list of clients and you have the roll-up. The whole-portfolio figure is the same formula with the client pair removed: =IFERROR(COUNTIF($D$2:$D$600,"Done")/COUNTA($B$2:$B$600),0). Watch the denominator here as well — if you want tasks marked N/A out of it, subtract them the way the grid formula above does.
For one person's progress, switch to COUNTIFS with owners in C2:C31: =COUNTIFS(D2:D31,"Done",C2:C31,"Priya"). It allows up to 127 range/criteria pairs, and every additional range must have the same number of rows and columns as the first. COUNTIF, COUNTIFS and COUNTA all work in Excel for Microsoft 365, 2024, 2021, 2019 and 2016, plus the Mac equivalents. A conditional-formatting rule that applies strikethrough in Excel to any row whose Status reads Done leaves only the outstanding work standing out.
Checkboxes, if everyone is on Microsoft 365
Select the range, then Insert > Checkbox. A checkbox is the values TRUE and FALSE with checkbox formatting, so it flows straight into formulas — Microsoft's example is =IF(A1,"Checked","Unchecked"). Spacebar toggles selected boxes; Home > Clear > Clear Formats keeps the TRUE/FALSE values, while Delete removes the boxes (twice if any are checked). Progress becomes =IFERROR(COUNTIF(D2:D31,TRUE)/COUNTA(B2:B31),0).
The catch: Microsoft documents Insert > Checkbox for Excel for Microsoft 365 and Microsoft 365 for Mac only. If anyone is on a perpetual licence (2019, 2021) or in Excel for the web, keep the dropdown as the primary mechanism — which is why the template ships with it. Microsoft does not document how a 365-made checkbox behaves in an older build, so do not assume it degrades gracefully.
How to know a file is genuinely done
"Progress 100%" is not the finish line, and a green row on the grid is not either. Five gates per file: every reconciliation prints zero or "RECONCILED"; the balance sheet balances (the balance sheet template prints "OK - balanced" or "OUT BY amount"); every material variance has a written explanation; the period is locked and the trial balance exported; and the review column is signed by somebody who is not the preparer.
That fifth gate is the one a practice cannot skip and a finance team often can, because in a practice the preparer's name is the one on the work. If you are genuinely a sole practitioner, see the FAQ — the honest answer is not "review your own file" and it is not "do not bother".
The portfolio is done when every row passes all five. Not when the grid looks green: green means the statuses say Done, and the statuses were typed by the same people whose work they describe.
What actually makes a practice close slow
No statistics here: the one credible benchmark for monthly close cycle time is behind member gating, and the day counts circulating on vendor blogs do not trace back to a study we could read. So — causes, in the order we would fix them in a practice, which is not the order a finance team would use.
1. Waiting on clients. This is first by a distance and it is not close. Everything else on this list is work you control; this is twenty people who have a business to run and no particular reason to prioritise your email. The fix is not a better spreadsheet. It is a chasing system: a named contact per client rather than an address, a standing request that goes out on the last working day of the month before anybody asks for it, and the Waiting on client row on the grid read first thing every morning so that a request sent on Tuesday is chased on Thursday rather than remembered on the following Monday. Make the chase itself a task with a date, because an email you sent is not a task you completed.
2. Manual re-keying. Exporting the ledger, pasting it in and fixing the layout is where hours go — and in a practice it is the same shape of work repeated across twenty files, which is precisely what makes it worth solving once rather than enduring twenty times. Built-in Excel handles a lot of it: Power Query re-runs the same import-and-clean steps on next month's export with one refresh, and a query built for one client's export usually works on the next client's from the same accounting system with only the source file changed.
3. Reconciliation by eyeball. A COUNTIFS match column beats ticking 400 lines by hand — its limitation is that amount-only matching cannot handle one deposit covering several invoices, or descriptions that differ between the two sides. Fuzzy matching in Excel covers the description problem.
4. Rebuilding the same report. Build the pack once with live formulas against a pasted export — the P&L template's Transactions sheet exists for this, with a worked SUMIFS example.
5. No sequence, and no test for "done". Otherwise you find the cash error after building the P&L, and ambiguous tasks stay ambiguous.
All of that works with nothing but Excel and a written list. Read on only if the re-keying in points 2 and 4 is what you want to stop doing by hand.
Where HISAB 360 fits
Points 2 and 4 repeat identically every month, which is where HISAB 360 helps: a paid Excel add-in with an AI chat panel that applies the work to your live workbook.
- Pulling actuals. It connects to QuickBooks Online, Xero, Zoho Books, Odoo and FreshBooks with full read and write, dropping invoices, bills, payments, journals, ledgers and reports into the sheet. See connecting QuickBooks and Xero to Excel.
- Reconciliation. Its AI bank reconciliation matches on amount and date tolerance, handles many-to-one deposits and fuzzy descriptions, flags duplicates and produces a report — the cases plain
COUNTIFScannot cover. - Reports and PDFs. Ask in plain English and it writes and applies formulas, Power Query steps, PivotTables, data-model measures or charts; it also extracts tables out of PDF statements into a structured range.
One connection at a time. Be clear about the multi-client claim, because it is easy to overstate: HISAB connects to one client's ledger at a time from inside a workbook. It takes the export-clean-paste cycle out of each file individually — which is worth having twenty times over — but it does not orchestrate a portfolio, does not know your other nineteen clients exist, and is not a close-management system. The grid above is the portfolio layer; this is the per-file one.
What it does not do. HISAB has no scheduling and no automated emailing — it will not run your close on day 3 or send the pack to your director, and there is no continuous background sync. Nor does it track checklist status; the template above is the tracker. It will not lock a period for you either: that is a task you do in the accounting system, on purpose, as set out above. It is Windows desktop Excel only (not Mac, not the web), connecting a ledger means authorising it via OAuth, and any write back should be reviewed before approval and reconciled afterwards.
Pricing: $7/month or $60/year if you bring your own AI provider key, $10/month for HISAB AI Basic, $20/month for HISAB AI Plus, or $199 perpetual. Credit top-ups are $4.99 and $12.99, where 1 credit is 1 cent of AI usage. There is a 15-day free trial of every feature plus 50 HISAB AI credits, no credit card required, once per machine — there is no permanently free tier, so after the trial it is paid. Detail on pricing and features.
Start with three clients, not twenty
The temptation is to build the grid for the whole portfolio on a wet Sunday and roll it out on the first. Do not. You will encode twenty clients' worth of guesses about which tasks matter, and the first real close will disagree with most of them.
Take your three most troublesome files instead — the ones that are always last, or always waiting on something. Download the month-end close checklist, make the three edits above, and build the grid for those three only. Put a real name in every owner cell, a client contact against every task that depends on the client, and each client's own deadline in its own column.
Run one close. Then, before you touch anything else, add the tasks you discovered were missing and delete the ones nobody used — that list is the whole value of the exercise and it does not exist until you have run it once. Roll it across the portfolio after that, and by the third month you will have a close that survives someone being away and a grid that tells you on day two which file nobody has opened. The P&L, balance sheet and bank reconciliation workbooks that pair with it sit on the free Excel templates for accountants page.
Frequently asked questions
One workbook with a tab per client, or one file per client?
One workbook per period, with a tab per client and a roll-up tab. The deciding factor is the roll-up: formulas can reach across tabs in a single workbook without the other tabs being open, and cannot reach into twenty closed files without a query. One file per client also multiplies the version problem by twenty — twenty places a formula can drift, twenty files to fix when you change a task. The case for separate files is confidentiality between staff, and if that applies to you it outranks the convenience; use separate files and accept that the roll-up becomes a Power Query import rather than a formula.
The client posted into a period I already closed — what now?
First establish what actually moved: compare the trial balance you exported at close (you did export one) to the ledger now. The difference is the damage, and it is often smaller than it feels. Then decide by materiality and by what has already left the building. If nothing has been filed or issued, correct the period and re-issue. If a VAT return or a set of accounts has gone out on those figures, do not quietly re-open — the change belongs in the current period as a prior-period adjustment, or it has to be dealt with properly as an amendment. Either way, set a lock date afterwards, because it will happen again otherwise, and put "period locked" on the checklist as its own row.
Can I lock a period in QuickBooks Online without stopping the client working?
Yes — locking the books does not stop anyone entering current-period transactions. Close the books sets a date, and only transactions dated on or before it are affected; everything after it carries on normally. The setting to think about is the security option: a warning-only closing date lets someone change a closed transaction after clicking through a dialog, while the password option requires the password. If the client is an admin they can change the closing date themselves, so in a client file the password is worth having and worth being the firm's. Xero handles the same need differently, with a period lock date that stops the client but not the adviser.
Who should review, when I am the only person in the practice?
Nobody can second-review their own work, and pretending otherwise on a checklist is worse than leaving the column blank. What a sole practitioner can realistically do: separate the review in time rather than in person — finish the file, leave it, and review it the next morning against a written list of what you are checking, which catches a surprising amount; make the review a different task with its own row and date, so it is a deliberate act rather than a feeling; and reciprocate with another sole practitioner for the files where the risk is highest. Whatever you do, record what you actually did rather than initialling a reviewer column that describes something that did not happen. Your professional body will have its own requirements on this — follow those, not this paragraph.
How long should a month-end close take?
We will not give you a number. The one benchmark owner with real data publishes it to members only, and the day counts quoted on vendor sites do not trace back to a study anyone can read. Judge yourself against your own trend instead.
What is the correct formula for a progress percentage?
=IFERROR(COUNTIF(D2:D31,"Done")/COUNTA(B2:B31),0), where D is Status and B the task name, formatted as Percentage. Counting the task-name column as the denominator avoids two problems: an empty status range causing #DIV/0!, and COUNTA treating formula-produced "" as non-empty and inflating the total. COUNTIF is case-insensitive, so "done" and "Done" both count.
Should I use checkboxes or a dropdown for status?
A dropdown, unless the whole team is on Microsoft 365. Native in-cell checkboxes via Insert > Checkbox are documented only for Excel for Microsoft 365 and Microsoft 365 for Mac, so a file opened in Excel 2019 or 2021 should rely on a Data Validation list. A dropdown also records In progress and N/A, which TRUE/FALSE cannot.
Do I close revenue and expense accounts to zero every month?
No. Zeroing revenues and expenses is a year-end step that readies the ledger for the next financial year — those accounts close to retained earnings at fiscal year end. Monthly, you post adjusting entries and lock the period.
Which tasks are easiest to forget?
Accruals for goods received but not invoiced, and prepayment releases. Both are invisible by nature: no document arrives to prompt you, so if the checklist does not ask, nothing does. Give each its own row with a named owner.
Try HISAB 360 on your own workbook
HISAB 360 is an AI assistant inside Excel for accountants and finance teams — it writes macros, Power Query and formulas from plain English, and connects two-way to QuickBooks, Xero, Zoho Books, Odoo and FreshBooks. The 15-day trial is the full product, no card required.