We're live in beta — earn up to 12,000 credits by signing up today. Get started
Finance

Month end close

Read this before running or reviewing a month end close, preparing management accounts, or checking whether a period is ready to be locked in Xero or QuickBooks.

  • 0 installs
  • v1
  • Updated Sep 10, 2026

Written and maintained by FloConnector. Install it as kept updated and your copy follows our revisions; install it as your own and it never changes unless you change it.

SKILL.md 4.5 KB

Month end close

Closing a month means the numbers for that period are final and can be reported on. Most small businesses never really close: they leave periods open, keep posting into them, and then wonder why last quarter’s profit changed. A close is what stops that.

The work is a checklist, and the value is in running the same checklist every month rather than remembering what mattered last time.

What close means here

Three levels, and it is worth agreeing which one is being asked for:

LevelWhat it involvesWho
Soft closeReconcile, review, produce management accounts. Period stays openMonthly, internal
Hard closeSoft close plus a lock date, so nothing can moveMonthly or quarterly
Year endHard close plus accruals, depreciation, adjusting journalsOnce, with an accountant

This skill covers soft and hard close. Year end is an accountant’s job and includes judgements (provisions, depreciation policy, accruals) that should not be made without one.

The checklist

Run in this order. Each step depends on the ones above it, and doing them out of order produces numbers you have to redo.

  1. Bank accounts reconciled. Every account, to the period end date. If they are not reconciled, stop: nothing below this is meaningful. See the bank-reconciliation skill
  2. Sales invoiced. All work delivered in the period is on an invoice dated in the period
  3. Receivables reviewed. Aged debtors pulled, anything over terms flagged. See the chase-overdue-invoices skill
  4. Purchases entered. Supplier bills received for the period are in, including ones that arrive after month end but relate to it
  5. Payables reviewed. Aged creditors pulled, anything overdue flagged
  6. Suspense and uncategorised cleared. These accounts should be nil at close. A balance in suspense is an unfinished decision
  7. Payroll posted. The period’s pay runs are in the ledger, with tax and superannuation or pension liabilities recorded
  8. Tax accounts checked. Sales tax, GST or VAT control accounts agree to what has been lodged and paid
  9. Intercompany and owner accounts checked. Director loans, owner drawings, transfers between entities
  10. Review the P&L against last month and last year. Movements you cannot explain are errors until proven otherwise
  11. Review the balance sheet. Every balance should be something you can point at
  12. Lock the period. Only for a hard close, and only once 1 to 11 pass

assets/close-checklist.md is the same list in a form you can hand a customer, with a column for who does what.

Where to get each number

Vendor specifics, including the exact report tool for each step:

What to look at in the review steps

Steps 10 and 11 are where errors are actually caught, and they are the ones most often skipped because they need judgement rather than a query.

On the profit and loss, compare against both the prior month and the same month last year. Ask about anything that moved more than about 20 percent, plus:

  • A revenue line that is nil when it should not be, usually means uninvoiced work
  • An expense line that doubled, usually a duplicate bill or a coding error
  • An expense that vanished, usually a bill not yet entered
  • Gross margin moving without a reason. This is the most commercially important signal on the page

On the balance sheet, every line should be explainable:

  • Bank balances agree to reconciliations
  • Receivables agree to the aged debtors report
  • Payables agree to the aged creditors report
  • Suspense, uncategorised and clearing accounts are nil
  • Tax control accounts agree to lodgements
  • Anything named “ask my accountant” is by definition unfinished

Locking

A lock date is the mechanism that makes a close real. Without it, “closed” is a statement of intent.

Set it only when the checklist passes, and understand that it stops the customer editing history too, which is the point and is occasionally unwelcome. Say what it will do before doing it, and get explicit agreement. Do not set a lock date on your own initiative.

What to do when it does not pass

Report it as not closed and say which step failed. A close that is declared complete with two accounts unreconciled and $4,000 in suspense is worse than no close, because the management accounts that come out of it get believed.

The right output is: here is the checklist, here is where it stopped, here is what needs to happen and who needs to do it.

Reference files

Everything the skill tells your AI to read, exactly as it ships in the zip.

references/quickbooks.md 3.5 KB
# Month end in QuickBooks Online

## 1. Bank reconciliation

```
quickbooks_list_accounts            filter to AccountType Bank
quickbooks_get_general_ledger       the account's transactions
quickbooks_get_balance_sheet        as at period end
```

QuickBooks does not expose a reliable reconciled flag, so the review is built from the general ledger against a statement balance. See the `bank-reconciliation` skill.

## 2 and 3. Sales and receivables

```
quickbooks_list_invoices
quickbooks_get_aged_receivables      the authoritative debtor ageing
quickbooks_list_estimates            quoted, not yet invoiced
quickbooks_list_credit_memos         credits that reduce the real balance
```

