July 24, 2026

How to Export Schwab Holdings to Excel and CSV

Convert a PDF to Excel right here, no sign-up to try:

Drop your PDF here or click to browse

PDF files up to 50MB

Uploading...

First file free. Files are deleted after processing.

Last updated July 2026. To export Schwab holdings to Excel, log in at schwab.com, open the Accounts tab, select Positions, choose the account you want, and click the Export link near the top right of the positions table. Schwab writes a CSV file that opens directly in Excel or Google Sheets, with one row per position and columns for quantity, price, market value, cost basis, and gain or loss. Transaction activity works the same way from the History page, where you pick a date range first.

That is the whole procedure, and for a current snapshot of an account you custody at Schwab it is the right answer. The reason this question keeps getting asked anyway is that the export has real limits, and the limits show up exactly when the work matters: at tax time, during an account transfer, or when someone asks what a portfolio looked like three years ago. This covers the export itself, then what to do in the cases the export will not reach.

Schwab redesigns its site regularly, so treat the exact menu names below as a description of where things sit today rather than a permanent map. The shape of the process has been stable for years even as the labels move.

How do I export my Schwab holdings to Excel?

Sign in on the Schwab website, go to Accounts and then Positions, and click Export. Your browser downloads a CSV containing every position in the selected account: equities, ETFs, mutual funds, fixed income, and options, each with share quantity, last price, market value, cost basis, and unrealized gain or loss. Open it in Excel and you have a working holdings sheet without typing a symbol.

Two details are worth knowing before you click. First, the export follows whichever account is selected in the account picker, so if you hold several accounts, check that you exported the one you meant, or switch to the combined view when you want the whole relationship in one file. Second, the export is a snapshot of right now. It carries no history, so a file you download today tells you nothing about what the portfolio held last quarter.

What you needWhere it comes fromFormat
Current holdings and market valuesAccounts, Positions, ExportCSV snapshot as of today
Trades, dividends, fees, transfersAccounts, History, date range, ExportCSV for the range you pick
Realized gain and loss detailRealized Gain or Loss pageCSV by tax year
Monthly statements and tax formsStatements and Tax FormsPDF only

Notice the last row. Statements and tax documents are the one category Schwab hands you as a PDF rather than a spreadsheet, and that is the category that reaches furthest back in time.

How do I export Schwab transaction history to Excel?

Go to Accounts, then History, pick the account and a date range, then click Export and choose CSV. You get one row per transaction with the date, action, symbol, description, quantity, price, fees, and amount. This is the file you want for reconstructing what actually happened in an account, as opposed to what it holds at this moment.

Schwab caps how many records a single download will return, so a busy account or a wide date range can come back truncated rather than refused. The practical workaround is to export quarter by quarter instead of asking for several years at once, then stack the files in Excel. It is worth checking the row count against what the History screen said before you rely on the file.

Why does my Schwab history only go back two years?

Because the online transaction history and the document archive are two different retention windows. Schwab keeps roughly the last 24 months of transaction detail available on the History page, while statements and tax forms stay in the document archive for about 10 years. So the data you can export as a spreadsheet runs out years before the record of it does.

This is the single most useful thing to understand about custodian data, and it is not specific to Schwab. Fidelity, Vanguard, Pershing, and the large recordkeepers all draw the same line in roughly the same place. Once a question reaches past the export window, the PDF statement is not a worse copy of the data. It is the only copy that still exists.

What if the export will not cover what I need?

Convert the statement PDF instead. A statement contains the same holdings and activity tables the export would have given you, just laid out for printing, so a converter that reads table structure can hand back the rows as a spreadsheet. Upload the statement to the brokerage statement converter at the top of this page and you get one row per position or transaction with share counts and dollar figures kept numeric.

Four situations come up often enough to be worth naming:

  • Activity older than the history window. Rebuilding cost basis on a long held position, or answering an IRS notice about a trade from five years ago, means working from statements.
  • A prior custodian. After an ACAT transfer the receiving firm often gets positions without complete basis or history. The statements from the old firm fill the gap, and you can no longer log in there to export anything.
  • Accounts you do not custody. A held away 401(k), a 529 in another state, or an old annuity has no export button you can reach. Whatever the client can download is what you get, and it is usually a PDF.
  • Whatever the client emails you. Clients send the statement, not the CSV, because the statement is what their portal offered them first.

