When your bank's CSV export doesn't match your software, map the file instead of rebuilding it: tell the import which column holds the date, which holds the description, and whether amounts sit in one signed column or in separate debit and credit columns. Column order and heading names then stop mattering. What is left to fix in the file itself is short: currency symbols, a separator other than a comma, day-first dates, and rows above the headings.
You reconcile against a file you did not design. Your bank chose its column order, its heading names, and whether money out is a minus sign or a column of its own, and the next bank you open an account with will have chosen differently. Every hour spent rearranging that file in a spreadsheet is an hour spent editing the one record in your books that is supposed to come from outside them. A statement line carries three facts: a date, a description, and an amount.
This is a spoke of Bank Reconciliation for Property Managers: Step by Step, which covers the monthly routine from opening balance to lock. This one covers the step before any matching starts: what a bank statement CSV holds, the layouts banks export, the two columns that stop an import, the procedure, and how Scaalr reads a statement from any bank.
What a bank statement CSV is
A bank statement CSV is a plain-text export of one account's transactions, one transaction per row, with the values in each row separated by commas. CSV stands for comma-separated values. The format has a published description, RFC 4180, issued in October 2005, which sets out the basics: one record per line, an optional heading line first, commas between fields, and double quotes around any field that itself contains a comma. The same document records that no formal specification exists, which is why two banks' files rarely look alike.
Every bank statement CSV carries the same three facts per transaction: the date it posted, the bank's description of it, and the amount. The rest varies by bank: the order of the columns, the names in the heading row, whether a running balance or a check number rides along, and how the file tells money in from money out. An import that asks where each fact sits can read any of those layouts. An import that expects one fixed layout reads one.
The layouts banks export, and what each one needs
The table below lists the ways a bank statement CSV differs from bank to bank, and what each difference needs from you at import.
| What the bank's file looks like | What to do |
|---|---|
| Columns in an order of the bank's own | Map each field to its column; the order is the bank's to choose |
| Headings named Posted date, Memo, or Narrative | Map by column; a heading is a label |
| No heading row | Say so at import, so the first transaction is read as one |
| One amount column, money out as negatives | Choose the single signed amount |
| Separate debit and credit columns | Choose separate columns: debit is money out, credit is money in |
| A running balance, check numbers, or categories | Leave them unmapped |
| One amount column, all positive, with a type column beside it | Put a minus sign on the withdrawals before import |
| Account details or blank rows above the headings | Delete those rows, so the headings sit on the first row |
| Currency symbols, or parentheses for negatives | Strip them; an amount is digits, a decimal point, and a minus sign |
| Semicolons or tabs between values | Save the file as comma-separated |
The first six rows are choices you make at import, and they change nothing in the file. The last four are edits, and each changes how a value is written, never what the bank recorded.
Dates and amounts: the two columns that stop an import
Dates and amounts are the two columns of a bank statement CSV that software has to interpret, and they are where an import stops. A description is text and is taken as written.
A date written with slashes is ambiguous on its face. The International Organization for Standardization's page on ISO 8601 gives 01/05/22 as its example: January 5 to one reader, May 1 to another. The standard's answer is year, month, day, written 2026-06-12, which reads one way everywhere. If your bank writes the day first, change the date column to year-month-day before you import, and check the first and last imported lines against the statement.
An amount has to arrive as a number: digits, a decimal point, and a minus sign for money out. A currency symbol or a pair of parentheses turns the amount into text, and a row whose amount is text is a row the import cannot read. Separate debit and credit columns each hold positive numbers, with the column saying which way the money moved.
How to import a bank statement CSV, step by step
Importing a bank statement CSV follows the same procedure for every account and every bank. Run it once per statement, inside the reconciliation for that account.
- Download the CSV for the statement period. Export posted transactions for the same dates the statement covers, first day to last, from your bank's site. Keep the downloaded file as your copy of the bank's record.
- Total the amount column. Money in less money out should equal the statement's closing balance minus its opening balance. That figure is the check on every step after this one.
- Fix only what a mapping cannot. Rows above the headings, currency symbols, a separator other than a comma, day-first dates. Leave the columns where the bank put them, and save the changes to a working copy.
- Open the reconciliation for the account and the statement date. One account, one statement, with the opening and closing balances taken from the statement itself.
- Preview the file. Read the first rows the way the software reads them: the headings, then the first transactions, each value in its own column.
- Map the date, the description, and the amount. Point each field at its column and choose the amount style: one signed column, or separate debit and credit columns.
- Import, then read the counts. Lines imported plus rows skipped should account for every row in the file, and the skipped rows should be the ones that were never transactions, such as a totals row or a closing note.
- Compare the first and last lines to the statement. Same dates, same amounts, same signs. From here the work is matching each line to its ledger entry.
Once every line is matched and the reconciliation is locked, the month is ready to close, which Month-End Close Checklist for Property Managers takes from there.
How Scaalr imports a bank statement
In Scaalr a bank statement arrives inside a reconciliation. You start one by picking the cash account, the statement date, and the opening and closing balances, then choose Import CSV. The first step previews the file as Scaalr reads it: the first row as headings and the next five rows beneath them. The second step is the mapping: a date column, a description column, and an amount style, either a single signed column or separate debit and credit columns. Scaalr pre-selects any column whose heading it recognizes (date; description, memo, or narration; amount; debit or withdrawal; credit or deposit), and you correct whatever it picked. A checkbox records whether the first row is a heading.
The file is comma-separated and up to 5 MB. The import screen gives two date forms as examples, 2026-06-12 and 06/12/2026, and the year-first form is the one to use when your bank's dates could be read two ways. Amounts may carry thousands commas (1,234.56). Scaalr stores every line from the cash account's side, money in as a positive amount and money out as a negative one, so a bank's credit column is read as deposits and its debit column as withdrawals. Blank rows are passed over. A row whose date or amount cannot be read is skipped, and the import reports the number of rows it skipped beside the number of lines it brought in; when no row can be read, it names the first five rows and the reason for each. The import screen offers an example file in the simplest layout to compare against.
Imported lines land in the draft reconciliation as unmatched statement lines, beside the ledger entries waiting to clear. Statement lines reach that list two ways, imported or typed in with Add Line (a date, a description, and a signed amount), and any line can be deleted until the reconciliation is marked reconciled, which locks it. Each cash account carries its currency, so a CAD account takes its own statement and a USD account its own, as Managing Rental Properties in Both CAD and USD: One Ledger describes. The ledger side is mostly waiting already: rent, invoices, and payments post their own entries as the work happens, which Can Property Management Software Do My Bookkeeping? sets out. Journal entries have their own CSV import for the day you arrive from another system, covered in How to Switch Property Management Software: Keep Your Books. Statement import is part of bank reconciliation on every plan, including Starter.
Key questions
Why won't my bank's CSV file import?
Almost always for one of four reasons: the values are separated by semicolons or tabs instead of commas, the amounts carry currency symbols, the dates are written day first, or rows above the headings push the headings off the first row. Fix that one thing in the file, preview it again, and map the columns.
Why is a deposit a credit on my bank statement and a debit in my books?
Because the two records are kept from opposite sides. Your balance is money the bank owes you, a liability on the bank's books, so the bank credits it when you deposit. In your ledger the same cash is an asset, and an asset increases with a debit. On a bank's file, credit means money in.
Can I import a PDF bank statement?
No. The import reads CSV files. A statement you hold only as a PDF goes in line by line with Add Line, which takes a date, a description, and a signed amount. Look in your bank's download or export menu first, where a CSV option often sits beside the PDF.
Should I download CSV or OFX from my bank?
CSV, when your software imports by mapping columns, which is how Scaalr reads a statement. A CSV is plain text you can open, total, and check against the statement before it goes in. OFX, short for Open Financial Exchange, is a structured format read only by software built for it.
What happens if I import the same statement twice?
Every row becomes a statement line each time the file is imported, so a file imported twice puts every transaction on the list twice, and the second copy has no ledger entry left to match. Import one file per statement period, count the lines after the import, and delete a repeated line while the reconciliation is still a draft.
Can I open the bank's CSV in a spreadsheet before I import it?
Yes, to read it and total it. Be careful saving: a spreadsheet program can rewrite dates in your computer's regional style and drop the leading zeros from check numbers. If you only looked, close without saving. If you changed something, save as CSV and preview the import before you commit it.
Which Scaalr plan includes bank statement import?
All of them, including Starter. Statement import is part of bank reconciliation, which is on every plan with the ledger and the report suite; Starter is free for the first 5 units, then $0.99 a unit a month. Growth, at $99 a month for the first 50 units and then $1.49 per additional unit, adds invoicing with online card payment.