`quickbooks_get_aged_receivables` is the number to use. Do not compute ageing from invoice dates: credit memos, payments on account and deposits all change it.

An accepted estimate with no invoice against it, for work delivered in the period, is uninvoiced revenue. Check for it.

## 4 and 5. Purchases and payables

```
quickbooks_list_bills
quickbooks_get_aged_payables
quickbooks_list_purchase_orders
quickbooks_list_vendor_credits
```

## 6. Suspense and uncategorised

QuickBooks creates `Uncategorised Income`, `Uncategorised Expense` and `Uncategorised Asset` automatically, and they fill up quietly.

```
quickbooks_get_general_ledger    scoped to those accounts
```

Target is nil at close.

Also check `Ask My Accountant` if the file has one. It is a suspense account with a friendlier name and the same meaning.

## 7 and 8. Payroll and tax

Payroll is a separate QuickBooks product and may not be in scope for the connection. Check rather than assume.

```
quickbooks_list_tax_codes
quickbooks_list_tax_rates
quickbooks_list_tax_agencies
```

Sales tax liability agrees to what has been lodged, which is a number only the customer has.

## 10 and 11. Review

```
quickbooks_get_profit_and_loss           the period
quickbooks_get_profit_and_loss_detail    when a line needs opening up
quickbooks_get_balance_sheet
quickbooks_get_trial_balance
quickbooks_get_cash_flow
quickbooks_get_sales_by_customer         concentration risk
quickbooks_get_sales_by_product          mix
```

`quickbooks_get_profit_and_loss_detail` is the one that saves time in a review: when a line has moved and you do not know why, it opens the line into its transactions without a second round of queries.

`quickbooks_get_report` is the generic escape hatch for any report the named tools do not cover.

## 12. Closing the books

QuickBooks calls it Close the Books, and it takes a closing date and optionally a password. It is set in company settings, not through the API.

```
quickbooks_get_preferences    tells you the current closing date
```

Check it first. Writing into a closed period fails, and the failure reads as a permission problem rather than a date problem if you are not expecting it.

## Practical notes

- **`SyncToken` must be current on every update.** Read immediately before writing
- **Sparse updates.** A full update replaces the object and clears omitted fields
- **Fault codes, not HTTP status, carry the reason.** The connector surfaces the code and the `intuit_tid`. Quote the tid in any failure report
- **Reads are metered.** Intuit charges for API reads on the current pricing, so pulling a report once and reusing it beats pulling it three times. This is a real cost, not a style preference
- **Classes and departments** are the QuickBooks departmental dimensions. If the file uses them, a review without them is incomplete
references/xero.md 3.3 KB
# Month end in Xero

The checklist step by step, with the call for each.

## 1. Bank reconciliation

```
xero_list_accounts                 filter to Type BANK
xero_list_bank_transactions        check IsReconciled
xero_get_balance_sheet_report      as at period end
```

See the `bank-reconciliation` skill for the full method.

## 2 and 3. Sales and receivables

```
xero_list_invoices     ACCREC, status AUTHORISED
```

Anything still `DRAFT` and dated in the period is work delivered but not invoiced. That is the most common cause of a month looking worse than it was.

For the aged view, Xero's reports are the reliable source rather than computing ages yourself from invoice dates, because credit notes, prepayments and overpayments all change what is actually owed.

```
xero_list_credit_notes    unallocated credits reduce the real debtor balance
```

## 4 and 5. Purchases and payables

```
xero_list_invoices          ACCPAY
xero_list_purchase_orders   orders not yet billed
```

A purchase order for goods received in the period with no bill against it is an accrual the customer should know about, even in a soft close.

## 6. Suspense and uncategorised

```
xero_list_accounts     find the suspense account
xero_list_journals     what hit it, and when
```

`xero_list_journals` is the ledger level view and paginates. Page through it rather than trusting the first response.

The target is a nil balance. A non nil suspense account at close means somebody decided not to decide.

## 7 and 8. Payroll and tax

Payroll lives in a separate Xero API surface with its own scopes, and may not be connected. Check before promising anything about it.

For tax control accounts, pull the account balance and compare it to what the customer says has been lodged and paid. The API cannot see lodgements, so this step needs a number from them.

## 10 and 11. Review

```
xero_get_profit_loss_report      period, and the comparison period
xero_get_balance_sheet_report    as at period end
xero_get_trial_balance_report    everything, for a completeness check
```

Xero's profit and loss report accepts comparison periods, so pull the comparison in the same call rather than making three calls and diffing them yourself.

`xero_get_budget` gives you budget against actual where the customer maintains one, which turns a variance review from an opinion into a measurement.

## 12. Locking

