SabrTrader Documentation

Connecting Your Schwab Account to SabrTrader

Connecting Charles Schwab to SabrTrader turns the platform into a live trading terminal for equities, futures and options: one authorized connection supplies market data and order routing for your real Schwab brokerage account. The setup is a one-time process that takes roughly ten minutes and has three parts — creating a connection profile in SabrTrader, creating a developer app at developer.schwab.com to obtain an App Key, App Secret and Callback URL, then completing Schwab's three-page OAuth 2.0 authorization. This page documents every field, every screen and every failure mode, ending with a verified Connected status, a saved workspace and a Schwab-fed chart with Chart Trader attached.

Overview: What the Schwab Connection Gives You

The Charles Schwab connection in SabrTrader is a full broker connection. That means it delivers two things at once: real-time and historical market data, and live order routing to your Schwab brokerage account. Once the connection reports Connected, you can open charts, ladders and order-flow tools on Schwab-supplied prices and send orders from the same platform.

When SabrTrader is first installed it opens a default workspace that is already connected to dxFeed. dxFeed is a data-only feed: it streams prices so a brand-new user immediately sees live charts, but it cannot place orders and it is not tied to your brokerage account. The default workspace exists purely as a starting point and to demonstrate SabrTrader's modular window layout — every panel can be moved, docked and resized.

SabrTrader default workspace with multiple docked chart and panel windows, showing the dxFeed connection active in the Control Center.
The default SabrTrader workspace that opens on first launch, pre-connected to dxFeed so live data is visible immediately. Closing this workspace and disconnecting dxFeed gives a clean starting point before adding a Schwab broker connection.

Schwab covers three asset classes through a single authorization: equities (stocks and ETFs), futures (including index contracts such as MES) and options. That is why Schwab appears at the top of the Equities category in the Connections tab even though it is not equities-only.

End result of this guide

  • A saved Charles Schwab connection profile in the Control Center holding your App Key, App Secret and Callback URL.
  • A Schwab developer app at developer.schwab.com with both required API products enabled.
  • A completed OAuth 2.0 authorization, with the profile showing Connected in the Connections tab.
  • A named workspace containing at least one chart (for example a 3-minute MES chart with 7 days of history) with Chart Trader docked for order entry.

Scope and time

Item Detail
Video walkthrough length Approximately 11 minutes
Typical setup time About 10 minutes, one time only
Repeat frequency Credentials entered once; the three-page login is repeated when the OAuth session expires
Asset classes unlocked Equities, futures, options
Comparable broker flows Interactive Brokers and other API brokers use similar multi-step security screens

If you trade futures through a prop firm rather than a retail brokerage, the equivalent setup is documented in Connecting SabrTrader to Rithmic.

Before You Begin: Prerequisites and Checklist

Collect everything below before starting. The most common cause of a failed Schwab connection is missing or mismatched information gathered halfway through the process.

Requirement Why it is needed
An open Schwab.com brokerage account The account whose data and order routing you are authorizing. Funding is required to place live orders.
Working Schwab.com login (username, password, any multi-factor device) Used on page 1 of the authorization flow.
A developer.schwab.com profile A separate credential set used only to create and manage API apps. Create it before you start.
A password manager or text editor To store the App Key, App Secret and the exact Callback URL string. These are shown on Schwab's site, not stored in plain view inside SabrTrader.
A chosen four-digit port number above 4000 Appended to the Callback URL. The example in the walkthrough uses 8445.
SabrTrader installed and updated The Connections tab must contain the Charles Schwab preset.
A desktop web browser Chrome is used in the walkthrough; any modern browser works. The browser must be able to reach a local loopback address.

Timing caveats

  • Schwab developer app creation is not always instantaneous. An app can sit in a pending or approval state; until it is active, connection attempts may return an invalid-client style error.
  • Market data entitlements are attached to your brokerage account, not to SabrTrader. If your Schwab account lacks a real-time entitlement for a given exchange, quotes may arrive delayed or not at all even though the connection is authorized.

How Connections Work in SabrTrader

All connectivity in SabrTrader is managed from the Control Center (also referred to as the control panel), the small always-available window that hosts platform-wide functions: connections, workspaces and the component launcher for new windows.

The Connections tab

The Connections tab contains 57 preloaded connection configurations — one per supported broker or data-feed provider. Each configuration is a template: SabrTrader already knows the provider's endpoints, transport and required field set, so you only supply your particulars. For a username/password broker that is a login pair; for an API broker such as Schwab it is an App Key and App Secret plus a Callback URL.

SabrTrader Connections tab showing preloaded broker and data-feed configuration categories for futures, equities and options.
The Connections tab in the Control Center, listing SabrTrader's 57 preloaded broker and data-feed configurations grouped by asset class. Charles Schwab appears at the top of the Equities category despite covering futures, equities and options.

Categories by asset class

Configurations are grouped by the instruments each provider serves, typically futures, equities and options. A provider that serves several asset classes is listed under its primary category. Charles Schwab is listed at the top of Equities but delivers futures, equities and options once connected.

