A bank or credit card statement converts cleanly to CSV when each transaction is one row with a date, a description and a single signed amount, money out negative. For a bank account, the rows are complete when the opening balance plus the sum of the amounts equals the closing balance printed on the statement. This repo sets out those column layouts, with fictional sample files that tie.
| Folder | What it is | Guide |
|---|---|---|
google-sheets/ |
A standard layout for statement rows in Google Sheets, import settings, check formulas and a sample file | How to get a bank statement into Google Sheets |
credit-cards/ |
Card statement rows with charges negative and payments positive, a tie-out formula and a sample that ties | Converting a credit card statement to Excel |
xero/ |
The five-column layout for a Xero statement import, a sample that ties and a pre-import checker | Importing a PDF bank statement into Xero |
wave/ |
Wave's 3-column upload layout, its card sign rule (purchases positive) and a card sample that ties | Wave bank statement import |
sage/ |
Sage Accounting's header order (Date, Description, Money in, Money out) and a chequing sample that ties | Sage bank statement import |
zoho-books/ |
The Single Column with Negative Values layout for Zoho Books and a checking sample that ties | Zoho Books bank statement import |
invoices/ |
Invoice line items one row per line, with the two checks that catch misreads | Invoice PDF to Excel |
financial-statements/ |
Balance sheet and P&L lines as Statement, Section, Line, Year, Amount, with a two-year sample that balances | Financial statements to Excel |
normalize-export/ |
A script that turns a bank export with Debit and Credit columns and dates like 3/2/26 into Date, Description, Amount, and checks it ties | Convert a bank statement to CSV |
All figures are fictional.
- Each CSV has a header row and opens in Excel, Google Sheets or a text editor.
- Each folder README names the columns and gives the formula that proves the sample is complete. Swap in your own rows and the same formula checks them.
- Descriptions that contain a comma are quoted, so the file stays one row per transaction.
- To turn a Debit and Credit bank export into the Standard layout, run
python3 normalize-export/normalize_export.py normalize-export/sample-bank-export.csv --out standard.csv(Python 3, standard library only).
The content and data in this repository are licensed under
CC BY 4.0. Free to use and adapt with credit to ZeraBooks. The
scripts (*.py) in normalize-export/ are licensed under MIT.
Maintained by ZeraBooks.