CSV and spreadsheet statement converter

Real exports are messy. This is what Karchu does about delimiters, encodings, header noise and multi sheet workbooks.

A CSV should be the easy case. In practice bank and accounting exports are where most import tools fall over, because almost nothing about the format is standard: the separator is not always a comma, the encoding is not always UTF-8, the first row is not always the header, and the last row is often a total pretending to be a transaction. Karchu handles all of that before it ever tries to read a number.

What Karchu works out for itself

ProblemHow it is handled
DelimiterComma, semicolon, tab or pipe, detected from the file rather than assumed
EncodingUTF-8, UTF-16 and common Windows code pages, with byte order marks stripped
Quoted fieldsQuotes containing the delimiter, and quoted fields that wrap across newlines
Preamble rowsBank name, account details, period and blank rows above the real header are skipped
Footer rowsTotals, closing balances, footnotes and page markers are trimmed
Column vocabularyDate, value date, description, narration, particulars, withdrawal, deposit, debit, credit, amount, balance and their equivalents in several languages
Amount stylesSeparate debit and credit columns, one signed column, Dr and Cr suffixes, brackets for negatives
Number formatsLakh and crore grouping, European decimal commas, thousands separated by spaces
Missing balanceInferred where the data supports it, and labelled as derived
Multi sheet workbooksEach transaction sheet becomes its own document

Spreadsheets: XLS, XLSX and ODS

Spreadsheet exports go through the same column matching as delimited files, with two differences. Sheets are examined individually, so a workbook holding a separate sheet per account or per month produces a document per sheet. And a password protected workbook cannot be opened in the browser, so Karchu asks for an unprotected copy rather than failing quietly. Protected PDFs are different: those can be unlocked with a password, as the locked statement page explains.

Preparing an export that imports cleanly

  1. Export the full period rather than a filtered view, so the balance can be checked end to end.
  2. Leave the header row in place, even if it looks redundant.
  3. Do not delete rows in the middle to tidy the file, since gaps break the running balance check.
  4. Avoid re saving through a tool that reformats dates into a locale you did not intend.
  5. If you have overlapping exports, upload them anyway. Duplicates are detected rather than silently merged.

When CSV is not the right input

If your bank only offers a PDF, use the PDF statement converter instead of copying and pasting into a spreadsheet, which loses column boundaries. If you need a file your accounting software can import, look at the CSV to QBO converter.

Related pages

Frequently asked questions

Which spreadsheet and text formats are supported?
CSV, TSV, TXT, XLS, XLSX and ODS. Delimited files can use commas, semicolons, tabs or pipes, and Karchu works out which one the file uses rather than assuming a comma.
My export opens as gibberish in Excel. Will it still work?
Usually yes. Garbled characters normally mean the file is UTF-16 or a Windows code page rather than UTF-8. Karchu detects the encoding and strips byte order marks, so accented names and currency symbols survive.
My file has a title and blank rows before the real headers.
That is handled. Karchu scans down for the row that actually looks like a header, and trims totals, footnotes and page markers below the data so a total line is never counted as a transaction.
What if there is no balance column?
Karchu infers a running balance when the file gives it enough to do so, and labels the result as derived. When coverage is incomplete it leaves the balance empty rather than inventing one.
Can one workbook contain several accounts?
Yes. Each sheet that looks like a transaction table is processed as its own document, so a workbook with one sheet per account produces one document per account.
Why does it say no date or amount column was found?
The file has no column Karchu can read as a date, or none it can read as an amount. The message names the columns it did find, which usually shows the export dropped a header row or split the amount across columns it could not pair up.