Controls available on the Connections tab

Control Function
Add Creates an editable connection profile in the lower list from the highlighted preset. Preset fields in the upper pane stay locked until you click Add — this is the single most misunderstood step.
Save Persists the profile and its credentials so setup is never repeated.
Connect Starts the connection. For Schwab this launches the browser-based OAuth authorization sequence.
Disconnect Ends the session for that profile without deleting the stored credentials.
Advanced Per-connection options and the alternate path to Connect/Disconnect on an existing profile.
Connection status indicator Text/colour state per profile: disconnected, connecting, or Connected. This is the authoritative confirmation of success.

The default dxFeed workspace

A fresh installation opens a pre-built workspace connected to dxFeed. Two housekeeping actions give you a clean starting point before adding Schwab:

  1. Close the default workspace so its windows do not clutter the screen or hold symbol subscriptions.
  2. Disconnect dxFeed in the Connections tab so there is no ambiguity about which feed a chart is using.

Neither action is mandatory — Schwab and dxFeed can coexist — but running both invites duplicate data and symbol confusion, since the same instrument may appear under different symbol/exchange combinations per provider.

Broker connection vs. data-feed connection

Broker connection (Schwab) Data-only feed (dxFeed)
Market data Yes, subject to account entitlements Yes
Order routing Yes — live orders to the exchange No
Account balances and positions Yes No
Authentication OAuth 2.0 with brokerage login Preconfigured, no user credentials
Typical use Live trading, live analysis Learning the platform, layout building, indicator configuration

Step 1 — Create the Schwab Connection Profile in SabrTrader

Do this first, because the Callback URL that Schwab needs originates inside SabrTrader.

  1. Open the Control Center.
  2. Click the Connections tab.
  3. Open the Equities category and highlight Charles Schwab (at the top of the list).
  4. Observe the three fields the connection requires: App Key, App Secret, Callback URL. While the preset is only highlighted, these fields are read-only.
  5. Click Add. A new Charles Schwab entry appears in the lower profile list with editable fields.
  6. Copy the default Callback URL out of SabrTrader now into your text editor or password manager, before visiting the Schwab site. Both sides must reference the same address.
Charles Schwab connection profile in SabrTrader with App Key, App Secret and Callback URL input fields.
The three fields the Charles Schwab connection requires: App Key, App Secret and Callback URL. Fields remain locked while the preset is only highlighted; click Add to create an editable profile in the lower list.

The three fields defined

Field Meaning Source
App Key The public identifier of your developer app, also called Client ID. Tells Schwab which application is requesting access. Schwab developer app page
App Secret The private password paired with the App Key, proving the request genuinely comes from your app. Never share it. Schwab developer app page
Callback URL The redirect address Schwab returns you to after login, including a colon and four-digit port. Must match byte-for-byte on both sides. Originates in SabrTrader; registered on the Schwab app; final authoritative string read back from the Schwab app record

Step 2 — Create Your Schwab Developer App

The developer portal is where Schwab issues API credentials. It is a distinct system from Schwab.com.

  1. Navigate to developer.schwab.com.
  2. Create a developer profile. This is not your Schwab.com trading login — it is a new username and password used only for API app management. Save it in your password manager.
  3. Sign in and open Dashboard. A new profile shows an empty app list.
  4. Click Create App.
  5. API Products — select Accounts and Trading Production, then click Add Another and select Market Data Production. Both are required. Accounts and Trading grants balances, positions and order placement; Market Data grants real-time and historical quotes. With only one selected the connection will authorize but be functionally crippled.
  6. Order Limit — set the maximum available value, 120 requests per minute. This is the API rate limit for your app; the highest value is appropriate for interactive trading.
  7. App Name — any label you will recognise, e.g. Sabr 2. Purely for your own identification.
  8. Description — optional; may be left blank.
  9. Callback URL — paste the value copied from SabrTrader, then append a colon and a four-digit port number greater than 4000. The walkthrough uses 8445. Example shape: https://127.0.0.1:8445.
  10. Click Create.
Schwab developer portal Create App form showing API product selection, order limit and callback URL fields.
The Create App form at developer.schwab.com. Both API products must be selected — Accounts and Trading Production plus Market Data Production via Add Another — with the Order Limit set to the maximum of 120 and the Callback URL ending in a colon and a four-digit port above 4000.

Why the port matters

A port number identifies which local listener on your computer receives an incoming message. SabrTrader opens a temporary listener on the port you specify so it can capture Schwab's authorization response. If the port is missing, below 4000, or already used by another application, the response has nowhere to land and the connection never completes.

Step 3 — Retrieve App Key, App Secret and the Final Callback URL

Open the newly created app from the developer Dashboard. The app detail page contains everything SabrTrader needs.

