Skip to content
Built for import wizards · semicolon or comma

Convert a Bank Statement to CSV

Get a statement's transactions into a CSV your accounting software will accept — correct delimiter, quoted descriptions, UTF-8 encoding, and a numeric amount column that does not arrive as text. Converted locally, never uploaded.

Mapping the output to your ledger

Accounting software is fussy about column order, and every package wants it differently. The converter gives you one row per transaction with the fields the statement printed; the mapping below is what to select in each import wizard.

SoftwareDateDescription / PayeeAmountNotes
QuickBooks Online Date column Description → Description Amount (single signed column) If the statement splits debit and credit, map Credit to "Amount in" and Debit to "Amount out".
Xero Date Payee, then Description Amount Xero wants a positive amount with a separate Type column; easiest is to import and set Type by sign after.
FreeAgent Dated on Description Amount Uses a decimal point; use comma delimiter.
Wave Date Description Amount Rejects files without a header row — this export includes one.
GnuCash / Ledger Date Description Amount Tab delimiter avoids quoting issues in descriptions.

Before you import: three checks worth thirty seconds

  1. Open the CSV in a plain editor first

    Notepad, VS Code, anything that does not reformat. You should see one header line and one line per transaction. If you see a wall of semicolons or the whole file on one line, the delimiter is wrong for your tool — re-export.

  2. Confirm the amount column has no currency symbols

    Import wizards reject £96.30 but accept 96.3. Currency symbols and ISO codes are stripped from values during conversion, so this should already be clean.

  3. Note the opening balance

    Most importers ask for a starting balance to reconcile against. The first row of a statement is usually the opening balance if the bank prints one; otherwise take the balance column of the row before your first imported transaction.

Duplicate imports are the classic mistake. If you import the same CSV twice, most tools create duplicates silently. Export the statement period you actually need, and let your software's bank-feed matching tell you what is already there.

Why CSV rather than XLSX here

Import wizards generally parse CSV only. They also expect the file to be plain: no merged cells, no formulas, no hidden sheets, no number formats that survive only in Excel's imagination. A CSV carries exactly the characters you see, which is precisely what a parser wants. If you also want a version to read, convert once more as Excel — the same table is one click away.

FAQ

My software says the file has no valid date column. Why?

Usually because the statement prints dates without a year (02 Sep). Importers want a real date. Add the year in the spreadsheet before importing, or use a formula to build one from the statement period. This is a deliberate limit of the converter: it will not invent a year it cannot see.

Should I use semicolon instead of comma?

If your locale uses a comma as the decimal separator (Germany, France, Spain, Brazil, much of Eastern Europe), yes. Otherwise comma. If unsure, try comma first and check that the preview inside the import wizard shows separate columns.

Does the file include a header row?

Yes — the column names from the statement. Import wizards expect them, and they are what you map fields against.

Can I convert a statement with more than one account?

Yes, but the rows will run together. Convert each account section separately, or add an account column yourself after importing. The converter does not detect account boundaries.

Convert a statement to CSV