BalanceProof

A brokerage statement converter for cash activity, not positions

Convert Schwab, Fidelity, and Vanguard brokerage statements to CSV or QuickBooks. Cash activity is checked against the statement balance; positions and holdings are not converted, and the page says so plainly.

What this converts: cash activity, not your positions

A brokerage statement carries two kinds of information that look nothing alike. One is your positions: the shares you hold, their quantity, their price on the statement date, and the market value that follows from multiplying the two. The other is cash activity: money moving through the account’s cash balance, deposits, withdrawals, dividends, interest, margin interest, and the cash side of every buy and sell. This converter reads the second kind only. It turns the cash activity into a CSV, checks it against the cash balance printed on the statement, and stops there. Positions and holdings are not converted, on this page or anywhere on this site.

That line is not a limitation notice buried in a footnote. It is the honest description of what the tool does, stated up front, because the alternative, quietly outputting a holdings table dressed up as if it had been checked the same way cash activity has, would be a plausible-looking file with nothing behind it. A share count and a market value do not chain the way a running cash balance does: there is no opening-plus-activity-equals-closing equation for a portfolio the way there is for a checking account, so there is nothing this converter’s reconciliation gate could honestly verify. Cash activity has that equation. That is the part this tool builds on, and the part worth trusting.

Convert a statement now

Drop bank statement PDFs here

or

No signup, no card. Read and reconciled in this browser tab - nothing is uploaded.

  • Balances are checked before anything is exported.
  • Rows that do not tie out are flagged, never dropped.
  • Close the tab and nothing is left behind.

Convert a Schwab, Fidelity, or Vanguard statement to CSV or Excel

The three big brokerages lay out a monthly statement differently. Schwab tends to print a positions summary followed by a transaction detail section. Fidelity groups activity by type, dividends separate from trades, ahead of an account summary with beginning and ending balances. Vanguard often prints a daily cash balance table alongside debit and credit columns rather than a running balance on every row. None of that is a problem this converter needs a bank-specific template to solve. The same column detection that reads a Chase or Bank of America statement reads a brokerage one: it finds the date column, the description column, the amount or debit and credit columns, and whichever balance figures the statement actually prints, whatever order the broker chose to put them in.

What does need special handling, and what this converter does handle, is the positions table itself. A block of ticker symbols, share counts, per-share prices, and market values sitting on the same page as the cash activity has no date column and no place in a ledger, and a generic column reader that was not built to notice this would risk pulling numbers from that block into the wrong column, corrupting the very cash figures it is supposed to check. This converter detects that block by its own vocabulary, the words a positions table always carries, symbol, quantity, market value, and removes it before the cash-activity table is read at all. The export you get is CSV or a generic spreadsheet: date, description, amount, and running balance where the statement prints one, ready for Excel or for an accounting import.

The gate applied to cash activity

The reconciliation gate that runs on a bank statement runs the same way here: opening cash plus activity must equal closing cash, or the rows that break are flagged. When the statement prints a cash balance after every line, each row is checked individually, previous balance plus the transaction equals the new balance, and the export carries a row-by-row verified stamp. When only the opening and closing cash balances are printed, the whole activity total is checked against the difference between them, a statement-level check. When the statement offers only a table of daily cash balances, the day-boundary math is what gets verified. When none of that is printed, the export says so honestly rather than pretending a check ran.

Margin interest is a useful test case for why this matters. It is a small, easy-to-miss debit that lands on its own line most months, and a converter that dropped it or misread its sign would leave the account looking healthier than it is, exactly the kind of small silent error that surfaces weeks later as a balance that will not tie. Dividend reinvestment is the opposite case: a dividend credit and a same-day purchase debit that looks, at a glance, like it cancels itself out, but is really two separate cash movements that both need to land in the ledger and both need to check against the balance around them. The gate treats both the same way it treats an ordinary wire transfer: read the printed sign or debit and credit column, chain it against the balance, and flag the row if the number the statement prints does not agree.

Brokerage statement to QuickBooks: the export format

The output format is the same one the rest of this site produces for bank statements, because the same accounting software reads it. QuickBooks Online CSV, three columns of Date, Description, and one signed Amount by default, imports under Transactions, then Bank transactions, for whichever cash or brokerage account you have set up in the chart of accounts. A four-column Credit and Debit variant is available for the cases that want it, and a Xero CSV with a single signed amount, income positive, covers Xero organisations the same way it does for a checking account. Large statements split automatically under QuickBooks’ 350 KB upload cap the same way a bank statement export does.