Field on Schwab page Maps to in SabrTrader Notes
Client ID App Key Public identifier; safe to store, still treat as private.
Secret App Secret Private credential. Copy exactly, with no leading or trailing spaces.
Callback URL Callback URL Copy the entire string including the port and use it verbatim.
App name, creation date, status — Informational only.
Schwab developer app record displaying Client ID, Secret and registered callback URL values.
The Schwab developer app detail page, where the Client ID (App Key), Secret (App Secret) and the stored Callback URL are shown. Copy the entire callback string, including the port, verbatim into SabrTrader.

Important: the stored callback string may differ from what you typed

Schwab may normalise or render the saved Callback URL slightly differently from your input (scheme, trailing slash, casing). The value shown on the app record is authoritative. Copy it from there and paste it into SabrTrader unchanged. A single differing character produces a redirect URI mismatch and the authorization will be rejected.

Store all three values

Save the App Key, App Secret and exact Callback URL in a password manager. You will need them again if you reinstall SabrTrader, move to a new machine, rebuild a profile, or add a second Schwab profile. Secrets are not always re-displayable after the fact, so capturing them now avoids recreating the app.

Step 4 — Enter Credentials in SabrTrader and Save the Profile

  1. Return to the Control Center → Connections tab and select your Charles Schwab profile in the lower list.
  2. Paste the App Key (Client ID).
  3. Paste the App Secret.
  4. Paste the full Callback URL including the colon and four-digit port, copied from the Schwab app record.
  5. Optionally rename the profile — useful if you maintain multiple Schwab accounts, e.g. Schwab — IRA and Schwab — Individual.
  6. Click Save. This persists the credentials so the setup never has to be repeated.
  7. Close the dialog to return to the Control Center.

Verification before connecting

  • No stray spaces at the start or end of any pasted field.
  • The Callback URL in SabrTrader is character-identical to the one on the Schwab app record.
  • Both API products are listed on the Schwab app.
  • The profile appears in the lower list (created via Add), not merely highlighted in the preset list above.

Step 5 — Authorize the Connection: The Three Browser Pages

Click Connect on the Schwab profile. SabrTrader opens your default browser and starts the OAuth 2.0 authorization flow. OAuth 2.0 is an industry-standard permission model: you log in at Schwab's own site and grant a third-party application limited, revocable access. SabrTrader never sees or stores your brokerage password.

Page 1 — Schwab.com login

  • Enter your regular Schwab brokerage username and password — not the developer.schwab.com credentials.
  • Complete any multi-factor authentication Schwab requests.
  • Tick the agreement checkbox; the Continue button will not proceed without it.
  • Click Continue.

Page 2 — Terms acceptance and account selection

  • Accept the third-party access terms.
  • Select which Schwab account(s) the app may access. Only the accounts you tick here become visible to SabrTrader for balances, positions and order routing.
  • Click Continue.
Schwab authorization page listing brokerage accounts with selection checkboxes and a Continue button.
The account-selection step of the Schwab OAuth flow. Only the accounts ticked here become accessible to SabrTrader for balances, positions and order routing.

Page 3 — Review and Done

  • Review the summary of what you are authorizing and which account(s) are linked.
  • Click Done. Schwab now issues the authorization code and redirects your browser to the Callback URL.

These three screens are Schwab's own security pages. They exist because you are granting an external platform permission to read and act on a live brokerage account — the same pattern used by other API brokers such as Interactive Brokers.

Understanding the 127.0.0.1 Local Browser Callback Warning

Immediately after clicking Done, Chrome (or another browser) will usually display a privacy or security interstitial mentioning 127.0.0.1. This is expected and harmless.

Chrome browser privacy warning interstitial for a redirect to the local loopback address 127.0.0.1.
The Chrome 127.0.0.1 local callback warning shown after clicking Done. The authorization code is being handed to a listener on your own machine, so click through to proceed to 127.0.0.1 and complete the handshake.

What is happening

127.0.0.1 is the loopback address, also called localhost — a reserved network address that points back to your own computer. Traffic sent to it never leaves the machine. SabrTrader listens on the loopback address at your chosen port, so Schwab's authorization code is handed directly from your browser to SabrTrader without traversing the internet.

Why the browser complains

The browser is moving from a public HTTPS page (Schwab) to a local address that has no publicly trusted certificate. Browsers show a generic warning in that situation. It is not a report of an attack, an intercepted request or a compromised page.

Why this is the standard pattern

  • Desktop applications cannot host a public web server, so the OAuth specification defines loopback redirects for native apps.
  • The authorization code is delivered privately to the process on your own machine — a smaller attack surface than routing it via a remote server.
  • There is no external exposure: nothing on the internet can reach your loopback listener.

What to do

  1. Click through the warning (typically Advanced, then Proceed to 127.0.0.1).
  2. A blank page, plain-text response or generic error page may follow. This is the listener acknowledging the handshake.
  3. If nothing appears to happen, refresh once or twice. Then check the Connections tab.

Abandoning the flow at this warning is the most common reason a connection fails to complete. Nothing is broken — the handshake simply never finishes if you close the tab before proceeding.

