Skip to main content
Tools

Free browser tool

CSV to Beancount converter

Paste a bank export and get balanced double-entry transactions, ready to drop into your ledger. Column mapping is detected for you and stays editable.

Everything runs in your browser. Your statement is never uploaded anywhere.

Saved mappings

Profiles live only in this browser. Your transactions never leave it.

No saved mappings yet. Paste a CSV, set the columns, then save the setup here to reuse it later.

Beancount output

Your transactions will appear here as soon as you paste a CSV.

Already know your bank or app?

These exports are already mapped — pick yours and skip the setup.

Questions about this tool

Is my bank data uploaded anywhere?

No. The conversion runs entirely in your browser using JavaScript on this page — your CSV is never sent to beancount.io or anyone else, and nothing is stored. You can confirm it by opening your browser's network tab, or by disconnecting from the internet and converting anyway: it still works.

Which CSV formats does it understand?

Comma, semicolon, tab and pipe separated files, with or without a header row. It reads quoted fields containing commas or line breaks, US and European number formats (1,234.56 and 1.234,56), parenthesised and trailing-minus negatives, and dates written as ISO, day-first, month-first or 'Aug 9, 2026'. Both a single signed amount column and separate debit and credit columns work.

What are the two accounts for?

Double-entry means every transaction moves money between two accounts, so the two sides always cancel out. The first is the account the statement belongs to — your chequing account or credit card. The second is where the money went; leaving it as Expenses:Uncategorized is normal, and you categorise from there once the transactions are in your ledger.

How do I check the export against my statement balances?

Turn on statement reconciliation in the converter and enter the statement start/end dates plus the signed opening and closing balances for one currency. Credit-card balances you owe are usually negative. Only the rows you keep (after overlap review) count toward the movement; skipped or excluded rows do not. Complete mode can write an opening transaction; append mode never does. A match adds a closing balance assertion — then run bea check (or bean-check) on the download to confirm, and inspect any mismatch with bea balances / bean-report before treating the import as settled.

Can I stop doing this by hand every month?

Yes — that is what Beancount.io's Smart Import and Bank Sync are for. They connect to supported institutions, categorise transactions automatically and write them into a ledger you still own as plain text. This tool exists for one-off imports, for banks nobody supports, and for the healthy habit of checking what an importer actually produces.

Keep the ledger. Skip the copy-and-paste.

Beancount.io syncs your accounts, categorises the transactions and keeps every one of them in plain-text files you can download and keep forever.