One clarification saves confusion at import time. QuickBooks and Xero both expect one row per transaction, dividends, interest, margin interest, transfers, and the cash side of buys and sells all lined up as individual cash movements. Categorizing them, dividend income against a brokerage clearing account, margin interest against an interest expense line, is a bookkeeping decision that happens after import, inside your accounting software’s rules, the same way category and class columns are ignored on a checking account CSV import. The export gives you the checked cash movements; assigning them to accounts is a judgment call this converter leaves to you, because it is one.

Why positions and holdings are not converted

It would be straightforward to print a second CSV of ticker, quantity, price, and market value alongside the cash-activity export, and just as straightforward to make it look like it passed the same check the cash side did. It would not have. A portfolio does not carry a balance chain the way a checking account does: there is no opening-plus-activity-equals-closing equation to test a share count or a market value against, only the fact that they are printed on the statement. Verifying a number by checking that it appears on the page it appears on is not verification, and stamping a holdings table with the same reconciliation language used for a checked cash balance would blur a distinction that matters: cash activity has an equation behind it; a snapshot of positions does not.

So the honest choice is to convert what can genuinely be checked and say plainly what cannot, rather than build a feature that looks complete and is not. If your workflow needs a record of holdings and market values on a given statement date, most brokerages already export exactly that from their own site, a portfolio-positions download built for that purpose. This converter’s job is narrower and, on the cash side, checked: catch-up bookkeeping, tax-time cash reconciliation, or reading a closed account’s last few statements, all of which run on the cash activity a brokerage statement prints.

Investment statements never uploaded

A brokerage statement is a sharper privacy line than a checking account statement, not a softer one. It carries account values, holdings, and a reasonably precise picture of someone’s net worth alongside the account and routing numbers a bank statement already carries. Uploading that file to a converter you do not control is a bigger ask than uploading a checking statement, and the honest answer here is the same one this site gives for every statement type: there is no upload. The PDF is read in your browser tab, the positions table is detected and set aside, the cash activity is checked against the printed balance, and the export downloads directly from that same tab. Open the Network tab while a conversion runs and watch for yourself; no request carries the document, on a brokerage statement or a checking one.

For a bookkeeper or a fractional CFO handling a client’s investment accounts, that removes a vendor-vetting question before it starts. There is no subprocessor to add to a written information security plan, no cloud service handling investment data to name in a client engagement letter, because no service handles it. The statement goes in, the checked cash activity comes out, and the only thing that ever left the browser tab is the file you chose to download.

Where this fits in a catch-up or year-end engagement

Brokerage statements show up in the same catch-up work that drives bank-statement conversions: a new client hands over a folder of last year’s statements, an account closed mid-year has no feed to reconnect, or a December scramble needs twelve months of cash activity reconciled before the books close. The workflow holds up the same way: convert oldest first, check each statement’s closing cash balance against the account balance already in the books before moving to the next month, and treat a mismatch as a signal to look for a missing statement rather than a data-entry problem to shrug off. Free conversion covers 20 pages a month, plus a one-time 100-page allowance for your first catch-up job, with the full check running; unlimited pages are $19 a month, or $149 a year, the same pricing as the rest of this site, because the reconciliation gate itself is never the thing behind a paywall.

Frequently asked questions

Does this convert my brokerage positions or holdings?
No. Only cash activity converts: deposits, withdrawals, dividends, interest, margin interest, and the cash side of buys and sells. Positions, share counts, and market values are detected and excluded on purpose, because there is no balance-chain equation to check them against honestly.
Which brokerages does this work with?
Any brokerage statement with a text layer, downloaded rather than scanned. Schwab, Fidelity, and Vanguard statements all convert; the column detection reads the cash-activity table by its structure, not a bank-specific template, so other brokerages with a similar layout convert the same way.
How does the reconciliation gate work on a brokerage statement?
The same five-state check used on bank statements, applied to cash activity: opening cash balance plus activity must equal closing cash balance, row by row where a running balance is printed, or against the statement total where it is not. Rows that do not tie out are flagged with both numbers shown.
Can I import the export into QuickBooks or Xero?
Yes. The export is the same QuickBooks Online CSV (3-column default, 4-column available) and Xero CSV this site produces for bank statements. Categorizing dividends, interest, and margin interest to the right accounts happens inside your accounting software after import.
What happens to dividend reinvestment on the same day as a dividend payment?
Both cash movements convert as separate rows, the dividend credit and the reinvestment purchase debit, each checked against the balance around it. Same-day activity is common on brokerage statements and does not need special handling to convert correctly.
Is a brokerage statement safe to convert given how sensitive investment data is?
The statement is never uploaded. It is read in your browser tab, the same as any other statement on this site, and you can confirm that by watching the Network tab during a conversion. Investment account data carries no more risk here than a checking account statement, because neither one leaves the browser.