Step 6 — Verify the Connection

The login sequence ends with a confirmation page. Depending on locale and Schwab's own rendering, this page may appear in another language — the walkthrough shows Dutch. This is a harmless locale artifact and does not indicate an error or a wrong account.

  1. Return to SabrTrader.
  2. Open Control Center → Connections.
  3. Confirm the Charles Schwab profile shows Connected in the connection status indicator.

Reconnecting later

To reconnect after a disconnect or session expiry, select the saved profile and click Connect, or use Advanced → Connect — both trigger the identical three-page browser sequence. Because credentials are already saved, you only re-enter your Schwab.com login; the App Key, App Secret and Callback URL are never retyped.

Token refresh and session expiry

OAuth access is time-limited by design. Schwab issues an access token with a defined lifetime; when it expires the connection drops and must be re-authorized through the browser login. Plan for this: re-authorize before a session starts rather than discovering an expired token with a position open.

Step 7 — Build Your First Schwab Workspace

A workspace is a saved arrangement of SabrTrader windows — charts, DOMs, ladders and panels — associated with your chosen connections. Workspaces can be created, named, saved, closed and switched.

  1. In the Control Center, create or open a named workspace, e.g. Schwab new.
  2. Use the New window / component launcher on the control panel to create a Chart.
  3. In the chart creation dialog, select the asset class: equities, futures or options are all available now that Schwab is authorized.
  4. Select the exchange for the instrument. Exchange selection determines which venue's quotes you receive and where orders route.
  5. Choose a symbol. The walkthrough uses MES — the Micro E-mini S&P 500 futures contract, one tenth the size of ES, a liquid low-notional instrument ideal for learning order flow.
  6. Set the interval — the duration of each bar. The walkthrough uses 3-minute.
  7. Set the days of history — how much past data loads. The walkthrough uses 7 days.
  8. Click Create.
SabrTrader chart of MES futures on a 3-minute interval with the Chart Trader order-entry panel attached.
The working result: a Schwab-fed 3-minute MES futures chart with 7 days of history and Chart Trader docked for order entry, inside a named workspace.

The chart opens with Chart Trader docked to it. Chart Trader is the order-entry panel for placing, modifying and managing orders directly on price — buy/sell, bracket placement, position display and flatten/reverse actions — using the Schwab connection for order routing.

Where to go next

With a live connection and a workspace in place, add order-flow tooling to the chart:

Remember to save the workspace after the layout is arranged so it reopens intact.

Trading and Platform Concepts Explained

Connection and authentication concepts

  • Broker connection is a connection that supplies both market data and order routing for a live account, plus balances and positions.
  • Data feed connection is a connection that supplies prices only, with no trading access. dxFeed is SabrTrader's default data-only feed.
  • OAuth 2.0 is an authorization standard in which you authenticate at the provider's own site and grant a third-party application limited, revocable access without disclosing your password to that application.
  • App Key (Client ID) is the public identifier issued to your developer application so the broker knows which app is requesting access.
  • App Secret is the private credential paired with the App Key that proves a request originates from your application.
  • Callback URL (redirect URI) is the address the broker redirects to after login, carrying the authorization code. It must match exactly on both the broker app record and the platform profile.
  • Loopback address / localhost (127.0.0.1) is a reserved network address that resolves to your own computer; traffic to it never leaves the machine.
  • Port number is the numeric channel identifier appended to the Callback URL after a colon, telling the operating system which local listener receives the response. SabrTrader requires a four-digit value above 4000.
  • Local browser callback warning is the browser interstitial shown when a public HTTPS page redirects to a local address; expected and harmless in the OAuth loopback flow.
  • Third-party app authorization is the explicit consent step in which you approve an external platform to read and act on your brokerage account.
  • Account linking / account selection is the step where you choose which of your accounts the authorized app may access.
  • Token refresh / session expiry is the time limit on OAuth access; when the token lapses the browser login must be repeated to restore the live session.
  • Developer account vs. brokerage login: developer.schwab.com credentials manage API apps; Schwab.com credentials authenticate the account owner during authorization. They are separate and not interchangeable.

API product and limit concepts

  • Accounts and Trading Production API is the Schwab API product granting access to account balances, positions and order placement for live accounts.
  • Market Data Production API is the Schwab API product granting real-time and historical quote access.
  • API order limit / rate limit is the maximum number of API requests per minute permitted to your app. Set it to the maximum available value, 120, for interactive trading.
  • Market data entitlements are the exchange permissions attached to your brokerage account that determine which real-time data you may display. Without an entitlement, data may be delayed or unavailable.

Market and instrument concepts

  • Asset classes are instrument categories. Schwab exposes equities (stocks and ETFs), futures (exchange-traded contracts on indices, energies, metals and rates) and options (contracts conveying the right to buy or sell an underlying).
  • MES is the Micro E-mini S&P 500 futures contract, one tenth the notional size of ES; liquid and low-risk relative to ES, making it a common choice for order-flow practice.
  • Exchange selection is choosing the venue for a symbol so quotes and orders reference and route to the correct market.
  • Order routing is the path an order takes from the platform through the broker to the exchange once a live connection is authorized.

