Get ready to close the month

Checks what is blocking the month's close: expenses to prepare, expenses not exported, missing receipts, settlements not exported and overdue invoices.

Controller๐Ÿ“† MonthlyIntermediateRead-only

Ask it like this

Are we ready to close the month?

When to use it

At the end of the month or quarter, to check that every accounting item is processed before closing the period.

What it produces

A close report with a status per item, the amounts involved and the list of expenses that block.

How it works

  1. 1Counts the month's expenses not yet prepared for accounting
  2. 2Counts those that are ready but not yet exported
  3. 3Spots expenses with no receipt
  4. 4Counts the month's settlements still to be exported
  5. 5Recalls supplier invoices overdue as of today
  6. 6Sums up each item as "OK" or "action required"

What protects you

  • This skill only reads: it changes nothing in Spendesk
  • It acts with your permissions and your role, never beyond
  • The assistant cannot approve or pay
โ–ธTechnical detail87/100 ยท 4 tools
ReconciliationERP exportspendesk_analyze_spendget_payablesspendesk_analyze_settlementsspendesk_get_due_invoices

# Month-end close checklist

## Purpose

Check in one request what is blocking a month's close: expenses not yet prepared, expenses ready but not exported, missing receipts, settlements not exported, overdue supplier invoices. Each item comes out โœ… or โŒ.

This skill only reads. It closes nothing, exports nothing and marks nothing as ready: see the accounting export skill for what comes next.

## Before any call

State the exact dates of the month being checked (e.g. "from 2026-09-01 to 2026-09-30"). Checks 1 to 3 apply to the expenses' **document date** (`payableDate`), not the accounting date.

## Check 1 โ€” Bookkeeping status of the month's expenses

```json
{
  "tool": "spendesk_analyze_spend",
  "params": { "fromDate": "2026-09-01", "toDate": "2026-09-30", "groupBy": ["bookkeepingStatus", "payableType"] }
}
```

One call gives the count and amount per status:

| `bookkeepingStatus` | Reading | Verdict |
|---------------------|---------|---------|
| `toPrepare` | Not yet prepared: **left out of the export without warning** | โŒ if any remain |
| `toExport` | Ready, not yet exported (includes exports in flight or failed, which cannot be told apart) | โŒ if any remain |
| `exported` | Exported, or marked exported by hand | โœ… |

The `payableType` breakdown isolates expense claims (`expenseClaim`) still to prepare.

## Check 2 โ€” List the expenses that block

```json
{
  "tool": "get_payables",
  "params": { "filters": { "operator": "and", "subfilters": [
    { "field": "payableDate", "operator": "between", "value": { "from": "2026-09-01T00:00:00.000Z", "to": "2026-09-30T23:59:59.999Z" } },
    { "field": "bookkeepingStatus", "operator": "=", "value": ["toPrepare", "toExport"] }
  ] } }
}
```

The field is called `bookkeepingStatus` (not `bookingStatus` or `status`). Page with `cursor` while `hasNextPage` is `true`. For the supplier's or employee's name, call `get_payable_by_id` on the rows you present.

## Check 3 โ€” Missing receipts

```json
{
  "tool": "get_payables",
  "params": { "filters": { "operator": "and", "subfilters": [
    { "field": "payableDate", "operator": "between", "value": { "from": "2026-09-01T00:00:00.000Z", "to": "2026-09-30T23:59:59.999Z" } },
    { "field": "documentaryEvidenceStatus", "operator": "=", "value": ["missing", "declaredAsInvalid"] }
  ] } }
}
```

This filter avoids querying attachments expense by expense. `provided` means a file is attached, not that the document is compliant.

## Check 4 โ€” Settlements not exported

```json
{
  "tool": "spendesk_analyze_settlements",
  "params": { "fromDate": "2026-09-01", "toDate": "2026-09-30", "filters": { "state": ["created", "failedToExport"] } }
}
```

Settlements feed the bank journal, independently of expenses. `summary.totalCount` gives their number. The total is **net and signed**: add `"groupBy": ["type"]` to separate payments from refunds. For the list, use `get_settlements` with the same `state`.

## Check 5 โ€” Overdue supplier invoices

```json
{ "tool": "spendesk_get_due_invoices", "params": { "includeLineItems": false } }
```

For information: a late payment does not block the close. The figure is as of **today** and for the current company; do not pass a past date as `asOfDate` for "overdues at month-end", it is not a historical aging.

## Report

```
Close of <month> (<exact dates>)

โœ…/โŒ  Expenses to prepare            N โ€” X EUR
โœ…/โŒ  Expenses ready, not exported   N โ€” X EUR
โœ…/โŒ  Missing receipts               N
โœ…/โŒ  Settlements not exported       N โ€” X EUR net
โ„น๏ธ     Overdue invoices (as of today) N โ€” X EUR

Conclusion: ready to export when the first four items are โœ….
```

## Limits to state

- A failed export and a pending one cannot be told apart: both stay in `toExport`.
- One company at a time: on a multi-entity connection, repeat the checklist per entity.
- The MCP cannot approve an expense, nor prepare it for you without the "Manage payables" write permission.

## Observed result (demo account, 5 October 2026)

Over 12 months: 25 expenses, 23 exported and 2 still to prepare (EUR 25,834.90), both from September. No missing receipt over the third quarter. 2 September settlements not exported, for EUR 10,613.50. 11 overdue invoices for EUR 19,095.67.

## Example prompts
- "Are we ready to close the month?"
- "Run the close checklist for September"
- "Show me what is blocking the month-end close"

How to install this skill

/
  1. 1
    Download the file s46-controller-cloture-checklist.md using the button above.
  2. 2
    Place the file in the .claude/ directory of your project (or ~/.claude/ for a global install).
    cp s46-controller-cloture-checklist.md .claude/s46-controller-cloture-checklist.md
  3. 3
    Use in Claude Code โ€” the skill is automatically discovered. Describe your need in natural language and Claude will apply the skill instructions.
๐Ÿ’ก Make sure the Spendesk MCP is configured in your .claude/settings.json with the tools spendesk_analyze_spend, get_payables, spendesk_analyze_settlements, spendesk_get_due_invoices.

Similar skills

โ˜… Top
95/100ยท๐Ÿ” Ad hocยทExpert

Audit what the MCP covers

Probes all available MCP tools, re-evaluates coverage of 50 persona use cases, detects new fields or tools, and regenerates the gap analysis report.

CFOControllerAP Manager
90/100ยท๐Ÿ“… WeeklyยทBeginner

Card requests via get_requests

Explains how to use get_requests for card requests and why expense reimbursements don't appear there. Avoids a frequent source of confusion between two distinct workflows.

ControllerFinance Analyst
90/100ยท๐Ÿ” Ad hocยทIntermediate

Active vs archived cost centers

Distinguishes active cost centers from archived ones with correct use of get_cost_centers. Avoids the counter-intuitive isArchived vs isActive naming convention pitfall.

ControllerFinance Analyst

Interested in AI Agent services or Custom Integrations?