One bank or card export becomes a QuickBooks Online OFX and 3-column CSV, a Xero precoded statement (account code and tax rate) plus a plain Xero statement, a categorised review sheet, a bank-rules list, and a report of balance breaks, duplicates and what is still uncoded.
Who it is for: Freelance bookkeeper or small business owner who downloads bank and card CSVs every month and codes them in QuickBooks Online or Xero.
Format: Claude skill pack · Version: 1.1.0 · Tested on: Python 3.13.5 (standard library only)
What it does
The export's columns are found by header (date, description or memo, amount or debit/credit, balance, reference), in US, UK and Indian layouts. Dates are read as month/day or day/month from the file itself, or by region when it cannot tell. Payee names are cleaned of card-processor prefixes, store numbers, phone numbers and web addresses. Rows exported twice (same date, text, amount and balance) are removed; identical rows without a balance column are kept and listed. Your rules run top to bottom, first match wins, with optional direction and amount range. A month you already coded teaches rules for payees coded the same way at least twice (80% agreement); payees coded more than one way are listed, not guessed. Xero precoded lines need both an account code and a tax rate, and payments that look like they settle an invoice or bill are held out so you can match them instead.
What you need
- Claude.ai with code execution switched on (or Claude Code, or just Python 3.10+)
- A CSV, TSV or XLSX export from online banking
- Your chart of accounts codes and tax rate names (for Xero precoding)
- For the included extra: pandas and openpyxl (Claude.ai has them)
5-minute setup
- Claude.ai: open Settings → Capabilities → Skills, click Upload skill and pick
claude-ai-upload/bank-csv-categoriser-pro.zip. - Claude Code: copy the folder
skills/bank-csv-categoriser-prointo~/.claude/skills/. - Start a new chat. Attach your file and say: "Use bank-csv-categoriser-pro. Categorise this October checking export with my rules and last month's coding, and give me files for Xero".
- Claude runs the script and gives you the files listed under Outputs. Check them before you act on them.
Try it with the sample
Run the sample (a fictional US small-business checking export for October 2026):
python3 skills/bank-csv-categoriser-pro/scripts/core.py --statement samples/checking-export-oct-2026.csv --rules samples/rules.csv --history samples/history-sep-2026.csv --out out
You should see 18 transactions after 1 duplicate is removed, 0 balance breaks, 13 categorised by rules, 3 learned from September, 2 left uncategorised, 11 lines in the Xero precoded file and 1 customer payment held back to match to its invoice. In Claude, attach your export and rules and use the prompt above.
Settings you can change
| Option | Default | What it is |
|---|---|---|
--statement |
(required) |
Bank or card export: CSV, TSV or XLSX with date, description and amount (or debit/credit) columns |
--rules |
(optional) |
Rules CSV: match (text, or re: pattern), category, account_code, tax_rate, payee, direction (in/out/any), min_amount, max_amount, precode (yes/no) |
--history |
(optional) |
A file you already categorised (description plus category and/or account code); payees coded the same way at least twice become rules |
--region |
US |
US reads ambiguous dates as month/day; any other region as day/month |
--date-order |
auto |
Force mdy or dmy for the input file |
--qbo-date / --xero-date |
(by region) |
Date format written to the QuickBooks CSV / Xero files |
--account-type |
checking |
checking, savings or creditcard (sets the OFX statement type) |
--account-id |
0000 |
Last digits of the account, written to the OFX file |
--currency |
USD |
Currency written to the OFX file |
--flip |
(off) |
Swap money in and out for card exports that show charges as positive |
--precode-learned |
(off) |
Also put learned categories in the Xero precoded file |
--out |
out |
Output folder |
What goes in and what comes out
Inputs: Bank or card export (CSV, TSV or XLSX) with date, description and amount or debit/credit columns; Your rules CSV: text or re: pattern, category, account code, tax rate, payee, direction, amount range; Optional: a month you already categorised, to learn rules from
Outputs: quickbooks.ofx and quickbooks-3col.csv for QuickBooks Online upload; xero-precoded.csv (Account Code and Tax Rate) and xero-statement.csv for Xero; categorised.csv review sheet with where each category came from; bank-rules.csv to enter as bank rules; report.md with breaks, duplicates and suggestions
AI disclosure and limits
This product does not call an AI model at run time. It was built by Oarsman AI's AI agents and checked by the automated tests shipped with it.
Limits: - QuickBooks Online upload only (OFX or CSV); not a QuickBooks Desktop .qbo Web Connect file. - QuickBooks upload files carry payee and memo, not categories: categories reach QuickBooks through the bank rules you enter from bank-rules.csv. - Xero precoded lines need account codes and tax rate names that exist in your organisation; nothing checks your chart of accounts. - One account per run; up to 20,000 lines. - Does not read PDF statements, connect to banks, or split one line across accounts. - Bookkeeping preparation, not tax or accounting advice.
Not tested by us: - an actual upload into a live QuickBooks Online or Xero company (OFX checked with two OFX parsers, CSVs against the published columns) - XLSX input in the shipped tests (CSV only) - every bank's export layout
Included extra: month-end finance skills (clean, reconcile, variance, month-end pack)
From version 1.1.0 this product also includes the four skills that were sold as the Finance Analyst pack, in the finance-analyst/ folder. They are separate from the main skill above and need pandas and openpyxl (Claude.ai already has them; matplotlib is optional, for charts). The in-browser "Use it here" runner on the product page covers the main skill only, not this extra.
| Skill | What it does |
|---|---|
messy-sheet-cleaner |
Cleans bank, card, gateway and accounting exports: title and total rows, bracket negatives, Indian, US and European number and date formats. Writes a change log and a control-total check. |
ledger-reconciler |
Matches a bank statement against your books and lists matched and open items with a proof line. |
budget-variance-analyst |
Budget against actuals by line and month, a chart, and draft variance commentary. |
month-end-finance-pack |
Cash-basis P&L, cash flow, KPIs and tie-outs from a transaction list and a chart of accounts. |
Set up: Claude.ai: upload each zip in finance-analyst/claude-ai-uploads/ under Settings → Capabilities → Skills. Claude Code: copy finance-analyst/skills/* into ~/.claude/skills/. Then ask, for example: "Use the ledger-reconciler skill to reconcile this bank statement with my books for September."
Try it with the samples: finance-analyst/samples/ holds sample files; finance-analyst/README.md has the full guide and finance-analyst/TROUBLESHOOTING.md the fixes.
Tests: python finance-analyst/tests/run_tests.py (29 checks, needs pandas). python tests/run_all.py runs the main tests and this extra together.
What this adds beyond Anthropic's free Finance plugin
Anthropic publishes a free Finance plugin for Claude (knowledge-work-plugins on GitHub). Checked on 1 Nov 2026, it contains instruction-only skills (journal entries, reconciliation, financial statements, variance analysis, close management, audit support, SOX testing) and connector settings; it ships no scripts, sample files or tests. It covers journal entries, audit support and SOX testing, which this extra does not. If you only need Claude to follow a finance method, that plugin may be enough.
What this extra adds:
- Bundled Python scripts do the arithmetic (sums, matching, variances, tie-outs), so the numbers come from code and give the same answer when you rerun them, instead of the model adding up.
- A cleaner for messy exports (title rows, total rows, bracket negatives, Indian, US and European number and date formats) with a change log and a control-total check.
- Sample files and a 29-check test suite you can rerun (python finance-analyst/tests/run_tests.py), with our outputs kept in finance-analyst/expected/.
- Excel and chart outputs (reconciliation.xlsx, variance.xlsx, finance_pack.xlsx, PNG charts).
It is not accounting, tax or audit advice, and Claude's written commentary can be wrong: check it before it goes to a client, a bank or a board.
Files
- oarsman-bank-csv-categoriser-pro-v1.1.0.zip
- CHANGELOG.md
- QA-REPORT.json
- README.md
- SPEC.md
- SUPPORT.md
- TROUBLESHOOTING.md
- VERSION
- VIDEO-SCRIPT.md
- claude-ai-upload
- diagram.mmd
- diagram.png
- preview.png
- samples
- skills
- tests
- finance-analyst/ (included extra)
Help
Self-serve: see TROUBLESHOOTING.md (fixes and FAQ). There is no call, chat or email support. Fixes ship as new versions at your download link. Refund: 14 days, works as described, through the checkout platform.