Chart and layout concepts

  • Chart interval is the duration or unit of each bar (e.g. 3 minutes). Smaller intervals show more detail with more noise.
  • History depth is the number of days of past data loaded at chart creation (e.g. 7 days). Deeper history gives more context but takes longer to load and uses more memory.
  • Chart Trader is the order-entry panel docked to a SabrTrader chart for placing, modifying and managing orders directly on the chart.
  • Workspace is a saved arrangement of windows — charts, DOMs and panels — that can be created, named and switched.
  • Modular window layout means SabrTrader components can be moved, docked and resized freely so each trader can build a personal layout.
  • DOM (Depth of Market) is a price ladder showing resting bid and ask liquidity at each price level, used for order-flow trading and precise order entry.

Best Practices

  • Store all three credentials before leaving the Schwab page. Put the App Key, App Secret and the exact Callback URL into a password manager immediately. Secrets are not always redisplayable later.
  • Pick a memorable port above 4000 and reuse it. Using the same port across reinstalls means the Callback URL never changes, so the Schwab app record stays valid.
  • Name developer apps descriptively. If you create separate apps for different machines or accounts, names such as Sabr-Desktop and Sabr-Laptop make it obvious which credentials belong where.
  • Disconnect unused feeds. With dxFeed disconnected, there is no ambiguity about which provider is feeding a chart and no duplicate symbol entries in the browser.
  • Save the workspace after the connection is verified, not before. A workspace saved while disconnected may reopen with empty charts.
  • Keep a note or screenshot of the exact callback string. When troubleshooting a redirect URI mismatch, having the authoritative string to hand removes guesswork.
  • Link only the accounts you intend to trade. Narrow account selection reduces the chance of routing an order to the wrong account.
  • Re-authorize proactively. Run Connect and complete the three-page login before the session begins rather than discovering an expired token mid-trade.
  • Test with a small instrument first. Verify data and order behaviour on a low-notional contract such as MES before trading full-size instruments.
  • Confirm data before analysis. Check that the chart is printing live bars and that the DOM shows moving liquidity before relying on order-flow tools such as the Footprint or Liquidity Heatmap.
  • Never share the App Secret. It is functionally a password for your API app. If exposed, delete the app in the developer dashboard and create a new one.

Common Mistakes

Mistake Consequence Correct behaviour
Using developer.schwab.com credentials on the brokerage login page (or the reverse) Login rejected; users assume the connection is broken Developer credentials are only for creating and viewing apps. Page 1 of the OAuth flow requires your regular Schwab.com trading login.
Forgetting the colon and four-digit port on the Callback URL The authorization response has no local listener to reach; connection never completes Append : plus a four-digit port, e.g. :8445.
Typing a port at or below 4000 Rejected or conflicts with reserved system ports Use a four-digit number greater than 4000.
Callback URL mismatch between the Schwab app and the SabrTrader profile Redirect URI mismatch error; authorization refused Copy the entire string from the Schwab app record and paste verbatim. One differing character breaks it.
Selecting only one API product Either no quotes, or no account/order access Add both Accounts and Trading Production and Market Data Production via Add Another.
Trying to edit preset fields before clicking Add Fields appear locked; users conclude the platform is faulty Highlight the preset, click Add, then edit the new profile in the lower list.
Abandoning the flow at the Chrome 127.0.0.1 warning Authorization code never delivered; status stays disconnected Proceed through the warning. It is a loopback redirect, not a security incident.
Not clicking Save on the profile Credentials lost; the whole entry step must be repeated Save the profile immediately after pasting the three values.
Leaving dxFeed connected alongside Schwab Duplicate symbols and uncertainty about which feed a chart uses Disconnect dxFeed once Schwab is verified, unless you deliberately want both.
Pasting credentials with trailing whitespace Invalid client error despite correct-looking values Paste into a plain-text editor first to strip formatting, then copy the clean string.
Connecting immediately after app creation while it is still pending Authorization fails with an invalid or unknown client error Wait until the app shows an active/approved state in the developer dashboard.
Not selecting the intended account during page 2 Account invisible in SabrTrader; no order routing target Re-run Connect and tick the account during the selection step.

Frequently Asked Questions

Is the developer.schwab.com login the same as my Schwab.com trading login?

No. They are two entirely separate credential sets. The developer.schwab.com profile exists only to create and manage API applications and to view your App Key, App Secret and registered Callback URL. Your Schwab.com username and password authenticate you as the account owner on page 1 of the authorization flow. Using one where the other is required is the single most frequent setup error.

Which Schwab API products do I need to select when creating the app?

