GetBankCSV
GetBankCSV

Bank statement to Excel

One sheet per account, a balance check of its own, and the bad news on the first sheet.

The Excel export is a real .xlsx workbook, not a CSV with a different extension. Excel opens it directly, keeps numbers as numbers, and does not ask you anything about delimiters or encodings.

How the workbook is laid out

A sheet called “Read this first” — only when there is something to warn about. If any part of your PDF did not make it into the table, the first sheet you land on lists what and where. It is deliberately the first sheet rather than the last: you should see it before you start working, not after. If everything was read, this sheet is not there at all.

One sheet per account. A statement covering a checking and a savings account produces two sheets, named after the accounts. The top of each sheet carries the account-level facts once — label, type, account number as printed, currency, opening and closing balance — and then the transactions below, one row each.

This is the opposite of the CSV export, which puts every account into a single table and tells them apart with an account column. Neither is a default we fell into: Excel has sheets and people use them, a CSV has no such concept, so each format follows what its own tools do well.

A sheet called “Balance check”, last. For every account: what the closing balance works out to when you apply the statement’s own arithmetic to the rows we read, what the statement actually printed, the difference, and the formula used. If those two numbers disagree, this sheet is where you find out.

The transaction columns

Date, value date, description, amount, running balance, principal, interest, and the page of the original PDF each row came from. The account-level columns that CSV repeats on every row — account, type, number, currency — are not repeated here; they are at the top of the sheet instead.

Amounts are signed: money out is negative, money in is positive. If your bank prints debit and credit in two columns, they are merged into one.

Empty cells are empty on purpose

A cell we could not read is left genuinely blank. Not 0, not -, not N/A.

The reason is that in Excel a zero is indistinguishable from a real zero once it is in the grid, and SUM will happily add it. “Nothing was printed here” and “the printed value was zero” are different facts, and only one of them is safe to compute with. If a blank cell breaks a formula you wrote, that is the formula telling you something true about the statement.

The same applies to the running balance column, which is often blank for the whole sheet: plenty of statements simply do not print a per-line balance, and we will not compute one and pass it off as printed. See the CSV page for why that matters.

Where the sheet names come from, and why there are no formulas

Each account sheet is named after the account label printed on your statement, falling back to the masked account number, and then to Account 1, Account 2 if the statement labels nothing. Excel caps a sheet name at 31 characters and forbids the characters [ ] : * ? / \\, so those are replaced with spaces and the name is trimmed; two accounts that end up with the same name get a (2) suffix rather than one quietly overwriting the other.

Nothing in the workbook is a live formula. Every cell is a value, including the balance-check sheet, which prints the arithmetic it used as text rather than as a working formula. That is on purpose: a workbook full of formulas recalculates when someone edits a cell, and the numbers you are checking against your statement would then be the spreadsheet’s numbers rather than ours. If you want to recompute a total yourself, write your own formula next to ours — then the two can disagree visibly, which is the whole point of having a check.

Importing it elsewhere

If your accounting software wants a bank file rather than a spreadsheet, use QBO for QuickBooks, OFX for anything that supports the open standard, or QIF for Quicken and older tools. The same conversion produces all five formats — you do not pay again to switch.