Xero's lock dates are set in the organisation settings, not through the Accounting API. This is a step for the customer in the web app.

`xero_get_organisation` will tell you what the current lock dates are, which is worth checking at the start rather than discovering mid write that the period is locked.

Xero has two locks: one for everyone, and a later one for advisers only. Both matter, and a write can fail against either.

## Practical notes

- Xero paginates most list endpoints. Do not treat a first page as a complete set
- Rate limits are real and per tenant. Batch reads rather than looping one record at a time
- Report tools are much cheaper than reconstructing a report from transactions, and they are what the customer's accountant will compare against. Prefer the report
- Tracking categories are Xero's departmental dimension. If the customer uses them, a P&L without a tracking breakdown is only half the picture. `xero_list_tracking_categories` tells you whether they do
assets/close-checklist.md 3.1 KB
# Month end close checklist

Period: ____________________    Prepared by: ____________________    Date: ____________________

Every line is either done or blocked. A line that is neither means the close has not been run, it has been started.

## Reconcile

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 1 | Every bank account reconciled to period end | ☐ | | |
| 2 | Every credit card reconciled to period end | ☐ | | |
| 3 | Payment platform balances agree (Stripe, Square, PayPal) | ☐ | | |
| 4 | Loan and finance account balances agree to statements | ☐ | | |

## Revenue

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 5 | All work delivered in the period is invoiced | ☐ | | |
| 6 | No draft invoices dated in the period remain | ☐ | | |
| 7 | Aged receivables pulled and reviewed | ☐ | | |
| 8 | Credit notes and customer credits allocated | ☐ | | |
| 9 | Deposits and prepayments correctly held, not recognised early | ☐ | | |

## Costs

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 10 | All supplier bills for the period entered | ☐ | | |
| 11 | Bills received after month end but relating to it are accrued or noted | ☐ | | |
| 12 | Aged payables pulled and reviewed | ☐ | | |
| 13 | Purchase orders received but not billed identified | ☐ | | |
| 14 | Staff expense claims submitted and entered | ☐ | | |

## Clean

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 15 | Suspense account nil | ☐ | | |
| 16 | Uncategorised income, expense and asset accounts nil | ☐ | | |
| 17 | Clearing and undeposited funds accounts nil or explained | ☐ | | |
| 18 | No transactions coded to Ask My Accountant | ☐ | | |

## Payroll and tax

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 19 | All pay runs for the period posted | ☐ | | |
| 20 | Payroll tax and superannuation or pension liabilities recorded | ☐ | | |
| 21 | Sales tax, GST or VAT control account agrees to lodgements | ☐ | | |
| 22 | Any tax paid in the period is recorded against the liability | ☐ | | |

## Owner and related party

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 23 | Director or owner loan account reviewed | ☐ | | |
| 24 | Drawings and personal expenses identified and coded | ☐ | | |
| 25 | Intercompany balances agree both ways | ☐ | | |

## Review

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 26 | P&L compared to prior month, movements over 20 percent explained | ☐ | | |
| 27 | P&L compared to same month last year | ☐ | | |
| 28 | Gross margin movement understood | ☐ | | |
| 29 | Every balance sheet line explainable | ☐ | | |
| 30 | Budget variance reviewed, where a budget exists | ☐ | | |

## Finalise

| # | Step | Done | Who | Notes |
|---|---|---|---|---|
| 31 | Management accounts produced and circulated | ☐ | | |
| 32 | Actions arising assigned with owners and dates | ☐ | | |
| 33 | Period locked (hard close only) | ☐ | | |

## Sign off

This period is:

☐ **Closed.** Every line above passes.

☐ **Closed with exceptions.** Passes except the lines noted, which are accepted and recorded here:

☐ **Not closed.** Blocked at step ____ because:

Questions, answered

What does the Month end close skill do?

Read this before running or reviewing a month end close, preparing management accounts, or checking whether a period is ready to be locked in Xero or QuickBooks. It is a document in the Agent Skills format: the steps, the rules and the reference files your AI reads when the job comes up. It is written for Xero, QuickBooks, and installs into any workspace whether or not those are connected.

How do I install it?

Add to FloConnector opens it inside your workspace, where Install puts it into one of your collections. Every profile carrying that collection has it on its next call. Download zip gives you the same skill as a bundle for any client that installs skills from disk.

Will it change after I install it?

Only if you ask it to. Keep updated follows FloConnector's revisions (this is v1) and records each one in the skill's history. Make my own is a copy that never changes unless you change it, and a kept-updated skill can be made editable later in one click.

Can I edit it or reuse it elsewhere?

Yes. You can copy, change, rename and redistribute it, commercially or not, with no attribution. Every skill in the library is published under CC0 1.0, and the zip carries the licence text.