Both of them. Select Accounts and Trading Production (balances, positions and order placement) and then use Add Another to also select Market Data Production (real-time and historical quotes). With only Accounts and Trading you can trade but will lack quotes; with only Market Data you can see prices but cannot route orders or view your account.

What port number should I use in the callback URL?

Any four-digit number greater than 4000, appended to the Callback URL after a colon. The walkthrough uses 8445. The exact value does not matter as long as it is above 4000, is not already in use by another application on your computer, and is identical in both the Schwab app record and the SabrTrader profile. Choose one you will remember and reuse it after reinstalls.

Why must the callback URL match exactly in both Schwab and SabrTrader?

The Callback URL is a security control in OAuth 2.0. Schwab will only deliver an authorization code to an address you pre-registered, which prevents an attacker from redirecting your credentials elsewhere. The comparison is exact-string, so a missing port, an extra trailing slash, a different scheme or a single changed character causes Schwab to refuse the request with a redirect URI mismatch. Always copy the string from the Schwab app record, since Schwab may store it in a slightly normalised form.

Is the 127.0.0.1 browser warning a security risk?

No. 127.0.0.1 is the loopback address, meaning your own computer. After you click Done, Schwab redirects your browser to a temporary local listener inside SabrTrader so the authorization code is handed over privately, without traversing the internet. The browser shows a warning simply because a public HTTPS page is redirecting to a local address without a publicly trusted certificate. Click through (Advanced → Proceed to 127.0.0.1) to complete the handshake.

Do I have to repeat the three-page login every session?

Not every session, but periodically. OAuth access tokens are time-limited by design, so when the session expires you must click Connect and complete the three Schwab pages again. Your App Key, App Secret and Callback URL remain saved in the profile and never need re-entry — only the Schwab.com login and consent steps are repeated. Re-authorize before the trading session rather than mid-trade.

Can I trade equities, futures and options through one Schwab connection?

Yes. A single authorized Schwab connection covers all three asset classes, subject to the permissions on your brokerage account. In SabrTrader's symbol and exchange browser you select the asset class, then the exchange, then the symbol. Schwab is listed under the Equities category in the Connections tab only because that is its primary grouping; its coverage is broader.

Do I need to disconnect DXFeed before using Schwab?

It is not technically required — the two can run simultaneously — but it is recommended. dxFeed is the data-only feed SabrTrader ships pre-connected to so new users see prices immediately. Leaving it connected means the same instrument may appear under two provider/exchange combinations, creating duplicate data and uncertainty about which feed a chart is using. Disconnecting dxFeed after Schwab is verified gives a clean, unambiguous setup.

Where are my App Key and App Secret stored, and can I recover them?

They are issued and displayed on your app's detail page in the developer.schwab.com Dashboard, and stored inside the SabrTrader Charles Schwab connection profile after you click Save. Secrets are not always redisplayable indefinitely, so copy all three values (App Key, App Secret, exact Callback URL) into a password manager as soon as the app is created. If the secret is unrecoverable, delete the app and create a new one, then update the SabrTrader profile.

What does 'redirect URI mismatch' mean and how do I fix it?

It means the Callback URL SabrTrader sent with the authorization request does not exactly equal the one registered on your Schwab developer app. To fix it: open the app in the developer Dashboard, copy the stored Callback URL in full including the colon and four-digit port, paste it into the Callback URL field of your Charles Schwab profile in SabrTrader with no added spaces, click Save, then click Connect again.

Can I connect more than one Schwab account?

Yes, in two ways. During page 2 of the authorization flow you can select multiple accounts to link under one connection. Alternatively you can create multiple Charles Schwab profiles in the Connections tab (each created with Add and given a descriptive name) if you want to keep credentials or accounts strictly separate. Only accounts you explicitly select during authorization become visible to SabrTrader.

Why does the final confirmation page appear in another language?

It is a locale artifact of Schwab's own confirmation page — the walkthrough shows it rendering in Dutch. It has no effect on the connection and does not indicate an error, a wrong account or a wrong region. Ignore the language and verify success in SabrTrader instead: the Charles Schwab profile in the Connections tab should show Connected.

Do I need Schwab market data entitlements for real-time quotes?

Yes. Market data entitlements are exchange permissions attached to your brokerage account, not to SabrTrader. Selecting the Market Data Production API product grants your app technical access, but which exchanges you may display in real time depends on the entitlements Schwab has enabled for your account. Without the relevant entitlement, data may be delayed or absent even though the connection reports Connected.

Can I place orders from the chart once Schwab is connected?

Yes. Charts created on an authorized Schwab connection open with Chart Trader docked — the order-entry panel used to place, modify and manage orders directly on price, including flattening a position. Orders are routed through Schwab to the exchange. Verify you are on the intended account and instrument before sending live orders.

What is the difference between a broker connection and a data feed connection?

A broker connection such as Schwab supplies market data and order routing, plus account balances and positions for a live account. A data feed connection such as dxFeed supplies prices only, with no trading access and no account information. Data feeds are useful for learning the platform, building layouts and configuring indicators; a broker connection is required to trade.

