For whoever has to load the file into a system

Bank of America statement to CSV. Rows that already balance before they reach the import screen.

The import will not tell you it went wrong. It will accept 470 of 500 rows and say nothing. So the check has to happen before the file exists: every printed line accounted for, headers stripped, amounts signed consistently, dates in one order. What you download has already been through that.

Drop a Bank of America statement here

Or click to pick the file. It opens in the same page you would have used anyway — the balance chain starts re-adding on the next screen.

Three files free, 60 pages in total, no card needed. Paid plans are priced by the page — one page of the original is one page, up to 500 pages in a single file.

Dates on file: MM/DD/YYYY → written out as ISOCurrency: USD ($)No bank login, ever

The row count is the fact nobody checks

Count the transactions printed on the statement, then count the rows in the CSV. If those two numbers differ, the import is wrong no matter how clean the columns look — and on a Bank of America statement, the usual reason is a page whose header was repeated or a table that did not continue across a page break. Both counts are shown before the download button.

What gets checked before you download

Every line below is arithmetic on the paper you sent — not a supplier's claim about how good its reading is. Where the arithmetic fails, you get the row and the exact difference, and the statement is not called balanced.

Printed lines vs exported rows

Both numbers are on screen. A shortfall is stated rather than absorbed.

Continuation across a page break

A table that runs over a page edge is joined when the headings and column structure agree, and flagged as suspected when they do not. Either way you can see which decision was taken.

One date format out

ISO dates, so a receiving system in another locale cannot read 03/04/2026 the other way round.

Amounts as numbers

Thousands separators and currency symbols are stripped from the numeric reading only — the printed string is kept alongside it for anyone who needs to look back.

Where a Bank of America statement goes wrong quietly

None of these announce themselves. Each one produces a file that looks correct.

Subtotal rows that look like transactions

A line whose description is a date range is usually a subtotal. Read as a transaction it doubles the period.

Two columns of money, one sign

Deposits and withdrawals in separate columns have no sign at all. Collapsing them into one signed column is a decision, and it is stated rather than assumed.

Blank rows at the fold

A row that is empty except for a page number is page furniture. It is dropped and counted, not silently ignored.

What we will not claim

This is not a validation promise about your accounting package. We document the shape of the file; the package decides what it accepts.

The same goes for the arithmetic: a clean run means the checks we ran found nothing to flag. It does not mean the document is correct — it means nothing in it failed the checks listed above.

How it runs

STEP 1

Upload the statement

A native PDF, a scan, or a phone photo of the Bank of America statement. No bank connection, no credentials, nothing to authorise.

STEP 2

The ledger is rebuilt and walked

Rows are put back in the order the statement prints them, page furniture is removed, and the balance chain is re-added line by line.

STEP 3

Check the flags, then export

Anything that did not add up is listed first, with its page and exact difference. Then take the CSV file, the other export shapes, and the review sheet.

What lands on your disk

  • The .XLSX register — one row per transaction, no merged cells, amounts as numbers
  • A Review sheet: who confirmed or corrected which cell, and what it said before
  • Plain CSV, Xero-shaped CSV, and QuickBooks .QBO with unique transaction IDs
  • A check report stating the rows printed, the rows exported, and every difference found
  • Every cell still clickable back to the page and region it was read from
  • Files are read, then destroyed — a second upload is a second read

Questions

One file per account or one file per month?+

Either. Separate uploads give separate ledgers with the period stated, so two accounts never get merged by accident.

What if a page could not be read?+

The page is named, and the rows on it are marked as unread rather than filled in. A CSV with an honest hole is worth more than one that looks complete.

Can I see which rows were edited by a person?+

Yes — corrections are recorded with who made them and when, and they are listed in the review report that ships with the workbook.

What does it cost?+

Three files are free, 60 pages in total, with no card and no account needed to try. Paid plans are sold by the page — $19 a month buys 1,000 pages — and a page is one page of the original document.