Early access. Product screens use synthetic demo data; accounts and bank imports are not open yet. What is live today

Live

Check your bank export before importing it

Choose or paste a bank statement CSV to see its delimiter, decimal separator, date format, header problems and cells that could run as spreadsheet formulas. You can then convert it to the DIGITAL EUR import format. The file is read in your browser and never uploaded.

Your file is read by your browser and never uploaded. Nothing is stored. Tip: remove account balances and anything you do not need before sharing a CSV with anyone.

Short answer

This bank statement CSV validator reads your bank export in the browser and reports what usually breaks an import: the delimiter (comma, semicolon or tab), decimal comma or dot, date format, a UTF-8 byte order mark, duplicate or empty column names, rows with the wrong number of columns and cells that a spreadsheet could run as formulas. It can then convert the file into the DIGITAL EUR import format.

What does this bank statement CSV validator check?

Check What the validator looks for Why it matters
Delimiter Which of comma, semicolon and tab gives a consistent table Many European banks export with semicolons; most importers expect commas
Decimal separator 1.250,00 (decimal comma) vs 1,250.00 (decimal dot) in amount columns A decimal comma read as a thousands separator turns €12,50 into €1,250
Date format ISO 2026-10-01, 01.10.2026, 01/10/2026, 20261001 and others 03/04/2026 can be 3 April or 4 March; the validator says when no value proves which
Byte order mark An invisible U+FEFF character at the start of the file Some tools then see the first column as Date instead of Date
Header problems Empty or duplicate column names Importers cannot tell two "Amount" columns apart
Row structure Rows with more or fewer columns than the header Usually a separator inside an unquoted description
Formula cells Cells starting with =, +, -, @, tab or line breaks Opening the file in a spreadsheet could run them as formulas
DIGITAL EUR import Required columns, and a test run of the real import code Tells you whether the file will load as it is

The last check is not a description of the import; it is the import. The validator calls the same loadTransactions function that the reconciliation demo uses and reports its first error message.

How to use it

  1. Choose your CSV file or paste the text. Use the export your bank calls "CSV" or "Excel/CSV"; PDF statements cannot be checked.
  2. Select Check CSV. The report lists errors, things to check, notes and passed checks, followed by a table of what each column looks like.
  3. If the file is not ready for import, review the column mapping under Convert to DIGITAL EUR format. The validator guesses common English and German column names such as Amount, Betrag, Description and Verwendungszweck; correct any wrong guesses.
  4. Confirm the decimal separator and the default currency, then download the converted file.

Your file is read with the browser's File API. It is not uploaded, and nothing is stored. Even so, remove columns you do not need, such as running balances, before sharing a statement with anyone.

What a well-formed bank statement CSV looks like

There is no single official CSV format for bank statements. The closest thing to a standard for the file structure is RFC 4180, an informational document from 2005:

  • each record is on its own line, ending with a line break (CRLF in the RFC);
  • the first line may be a header with column names;
  • fields are separated by commas, and every line should have the same number of fields;
  • fields containing commas, quotes or line breaks are wrapped in double quotes, and a quote inside a field is written twice ("").

The DIGITAL EUR transactions import follows those rules and adds its own:

Column Required Format
transaction_id Yes Unique per row
currency Yes Three letters, e.g. EUR
amount Yes Non-negative, dot as decimal separator, at most two decimals: 1250.00
remittance Yes The payment reference text; may be empty
direction Yes CRDT for money in, DBIT for money out
counterparty_name No Payer or payee name
counterparty_iban No Payer or payee IBAN

The demo accepts up to 2,000,000 bytes and 20,000 data rows per file. Line endings can be CRLF, LF or CR; a leading byte order mark is removed; blank lines are skipped.

Semicolons and decimal commas: why European bank exports differ

In much of continental Europe the comma is the decimal separator: one thousand two hundred and fifty euro is written 1.250,00. A comma-separated file would then split every amount in two, so many banks and spreadsheet programs use a semicolon as the field separator instead. Microsoft's documentation says Excel saves CSV files with a comma by default, and that the list separator can be changed in the Windows Region settings (Customize Format → Numbers → List separator); that change applies to every program on the computer.

The validator decides the decimal style column by column. A value like 12,50 can only be a decimal comma; 1,250.00 can only be a decimal dot; 1250 could be either, in which case the file's other amounts or the delimiter decide. The converter removes thousands separators and writes amounts with a dot.

Signed amounts are another difference. Some banks export one Amount column with negative numbers for money out; others use separate Credit and Debit columns, or a column with C/D, CR/DR or S/H. The converter handles all three: negative amounts and debit columns become DBIT with a positive amount, as the DIGITAL EUR format requires.