Why are the Schwab fields greyed out when I click the preset?

Because a highlighted preset in the Connections tab is a read-only template. Its App Key, App Secret and Callback URL fields stay locked until you click Add, which creates an editable Charles Schwab profile in the lower list. Enter your credentials there, then click Save.

How long does the whole setup take?

About ten minutes end-to-end for a first-time user, and it is a one-time process. Roughly: two minutes to create the SabrTrader profile and copy the Callback URL, four minutes to create the developer app and collect credentials, two minutes to paste and save, and two minutes for the three-page authorization. Schwab app approval may add waiting time before the first successful connection.

What is MES and why is it used in the walkthrough?

MES is the Micro E-mini S&P 500 futures contract, one tenth the notional size of the ES contract. It is highly liquid with a small tick value, so it is a low-risk instrument for verifying a new connection, learning order entry and practising order-flow reading before scaling into larger contracts.

What does the order limit of 120 mean?

It is the API rate limit for your developer app — the maximum number of API requests per minute Schwab will accept from it. Setting it to the highest available value, 120, gives interactive trading and charting the widest headroom. A lower limit can cause throttled quotes or delayed order acknowledgements.

Can I use this Schwab connection for prop-firm futures accounts?

No. A Schwab connection authorizes your Schwab brokerage account only. Prop firm evaluation and funded futures accounts typically run on Rithmic infrastructure and require a separate connection profile — see Connecting SabrTrader to Rithmic.

Troubleshooting

Clicking Connect does nothing and no browser window opens

Confirm the profile was created with Add and then Saved — an unsaved profile has no credentials to send. Check that the Callback URL contains a colon and four-digit port above 4000, and that no other application is already using that port (change to a different four-digit port in both the Schwab app record and the SabrTrader profile if necessary). Verify a default browser is set on the operating system, then click Connect again, or use Advanced → Connect.

'Redirect URI mismatch' or invalid redirect error during authorization

The Callback URL differs between the two systems. Open the app in the developer.schwab.com Dashboard, copy the entire stored Callback URL including the colon and four-digit port, paste it verbatim into the Charles Schwab profile in SabrTrader, remove any leading or trailing spaces, click Save, then Connect. Schwab may render the saved string slightly differently from what you typed; the app record is authoritative.

Blank page or error page after clicking Done

This usually means the loopback handshake is in progress or the page rendered before the listener responded. Refresh the page once or twice. If it still fails, close the browser tab, return to the Connections tab and click Connect to restart the flow. Confirm you clicked through the 127.0.0.1 warning rather than backing out of it.

'Invalid client' or authentication rejected despite correct-looking credentials

Two likely causes. First, whitespace: paste the App Key and App Secret into a plain-text editor, confirm there are no leading or trailing spaces or line breaks, then re-copy and re-paste into SabrTrader and Save. Second, app status: a newly created Schwab developer app may still be pending approval. Check the app's status in the developer Dashboard and retry once it is active.

Connection shows Connected but no market data appears on charts

Confirm both API products are enabled on the Schwab app — without Market Data Production there are no quotes. Then check your market data entitlements: real-time exchange permissions are attached to your brokerage account and may need to be enabled or subscribed with Schwab. Finally, verify you selected the correct exchange for the symbol in the symbol browser; an instrument requested on the wrong venue will not tick.

No account is visible in SabrTrader after connecting

The account was not ticked during the account-selection step on page 2 of the authorization flow, or Accounts and Trading Production was omitted from the developer app. Add the missing API product if needed, then click Connect again and explicitly select the account(s) you want linked before clicking Continue and Done.

Connection dropped overnight or between sessions

Expected behaviour: OAuth access tokens expire. Select the saved Charles Schwab profile and click Connect (or Advanced → Connect) to re-run the three-page Schwab login. Credentials remain stored, so only the Schwab.com login and consent steps are repeated. Do this before the session begins rather than while a position is open.

Final confirmation page appears in a foreign language

Harmless locale artifact of Schwab's own page. Ignore the language and verify success in SabrTrader: the Charles Schwab profile in the Connections tab should show Connected.

Preset fields (App Key, App Secret, Callback URL) cannot be edited

The upper preset list is read-only. Highlight Charles Schwab and click Add. A new editable Charles Schwab profile appears in the lower list; enter the credentials there and click Save.

Charts show unexpected symbols or duplicate instruments

Both dxFeed and Schwab are likely connected, so instruments appear once per provider with different exchange labels. Disconnect the feed you are not trading on in the Connections tab, then recreate the chart and confirm the exchange in the symbol browser.

Orders rejected from Chart Trader while data is streaming normally

Streaming data proves Market Data access, not trading access. Confirm Accounts and Trading Production is on the developer app, that the intended account was linked during authorization, that the correct account is selected in Chart Trader, and that the account has the permissions and buying power for the instrument (for example futures or options approval on the Schwab side).

Nothing above resolves the problem

