Fix the date and decimal format of a bank CSV
Many European banks export CSV files with semicolons between columns, a comma as the decimal separator and the day before the month. Software that expects commas, decimal points and year-month-day dates either rejects such a file or reads wrong values from it. Choose the file below: the page converts it in your browser, shows the first 20 cleaned rows and lists every line it left out, with the reason.
Convert your bank CSV
The cleaner detects the delimiter (comma, semicolon or tab), looks for a header row with a date column and an amount column, and writes eight fixed columns, comma-delimited: date, description, amount, currency, fee, net, reference and source. It recognises common header names in English, Spanish, German and French, such as Date, Fecha, Buchungstag, Amount, Importe, Betrag and Montant.
Your file is read in your browser and is never uploaded, stored or logged. It is held in the memory of this tab only, and closing or reloading the page discards it. Operator: Augeo. See the privacy notice.
Banks do not share one layout, and this page makes no promise about your bank's: the free preview shows what it does to your file. If the header names are not recognised, the page says so and outputs nothing.
The cleaning logic is checked by an automated test script that runs the engine file of this site over six synthetic sample files and a set of checks of the parsing rules; it ran in a sandbox before this site was published and finished with no failed check. The script does not open this page in a browser, does not test the licence key step, and nothing was tested against a real export from any provider. Use the free preview to check your own file.
Report
Warnings
Lines not parsed
Lines dropped
Preview of the cleaned rows
| line | date | description | amount | currency | fee | net | reference | source |
|---|
Download the full cleaned file
- Price: 6 USD, paid once on Gumroad. No subscription. You receive a licence key.
- What the key unlocks: the download of every cleaned row of the file you chose, as one CSV named after your file with -cleaned.csv at the end, instead of the first 20 rows on screen. The report and the way files are read stay the same.
- The key is for one buyer. Runs are not counted and no number of runs is promised. The key is kept in the memory of this page only, so you enter it again after closing or reloading the page.
- Refunds are requested through your Gumroad receipt and follow Gumroad's refund policy.
- Try the free preview first. If the preview cannot read your file, the full download cannot either.
Get a licence key on Gumroad for 6 USD
What the cleaner changes in a bank export
- Semicolons become commas. The output is comma-delimited. A description that contains a comma or a semicolon (
Alquiler local; marzo 2024) stays in one field and is quoted where the output needs it. - Decimal commas become decimal points.
-89,90becomes-89.90. The report states which decimal separator the cleaner read the file with. - A thousands dot is not mistaken for a decimal point. In a file whose other amounts use a decimal comma,
-1.000is written as-1000.00. A spreadsheet set to decimal points reads the same cell as minus one, with no warning. When no amount in the file shows which separator is the decimal one, the report carries a warning instead of staying silent. - Day-first dates become year-month-day.
13/03/2024becomes2024-03-13. A date whose day is 12 or below is valid both ways, so the cleaner takes the order from a day above 12 somewhere in the file; when there is none, the page stops and asks you instead of guessing. - Exact repeated rows are dropped and listed with their line numbers. Two identical rows can be two real payments, so look at that list.
- Amounts that are words are left out and listed. A cell such as
pendienteis not turned into zero; the row appears under "Lines not parsed" with the reason. - Closing balance lines are dropped and listed. A line after the last transaction that carries no date is treated as a footer, not as a transaction.
A bank export has no fee column, so fee stays empty and net equals the amount. The running balance column is not carried over. Amounts are never converted between currencies.
How to do the same by hand in a spreadsheet
These steps work in Excel, Google Sheets and LibreOffice Calc. The idea is to tell the spreadsheet which conventions the file uses when it comes in, and which ones you want when it goes out.
- Work on a copy, and look at the file in a text editor first. Note the delimiter, find one amount above a thousand to see which sign is the decimal one, and find one date with a day above 12. If no date has a day above 12, the file alone cannot tell you the order; compare one transaction with your bank's website or a paper statement.
- Import with the file's own conventions. In LibreOffice Calc tick Semicolon only under Separator options, set Language to a decimal-comma language and set the date column to Date (DMY). In Google Sheets set File, Settings, Locale to the country of the bank before File, Import. In Excel use Data, From Text/CSV, set Delimiter to Semicolon, then Transform Data and Change Type, Using Locale for the date and amount columns.
- Look at three cells before going further: an amount above a thousand, an amount written with a thousands dot and no decimals, and a date with a day above 12.
=ISNUMBER(C2)filled down shows which amounts are real numbers. - Set aside amounts that are not numbers, remove the closing balance line after writing its balance down, and look at repeated rows before removing them. Two equal payments on one day show two different running balances, and both should stay.
- Set the output formats: the custom number format
yyyy-mm-ddfor the date column and0.00for the amount column, with no thousands separator. - Compare with the balance. The sum of your amount column should equal the closing balance minus the opening balance.
- Export with decimal points. This is where the comma tends to come back: switch the locale to United States in Google Sheets, set the language of the amount column to English (USA) in LibreOffice Calc, or untick Use system separators in Excel's advanced options before saving as CSV UTF-8. Then open the saved file in a text editor and read one line.
A route that does not depend on locale settings
Import every column as text and rebuild the two formats as text, with the date in column A and the amount in column C:
- Date:
=RIGHT(A2,4)&"-"&MID(A2,4,2)&"-"&LEFT(A2,2)turns13/03/2024into2024-03-13. - Amount:
=SUBSTITUTE(SUBSTITUTE(C2,".",""),",",".")removes the thousands dots first and then turns the decimal comma into a point, so-89,90becomes-89.90and a thousands dot before the comma disappears.
The order of the two replacements matters: swapping the comma first would leave two dots in the number. If your spreadsheet uses a decimal comma, write the formulas with semicolons between arguments instead of commas.
Notices
- Privacy: files are read in your browser and never uploaded, stored or logged. Operator: Augeo.
- Independent tool, not affiliated with or endorsed by Etsy, PayPal, QuickBooks or any bank.
- Check the output before you use it. This is not accounting, tax or financial advice.
- Price of the full download: 6 USD one-time. The key is for one buyer. Refunds are requested through the Gumroad receipt.
- Only upload data you have the right to process. Choosing a file here does not send it anywhere, but you remain responsible for the data in it.
Other exports
- Merge debit and credit columns into one amount
- Clean a PayPal activity CSV
- Clean an Etsy sold orders CSV
- Clean an Etsy monthly statement CSV
- Remove the lines above the header of a CSV
- Convert a semicolon CSV to a comma CSV
- Convert CSV dates to YYYY-MM-DD
- Remove duplicate rows from a CSV export
- Negative amounts in parentheses in a CSV
- Any other CSV export of transactions