Bank of America sectioned statement CSV: why there is no balance column

You converted a Bank of America checking statement and the balance column in the CSV is empty, and the amounts have minus signs the PDF never printed. Both are on purpose. This page explains why, using a made-up sample statement you can download next to the exact CSV PaperRows made from it.

This layout is in beta. No real Bank of America statement has been through our full review yet, so we call it beta. We read it with the same checks as every other bank, and if a row is wrong, the refund rule covers it.

Which statements this page is about

PaperRows reads two Bank of America personal checking layouts. This page is about the sectioned layout, where money in and money out sit in separate sections, each with its own table of Date, Description and Amount:

  • Deposits and other additions
  • Withdrawals and other subtractions, split into ATM and debit card subtractions and Other subtractions
  • Checks and Service fees, each a section of its own

If your statement has one table with a Balance column on every row, it is the single-table layout, and your CSV has a balance on every row. The Bank of America help page covers both.

Not covered here: business statements in the sectioned layout (with Deposits and other credits and Withdrawals and other debits) are not read yet and are refused with "This Bank of America statement layout is new to us". Savings, credit card and combined statements are not read yet either. Text PDFs only: scans and password-protected files are refused.

Why the balance column is empty

The sectioned layout prints no balance on the transaction rows. PaperRows only writes down balances the statement prints, so the balance column of the plain CSV stays empty for every row of these statements. It is the same CSV format as every other bank, so the column is still there.

The statement does print a Daily ledger balances table: one balance at the end of each day that had activity. That table is not a balance per row, and turning it into one would mean making up figures for the rows in between. So it never becomes rows. PaperRows does use it: each daily balance is compared with the beginning balance plus every row up to that date, and the check "Daily balances match" has to pass before you see any rows.

The rows are also in statement order, section by section, not in date order. In the sample, the deposits come first, then the card purchases from early May again, then the other subtractions, then the fee. The page and line columns point at where each row is printed.

Where the plus and minus signs come from

In this layout the section decides the sign, not a symbol next to the number:

  • Rows under Deposits and other additions are money in, so they are positive.
  • Rows under both withdrawal groups, Checks and Service fees are money out, so they are negative, even where the statement prints the amount with no minus sign.

In the sample, the card purchase printed as 19.46 under ATM and debit card subtractions comes out as -19.46. If a statement prints a sign that disagrees with its section, such as a minus on a deposit, PaperRows does not change it: the check "Every transaction line read" fails and the preview shows no rows.

Section and group totals, and the account summary figures, are compared with the rows read under them wherever they are printed, and the beginning balance plus deposits minus withdrawals has to equal the ending balance.

The sample statement

Every name, number and transaction in the sample is invented. Our test generator made it. It is not a real Bank of America statement. It is a plain two-page document laid out the way PaperRows expects the sectioned personal checking layout to be, and every page says SYNTHETIC TEST DATA at the top.

The statement covers May 1 to May 30, 2026: beginning balance $8,588.61, deposits $8,218.21, withdrawals $1,922.29, service fees $12.00, ending balance $14,872.53. It has six deposits, ten card purchases, four other subtractions, one fee and a daily ledger balances table with 13 days.

The CSV it makes

This is the plain CSV PaperRows wrote for the sample, unchanged:

page,line,date,description,amount,balance
1,15,2026-05-06,ACH CREDIT SYNTHETIC EMPLOYER DES:PAYROLL ID:XXXXX12 INDN:SYNTHETIC PERSON CO ID:XXXXX00000 PPD REF SYNTHETIC LONG DETAIL END,663.09,
1,18,2026-05-10,ZELLE PAYMENT FROM SYNTHETIC FRIEND,1100.59,
1,19,2026-05-22,MOBILE DEPOSIT,1468.23,
1,20,2026-05-26,ZELLE PAYMENT FROM SYNTHETIC FRIEND,2615.64,
1,21,2026-05-26,ONLINE TRANSFER FROM SAV,697.32,
1,22,2026-05-28,ZELLE PAYMENT FROM SYNTHETIC FRIEND,1673.34,
1,28,2026-05-05,CHECKCARD PURCHASE ATM CASH WITHDRAWAL,-19.46,
1,29,2026-05-06,CHECKCARD PURCHASE METRO TRANSIT,-58.09,
1,30,2026-05-08,CHECKCARD PURCHASE COFFEE HOUSE,-62.24,
1,31,2026-05-17,CHECKCARD PURCHASE GROCERY MARKET,-3.55,
1,32,2026-05-20,CHECKCARD PURCHASE ELECTRIC SERVICE,-65.50,
1,33,2026-05-21,CHECKCARD PURCHASE CUSTOMER ACH PAYMENT,-66.52,
1,34,2026-05-26,CHECKCARD PURCHASE CITY WATER UTILITY,-12.08,
1,35,2026-05-28,CHECKCARD PURCHASE INSURANCE PREMIUM,-62.22,
1,36,2026-05-29,CHECKCARD PURCHASE PAYROLL DIRECT DEPOSIT,-21.93,
1,37,2026-05-30,CHECKCARD PURCHASE HARDWARE STORE,-31.33,
1,42,2026-05-06,ONLINE BANKING TRANSFER TO CHK,-199.33,
1,43,2026-05-17,ZELLE PAYMENT TO SYNTHETIC PAYEE,-484.87,
1,44,2026-05-18,SYNTHETIC UTILITY DES:BILL PAY ID:XXXXX99 INDN:SYNTHETIC PERSON CO ID:XXXXX11111 WEB,-291.00,
1,46,2026-05-18,ONLINE BANKING TRANSFER TO CHK,-544.17,
2,5,2026-05-30,Monthly Maintenance Fee,-12.00,
  • The balance column is empty on every row, for the reason above.
  • Dates include the year, because this layout prints them like 05/06/26.
  • The payroll deposit is one row. Its description wraps onto three lines in the PDF and is joined back together.
  • Not rows: the account summary, the section totals, the card subtotal and the daily ledger balances.

When you buy a statement you also get a QuickBooks Online CSV with Date, Description and Amount. The sample here is the plain CSV only.

How we checked the sample

The generator wrote down the expected rows while it drew the PDF, from the same made-up records and without running PaperRows. The converter then reads the PDF on its own. Its rows match those expected rows, and every check that applies to the sample passes: section totals, the summary, the daily balances and the dates. Our test suite holds the CSV above to the converter's output for the sample, byte for byte.

What that does not tell you: that every Bank of America statement will read this cleanly. Matching totals are a strong sign, not proof, so look over the preview before you pay.

Convert your own statement

Open the converter and drop in your Bank of America statement PDF. The file is read in your browser and never uploaded. The preview is free and shows every row with its page and line, and the checks against the statement. If PaperRows cannot read the file, it tells you why before you pay anything. Downloading the two CSV files for a statement costs $5. No subscription.

PaperRows is independent and is not connected with Bank of America.