Collect the exact error text, a screenshot of the Schwab app record's Callback URL (with the secret redacted), and a screenshot of the SabrTrader profile fields, then contact SabrTrader support. Because the failure is almost always a mismatch in one of the three stored values or a missing API product, having both sides visible resolves most cases quickly.

Glossary

Account linking
The step during authorization where you select which of your brokerage accounts the connected application may access. Only selected accounts become visible to the platform for balances, positions and order routing.
Accounts and Trading Production API
The Schwab API product that grants access to account balances, positions and order placement for live brokerage accounts. Required for order routing from SabrTrader.
API rate limit
The maximum number of API requests per minute a developer application is permitted to send. On the Schwab developer app this is the Order Limit field; set it to the maximum available value of 120 for trading use.
App Key
The public identifier a broker issues to a developer application so the broker can recognise which application is requesting access. Shown as Client ID on the Schwab developer app page.
App Secret
The private credential paired with an App Key that proves an authorization request genuinely originates from the registered application. It functions as a password and must never be shared.
Asset class
A category of tradable instrument. The Schwab connection exposes equities (stocks and ETFs), futures (exchange-traded contracts) and options (contracts conveying the right to buy or sell an underlying).
Broker connection
A connection that supplies both market data and order routing for a live trading account, along with balances and positions. The Charles Schwab connection in SabrTrader is a broker connection.
Callback URL
The address a broker redirects the browser to after successful login, carrying the authorization code. It must match exactly between the broker's app record and the platform's connection profile, and in SabrTrader includes a colon plus a four-digit port above 4000.
Chart interval
The duration or unit of each bar on a chart, such as 3 minutes. Smaller intervals reveal more detail with more noise; larger intervals smooth price at the cost of granularity.
Chart Trader
The order-entry panel docked to a SabrTrader chart for placing, modifying and managing orders directly on the chart.
Connections tab
The area of the Control Center containing SabrTrader's 57 preloaded broker and data-feed configurations, the user's saved connection profiles, and the Add, Save, Connect, Disconnect and Advanced controls plus the connection status indicator.
Control Center
The primary SabrTrader window that hosts platform-wide functions: the Connections tab, workspace management and the launcher for new components and windows.
Data feed connection
A connection that supplies market prices only, with no order routing or account access. Suitable for learning the platform, building layouts and configuring indicators.
Delayed data
Exchange prices delivered with a time lag, available without a paid data subscription; suitable for learning and configuration, not live trading.
Developer account
A developer.schwab.com profile used solely to create and manage API applications and view their credentials. It is a separate credential set from the Schwab.com brokerage login used to trade.
DOM
Depth of Market — a price ladder showing resting bid and ask liquidity at each price level, used for order-flow trading and precise order entry.
dxFeed
The market-data feed SabrTrader is connected to out of the box, providing data across supported markets so new users see prices immediately. It provides prices only and cannot route orders.
Exchange selection
Choosing the venue for a symbol so that quotes reference and orders route to the correct market. Required when creating a chart or subscribing to an instrument.
History depth
The amount of past data loaded when a chart is created, expressed in days. Greater depth provides more context but increases load time and memory use.
Local browser callback warning
The privacy or security interstitial a browser displays when a public HTTPS page redirects to a local loopback address. It is expected and harmless in the OAuth loopback flow and must be clicked through to complete the handshake.
Loopback address
A reserved network address, commonly 127.0.0.1 or localhost, that resolves to the local computer. Traffic sent to it never leaves the machine, which is why it is used to deliver OAuth authorization codes privately to a desktop application.
Market data entitlements
The exchange permissions attached to a brokerage account that determine which real-time data a platform may display. Without the relevant entitlement, data may arrive delayed or not at all even on an authorized connection.
Market Data Production API
The Schwab API product that grants real-time and historical quote access. Required for charts and order-flow tools to display Schwab prices.
MES
The Micro E-mini S&P 500 futures contract, one tenth the size of ES; a liquid, low-notional instrument commonly used for learning a platform and practising order-flow reading.
Modular window layout
SabrTrader's design principle that components can be moved, docked and resized freely so each trader can build a personal layout.
OAuth 2.0
An industry-standard authorization framework in which a user logs in at the provider's own site and grants a third-party application limited, revocable access to their account without disclosing their password to that application.
Order routing
The path an order takes from the trading platform through the broker to the exchange after a live connection is authorized.
Port number
A numeric channel identifier appended to a Callback URL after a colon, telling the operating system which local listener should receive an incoming response. SabrTrader requires a four-digit port greater than 4000.
Third-party app authorization
The explicit consent step in which an account holder approves an external platform to read data from and act on their brokerage account. In the Schwab flow this spans the terms acceptance, account selection and review screens.
Token refresh
The renewal of time-limited OAuth access. When an access token expires the connection drops and the browser login sequence must be repeated to restore a live session.
Workspace
A saved arrangement of windows — charts, DOMs and panels — that can be created, named and switched in SabrTrader.