If you are handling those cases regularly across a book of clients, the workflow built for financial advisors converting brokerage and custodian statements covers batching a year of statements at once and rolling held away accounts into a household allocation. For a scanned or photographed statement, OCR handles the image only version.

How do I open a Schwab CSV in Excel without breaking it?

Open the file, then check three columns before you trust any total: the amounts, the dates, and the symbols. CSV carries no formatting, so Excel guesses at each column, and it guesses wrong often enough to matter on a financial file.

The amounts are the usual casualty. Values that arrive with currency symbols, thousands separators, or parentheses for negatives frequently land as text, which looks completely normal and quietly sums to zero. The fastest test is to select the column and look at the status bar: if Excel shows a Count but no Sum, the column is text, not numbers. Our guide on converting text to numbers in Excel covers the repair, and it is worth doing before anything else because every later formula depends on it.

Dates are the second thing to check, especially if anyone in the workflow uses a non US locale, since a trade on 03/04 can silently become March 4 or April 3. Fixing the date format in Excel early saves a sort that puts the year in the wrong order. Symbols are the quiet one: a ticker like TRUE or a CUSIP with leading zeros can be reinterpreted, so scan the symbol column for anything that stopped looking like a ticker.

SymptomCauseFix
Market value column will not sumNumbers imported as textStrip the currency symbols, then convert to number
Dates sort out of orderDates stored as text or read in the wrong localeReformat the column as a real date
Negatives look positiveParentheses notation read as textReplace the parentheses with a minus sign
Total is a few cents off the statementRounding differences across many rowsRound in the formula, not with the number format
Rows appear cut offDownload record limit reachedExport in narrower date ranges and stack the files

Does the Schwab export include cost basis?

Yes for covered securities, and that is an important qualifier. Brokers have been required to report cost basis to the IRS on equities bought since 2011, with mutual funds and most other categories phased in over the following years. Positions bought before those dates, or transferred in from a firm that never sent basis along, can show blank or unknown basis on both the screen and the export.

Blank basis is not a bug you can fix by exporting again. It means Schwab was never given the number, so somebody has to reconstruct it from the original purchase records, which in practice means old statements or confirmations. That reconstruction is the single most common reason an advisor ends up converting a decade of PDFs, and it is worth doing carefully because the basis figure drives the taxable gain.

How do I combine multiple Schwab accounts into one spreadsheet?

Export each account separately, then stack the rows in one sheet and add an account column before you paste. That account column is what makes the combined file useful: with it you can pivot by account, by household, or by asset class, and you can always trace a row back to where it came from. Without it, twelve exports become an undifferentiated pile within a week.

Once everything is in one sheet, a pivot table gives you the allocation in about a minute, and SUMIF handles the smaller questions like total market value in a single account or total in a single sector. If you are doing this monthly, keep the account column names identical across files, because inconsistent labels are what turn a two minute pivot into a reconciliation project. From there you can turn the position list into a real review by working through what you actually own and using a structured research card for each ticker rather than judging a holding by its weight in the pie chart.

Can I export Schwab holdings from the mobile app?

The export controls live on the full website rather than the mobile app, so use a browser when you need the file. If you are on a phone, requesting the desktop site usually surfaces the same Export link, though the tables are awkward at that width. For anything beyond a single account snapshot it is worth waiting until you are at a computer, since you will be opening the file in Excel anyway.

The short version

Use the native export whenever it reaches your data, because a real CSV will always beat reading a printed page. Accounts and Positions gives you today's holdings, History gives you the last couple of years of activity, and both come out as CSV that Excel opens directly. Check that the amount columns actually sum before you trust a total.

When the export runs out, and on a real client book it does regularly, the statement PDF is the record that survives. Converting it puts those same rows back into a spreadsheet in seconds, which is a great deal faster and more accurate than retyping cost basis out of a ten year old statement. Either way, tie the total back to the statement summary before the numbers reach a tax return or a client meeting.

Stop retyping PDF tables by hand

Upload a PDF and get a clean, editable Excel file in seconds. First conversion is free, no credit card required.