Connect Charles Schwab and thinkorswim
Connect Schwab to VEXA through SnapTrade with your own Schwab login for daily read-only automatic sync, or upload a thinkorswim or schwab.com file.
On this page
What this does
Connects your Schwab brokerage accounts to VEXA and keeps them up to date on their own. The connection runs through SnapTrade, VEXA’s connection partner: you sign in with your Schwab login inside SnapTrade’s portal, VEXA never sees your password, and the access is read-only, so VEXA cannot place, change or cancel orders. Automatic sync is a Pro feature.
VEXA also recognises three thinkorswim and schwab.com exports and works out which one you gave it. File import works on every account and is the route for anything the connection does not reach.
Automatic sync
Same on every platform
- In VEXA, open Profile, then Connected brokers, and choose Schwab / Thinkorswim.
- Open the Automatic sync tab and choose Connect with Schwab.
- SnapTrade opens Schwab’s own sign-in page. Former TD Ameritrade customers use their migrated Schwab login. Complete any verification Schwab asks for.
- Approve the read-only connection and choose which brokerage accounts to link.
- Return to VEXA. On a phone or tablet, switch back to the app when the portal finishes. If the accounts have not appeared, choose I’ve connected.
- The first sync starts on its own. Compare one imported trade with Schwab before relying on a long history.
The first sync brings in the stock, ETF and options history Schwab exposes through the connection, roughly four years, including Schwab’s per-fill commissions and fees. VEXA then syncs every day, and new trades appear the day after they settle. Choose Sync Now whenever you want an on-demand refresh.
If Schwab asks you to sign in again, VEXA shows Reconnect Schwab. Sign in once and the sync resumes; your trades are not affected.
Import a file instead
Same on every platform
From thinkorswim desktop
- Open thinkorswim and log in.
- Go to the Monitor tab.
- Open Account Statement in the left sidebar.
- Filter to trade or order history rather than deposits and withdrawals.
- Set the date range. Last 12 months is a good default.
- Check that Symbol, Date/Time, Side, Quantity, Price and Net Amount are visible. Right-click the header row to add any that are missing.
- Export to file as CSV. The file is named like
AccountStatement_MMDDYYYY.csv. - Upload it to VEXA.
From schwab.com
- Sign in and go to Accounts > History & Statements > History.
- Select the brokerage account.
- Set the type filter to trades.
- Set the date range.
- Apply, then Export > Export to CSV.
- Upload it to VEXA.
Schwab keeps roughly two years of history online for export. Use a file on a free account, or to cover a period the connection did not return.
Limits and gotchas
- Schwab reports the trade date without a time of day for these imports. VEXA shows the trading day, marks the time as date only, and leaves these trades out of time-of-day charts so a stand-in time never skews them.
- Exporting only the cash activity section gives you zero trades. Exporting the whole account statement is fine, because VEXA takes what it needs and ignores the rest.
- Option symbols on very old exports may not map correctly. If an options trade looks wrong, re-export it from thinkorswim rather than schwab.com.
- The two file sources are interchangeable for VEXA. Use whichever you find faster.
- A file you upload for a period the connection already covered is recognised, not duplicated.
What you should see
One connected account per Schwab account you approved, each with a last-sync time. After an automatic or on-demand sync, the account shows its latest status and the number of trades imported.
A file import returns a result panel naming a Schwab or thinkorswim format, with a count of imported trades. A statement export shows a large gap between rows processed and executions kept, because statements carry cash movements and summaries too. That is normal.
If it doesn’t work
- “Automatic sync is a Pro feature.” The account you are signed in with is not on Pro. Upgrade, or upload a file.
- “Automatic sync for this broker isn’t switched on yet.” The connection is not live on VEXA’s side yet. File import works in the meantime.
- “No trades were found in this file.” You exported the cash activity only, or a date range with no trades in it.
- “This is a Charles Schwab monthly brokerage statement.” The PDF statement summarises balances and positions and does not list executions, so there is nothing to import from it. Go to Accounts → History on schwab.com, choose the date range, click Export and upload that CSV, or connect Schwab for automatic sync.
- “This file lists account balances, not trades.” A summary of Beginning and Ending Account Value is not a trade export. Use the History export above.
- “This PDF could not be read.” The statement is a scan or a photo, so it has no text layer. Export a text-based PDF or, better, the History CSV.
- VEXA asks you to reconnect. Schwab wants a fresh sign-in. Choose Reconnect Schwab and sign in once.
- The portal says the link has expired. SnapTrade links last five minutes. Return to VEXA and choose Connect with Schwab again.
- Half your trades are missing from a file. Check the date range on the export. thinkorswim defaults to a short window.
Related
Still stuck? Email support@vexatrade.ai.