| name | close-month |
| description | Closes the month โ reconciles Exact Online vs payment processors, flags gaps, writes P&L narrative, exports close packet. Accepts optional month and save-to arguments. |
| allowed-tools | Read, WebFetch, Bash |
Run the month-end close workflow. Reconcile, flag gaps, narrate the P&L, and export the close packet for the owner's records (and their accountant).
Parse arguments:
--month (default: previous calendar month) โ YYYY-MM format
--save-to (default files) โ files (Google Drive / OneDrive), desktop (local), or both
Step 1 โ Reconcile
Trigger the month-end-prep skill workflow:
- Pull all Exact Online transactions for the target month (EUR).
- Pull settlements from each connected payment processor (Mollie, PayPal, SumUp) for the same month.
- Match Exact Online entries to processor settlements by amount + date (ยฑ2 days).
- Surface three gap categories:
- Unmatched processor settlements โ money came in via Mollie/PayPal/SumUp but never landed in Exact Online
- Unmatched Exact Online deposits โ Exact shows income with no processor record (SEPA transfer? direct payment? misclassified?)
- Variance lines โ matched but amount differs (fees, refunds split)
Step 2 โ Flag suspicious entries
Surface in the same report:
- Uncategorized transactions โ Exact Online entries with no ledger category
- Suspicious duplicates โ same amount, same vendor, within 3 days
- Missing receipts โ Exact Online entries above โฌ75 with no attachment
- VAT anomalies โ transactions with unexpected or missing VAT codes
For each, recommend an action. Wait for owner to triage flagged items before generating the narrative. Do not auto-categorize or auto-delete.
Step 3 โ P&L narrative
After triage, generate a plain-English P&L narrative:
{Month YYYY} closed at โฌ{revenue} revenue ({+/-}{X}% vs prior month).
Top driver: {category/customer}. Biggest swing: {category} {direction} โฌ{amount}
because {reason inferred from transactions}.
Margin: {X}% ({+/-}Y pts vs prior). {Cost-side commentary}.
VAT position: โฌ{net VAT payable/reclaimable} for the month.
Three notable items:
1. ...
2. ...
3. ...
Numbers come from Exact Online; the why comes from cross-referencing top transactions, vendor names, and prior-month deltas.
Step 4 โ Export the close packet
Generate two files:
close-packet-{YYYY-MM}.xlsx โ multi-tab workbook:
Reconciliation โ Exact Online โ processor match table with gap rows highlighted
Flagged โ uncategorized / duplicates / missing receipts / VAT anomalies
P&L โ formatted income statement in EUR with prior-month delta column
VAT โ VAT summary: output tax, input tax, net position
close-packet-{YYYY-MM}.pdf โ one-page summary: P&L narrative + top-line numbers + gap count
Save both to the chosen --save-to location. Filename format: close-packet-2026-04.xlsx etc.
Connector failures
If Exact Online is unreachable, stop โ reconciliation requires Exact Online as the source of truth. If a payment processor (Mollie, PayPal, SumUp) is unreachable, run reconciliation against the available processors and note which is missing. If all processors are missing, run Exact Online-only analysis and flag it.
Approval gates
- Never auto-fix flagged items. Always show the gap, recommend an action, wait for the owner.
- Never delete duplicates without explicit confirmation. Show both records side-by-side.
- Saving the packet is auto โ it goes to the owner's own drive.
Output
End the run with a one-paragraph recap: revenue in EUR, margin, gap count remaining (if any), file paths to the saved packet.