DocuClipper logo
Schwab statement converter

Convert Charles Schwab Statements to Excel

Brokerage, IRA, Schwab One, and legacy TD Ameritrade statements turned into structured Excel or CSV. Holdings and transactions cleanly separated, cost basis preserved, household statements split per account.

DocuClipper rated 4.7 of 5 on G2 from 91 reviews
4.7/5(91+ reviews)Trusted by 10,000+ finance teams
14-day free trialNo credit card required

Drag & Drop Brokerage Statement Here

or

No file selected yet.

Trusted by accountants, advisors, and finance teams

Used by Schwab-account professionals

Wealth AdvisorsTax PreparersForensic AccountantsFamily Offices

All Schwab formats

Brokerage, IRA, Schwab One, TD Ameritrade legacy, household

Holdings + Transactions + Income

Three structured tables per statement

Excel, CSV, JSON

Export formats

Every Schwab Statement Format

A single converter for every Schwab statement type. Auto-detection picks the right extractor; you don't pick anything.

Brokerage

Standard taxable Schwab brokerage account: holdings with cost basis, transactions, dividends, and period summary.

Retirement (IRA, Roth IRA, Rollover IRA, SEP)

Same blocks as brokerage, with cost basis often blank. Distributions and contributions land in Transactions.

Schwab One

Brokerage + cash management hybrid. Schwab One debits, credits, and check activity are tagged distinctly so they don't get conflated with trades.

Schwab Bank Investor Checking / Linked

Linked Schwab Bank cash movements split out from brokerage activity, with the source account number on every row.

TD Ameritrade (pre-Schwab migration)

Legacy TD Ameritrade statements from before the Schwab migration are auto-detected and extracted with the same Holdings / Transactions / Income / Summary structure.

Combined Household Statement

Multi-account households (joint brokerage + IRAs + custodial) split per account with the source account number on every row.

What Gets Extracted From a Schwab Statement

The four blocks Schwab prints, mapped to four structured tables.

Holdings

Per-position rows: symbol, security name, quantity, price, cost basis (when printed), market value, unrealized gain/loss, and asset class.

Transactions

Buys, sells, dividends, interest, transfers, distributions, contributions, fees, and Schwab One cash movements with date, type, security, quantity, and amount.

Investment Income

Dividend, interest, and capital-gains distributions broken out per security, separated from reinvested-purchase rows so totals don't double-count.

Account Summary

Period start, period end, starting value, ending value, net change, total deposits, and total withdrawals reconciled against the Transactions sheet.

Schwab-Specific Edge Cases We Handle

The patterns that trip up generic OCR tools but are normal on a Schwab statement.

Journal entries between Schwab accounts

Internal transfers between your own Schwab accounts (common when a position moves from a taxable brokerage to an IRA, or from TD Ameritrade legacy to a Schwab account) appear as Journal entries. DocuClipper tags these as type `transfer` so they don't get counted as buys or sells.

Reinvested dividends

Mutual fund and ETF dividend reinvestment prints as two lines on a Schwab statement: the Income row (the dividend) and the Transactions row (the reinvested purchase). Both are extracted, with a flag so you can avoid double-counting in cash-flow analysis.

Schwab One cash and check activity

Schwab One debits, credits, and check activity land in the Transactions sheet as type `cash_debit` / `cash_credit` / `check`. Filter them out for a trading-only view, or keep them in for full cash reconciliation.

Margin interest and fees

Margin interest charges, account fees, and 12b-1 fees are extracted into Transactions with type `interest_charge` or `fee` so they're not conflated with investment income.

Combined household statements

Every row carries the source account number, so a single household statement with joint brokerage + two IRAs + a custodial account splits cleanly into per-account workbooks.

Cost basis on retirement accounts

Schwab prints cost basis on most taxable brokerage holdings. Retirement accounts (IRA, Roth, Rollover) often omit it. The Holdings column will be blank in those cases rather than guessed.

How It Works

  1. 1

    Upload the Schwab PDF

    Drop a digital download from Schwab.com or a scanned/photographed mailed statement onto the upload area. Password-protected statements are supported.

  2. 2

    Auto-detect and extract

    DocuClipper detects Schwab (or legacy TD Ameritrade), identifies whether it's brokerage / IRA / Schwab One / household, and extracts each block into a separate structured table.

  3. 3

    Reconcile

    Transaction sums are cross-checked against the printed Account Summary. Any discrepancy is flagged before export.

  4. 4

    Export to Excel or CSV

    Download an .xlsx workbook with one sheet per block, or pull each sheet as CSV. JSON is available via the API for programmatic workflows.

What Finance Teams Say

Real reviews from accountants and advisors using DocuClipper.

DocuClipper has helped us eliminate several manual data entry processes, saving us a lot of time.
KR

Kristin Mitchell

Accounting, United States

It's a complete game-changer. Instead of spending hours combing through statements, we get the data we need almost instantly.
MA

Matt

Lending, United Kingdom

DocuClipper allowed us to enhance our advisory services, directly impacting our bottom line.
SA

Sarah Winship

Accounting, United Kingdom

Frequently asked questions

Yes. Auto-detection covers Schwab brokerage, Traditional and Roth IRA, Rollover IRA, SEP, and Schwab One statements. The same Holdings / Transactions / Income / Summary structure is extracted from each, with cost basis populated where Schwab prints it (typical for taxable brokerage; often blank for retirement accounts).
Legacy TD Ameritrade statements (from before the Schwab migration) are supported. They're auto-detected and extracted with the same Holdings / Transactions / Income / Summary schema, so a year that spans both TD Ameritrade and Schwab statements lines up cleanly in one workbook.
Yes. Schwab household statements that combine joint brokerage + IRAs + custodial are supported. Every extracted row carries the source `account_number`, so you can pivot per account or split into separate workbooks.
Yes. Mailed statements and scanned copies run through OCR before extraction. Image quality matters at the edges (dim or skewed scans extract less cleanly), but a flat scan or a sharp phone photo of each page works.
Yes, when Schwab prints cost basis on the Holdings page, which is typical for taxable brokerage accounts. Retirement accounts (IRA, Roth, Rollover) often omit cost basis on the statement, in which case the column is left blank rather than guessed.
Schwab.com lets you export current Holdings and recent Transactions to CSV from inside the portal, but only for the live account view, only the period the portal exposes, and only one account at a time. DocuClipper works on the PDF statement itself, so it covers any historical period for which you still have the PDF, runs across multiple accounts in one upload, and produces a consistent schema across brokers if you also hold accounts at Fidelity, Vanguard, or Merrill.
Yes. Drop twelve monthly Schwab PDFs in one batch. DocuClipper produces one workbook per statement, or you can merge them into an annual workbook for portfolio-review and tax-prep work. For recurring uploads, the watched Google Drive folder is the cleanest path.
No. A Schwab brokerage statement is the monthly or quarterly account statement (holdings + transactions). The 1099-B is a year-end tax form covering realized sales. DocuClipper extracts the brokerage statement here; tax-form extraction is a separate product.
Those use slightly different statement templates. Standard Schwab brokerage and retirement formats are auto-detected; less-common Schwab entities may fall back to a generic extraction. If you hit one, contact us and we'll add the template.