Brokers
Charles Schwab
Connect a Charles Schwab account over OAuth: what it trades, how to register a Schwab Developer app, how to connect it in the app, and how to fix common connection problems.
Charles Schwab connects over OAuth 2.0. Instead of a password, you register your own app on the Schwab Developer Portal and paste its keys into TradeLabs. Once connected, it renews itself in the background, so you rarely have to touch it again.
| What it trades | Supported |
|---|---|
| Stocks | Yes |
| Options | Yes |
| Spreads | Yes |
| RSA, crypto, memecoins | No |
Schwab does not use a username and password in the app. You connect it once through Schwab Developer, and TradeLabs holds the access token for you and refreshes it on its own.
Before you start
Schwab access runs through a developer app that you own. Set it up once at developer.schwab.com:
- A funded Charles Schwab brokerage account.
- A Schwab Developer Portal account, signed in at developer.schwab.com.
- An app created under My Apps, with the Accounts and Trading product added so it can place orders.
- The app’s Client ID (also called the App Key) and Client Secret.
- A Redirect URI registered on the app.
https://127.0.0.1/callbackis the default TradeLabs uses.
The Redirect URI you register on the Schwab dev portal must match what you enter in TradeLabs exactly, character for character. A mismatch is the most common reason the OAuth sign-in fails.
Schwab reviews new apps before they go live. Wait until your app status shows Ready For Use on the portal before you try to connect it here.
Connect it in the app
-
Open the Brokers page, find the Charles Schwab card, and click Add account.
-
Fill in the connect form:
- Client ID from developer.schwab.com, your app.
- Client Secret from developer.schwab.com, your app.
- Redirect URI, prefilled with
https://127.0.0.1/callback. Change it only if you registered a different one.
Click Save account. Your keys are encrypted on your device.
-
On the account row, click Connect Schwab. A Schwab sign-in window opens. Log in with your Schwab credentials and approve the accounts you want to link.
-
Schwab asks for a verification code during login. Enter it in the Schwab window to finish.
Click a broker card, then Add account, to open the connect form
When the token exchange succeeds, the row shows a Charles Schwab signed in confirmation and reads as connected, with the token expiry time listed. From then on, TradeLabs refreshes the token in the background.
Fixing common problems
- Reconnect (token expired): if the row shows this button, Schwab’s refresh token has aged out (this happens roughly every seven days per Schwab’s policy). Click it and sign in through the Schwab window again.
- Refresh tokens: use this button to force a token renewal by hand if the connection looks stale but has not fully expired. Normal operation does this for you.
- OAuth window fails or bounces back: confirm the Redirect URI in the app matches the one on your Schwab app exactly, including
https://, the host, and the path. - “invalid client” or the login is rejected: re-check the Client ID and Client Secret against My Apps. Copy them fresh, with no trailing spaces.
- App not approved yet: if sign-in never reaches the Schwab login page, confirm your app status is Ready For Use on the developer portal.
To change your keys, open the ⋯ menu on the account row and choose Edit credentials. Use Check connection to confirm the token is still good.