Formula cells: why =, +, - and @ are flagged

A bank statement contains text written by other people: payer names and payment references. If such a cell starts with =, +, - or @, a spreadsheet may treat it as a formula when you open the CSV. OWASP describes this as CSV injection and lists those characters, plus tab and line breaks (and their full-width forms), as triggers.

The validator flags these cells but does not treat a plain negative number such as -15,90 as a risk, because that is a normal amount. It does flag -2+3, +49 30 1234 or =HYPERLINK(…).

The converter neutralises flagged text cells by adding a leading apostrophe, which is also how the DIGITAL EUR demo writes its own exports. Two notes: the apostrophe becomes part of the value, and OWASP warns that quote-based protections can be undone if a spreadsheet re-saves the file. The safest habit is not to open untrusted CSV files in a spreadsheet at all, or to import them as text.

Why bank CSV imports fail: common errors

  1. Everything ends up in one column. The importer expects commas but the file uses semicolons or tabs.
  2. Amounts are a hundred times too large or rejected. A decimal comma was read as a thousands separator, or an amount has three decimals.
  3. Wrong dates. Day and month swapped because the file uses DD/MM/YYYY and the importer assumes MM/DD/YYYY. Ask your bank for ISO dates (YYYY-MM-DD) if it offers them.
  4. "Column not found" for the first column. A byte order mark is glued to the first column name.
  5. Row has too many columns. A description containing the separator was not wrapped in quotes.
  6. Duplicate headers. Two columns called Amount (for example, original and booked currency).
  7. Summary lines. Opening balances, totals or a bank's disclaimer text at the top or bottom of the file. Delete them before importing.
  8. Edited in a spreadsheet and saved again. The program may change the separator, date format and number format. Keep the original export.

Different programs have different requirements. QuickBooks Online, for example, documents a three-column (Date, Description, Amount) and a four-column (Date, Description, Credit, Debit) layout and asks for one consistent date format. Check the requirements of the software you import into; this validator only knows the DIGITAL EUR format exactly.

Converting your export to the DIGITAL EUR format

The converter writes a comma-separated file with the seven DIGITAL EUR columns. Where information is missing, it fills it in and tells you:

  • no transaction ID column → IDs are generated from the line number (row-2, row-3, …); duplicate IDs get a line suffix;
  • no currency column → the default currency you choose;
  • no direction column → the sign of the amount, or the credit/debit column, decides.

Rows that cannot be converted (no amount, more than two decimals, wrong number of columns) are skipped and listed. Dates are not part of the DIGITAL EUR demo format and are not copied. After downloading, load the file into the demo together with an invoice file; the reconciliation product page explains how suggestions are scored, and the SEPA reconciliation guide covers the overall process. Clean payment references make the biggest difference; you can test them with the SEPA transfer reference checker.

CSV or camt.053?

Many banks also offer camt.053, the ISO 20022 XML end-of-day account statement that replaces the older MT940 format. It has fixed, documented fields, so it avoids most of the problems above. The DIGITAL EUR demo imports CSV only; a bank statement import for camt.053 is PLANNED, not available today.

What this validator does not do

  • It does not read PDF or Excel files, MT940 or camt.053.
  • It cannot know your bank's export settings; when dates are ambiguous it says so instead of guessing.
  • It does not check balances, totals or whether all transactions of a period are present.
  • It does not validate IBANs in the file; use the IBAN format checker for single IBANs.

Frequently asked questions

Why does my bank CSV fail to import?

Most often because of the separator (semicolon instead of comma), the decimal comma, the date order or extra summary lines. The validator's report names the problem it finds first; the converter fixes the separator and decimal issues.

Why does Excel put everything in the first column?

Usually because the file's separator is not the one Excel expects, so all fields land in column A. Use Excel's text import function to choose the separator, or convert the file.

Which date format should I use?

ISO 8601 (YYYY-MM-DD) is unambiguous and sorts correctly. If your bank cannot export it, at least use one format consistently and know whether it is day-first or month-first.

Should money out be a negative amount or a separate debit column?

Either works if your importer expects it. The DIGITAL EUR format uses a positive amount plus a direction (CRDT or DBIT); the converter handles both input styles.

What is CSV injection?

It is when text in a CSV cell starts with a character such as = and a spreadsheet runs it as a formula. Payment references come from other people, so treat bank CSV files as untrusted input.

Is my file uploaded?

No. The file is read and analysed in your browser, and the converted file is created there too. Nothing is sent to a server.

Can I check a PDF bank statement?

No. Ask your bank for a CSV or camt.053 export; converting PDFs to CSV involves text recognition that this tool does not do.

Sources