Skip to content
Knowledge base

How Brokerage Sync Works

Understand how Luum connects to your brokerage, what data is pulled, how often it syncs, and what read-only access means in practice.

Luum connects to your brokerage through Snaptrade, a regulated open-finance platform. This article explains what data is pulled, how often it syncs, and what read-only access means in practice. For the steps to set a connection up, see connecting a brokerage.

How the connection is established

Luum never stores your brokerage login credentials. When you connect a brokerage, you are redirected to a Snaptrade-hosted OAuth flow operated by your broker. You authenticate directly with the broker. Snaptrade receives a delegated access token, and Luum receives only an opaque reference to that token. Your credentials are encrypted at rest with AWS KMS on Snaptrade's infrastructure and are never transmitted to Luum servers.

What data is pulled

Luum requests three categories of data from your brokerage:

  • Positions, current holdings including symbol, quantity, current market value, and average cost as reported by the broker.
  • Transactions, historical buy, sell, dividend, and contribution events used to compute ACB, capital gains, and contribution room.
  • Account balances, total cash and market value per account, used to calculate net worth and allocation breakdown.

Luum does not pull: watchlists, pending orders, margin balances, options positions, or any personally identifiable information from the broker beyond what is needed for account identification. Luum also cannot execute trades, place orders, or initiate transfers on your behalf.

Sync frequency

Your brokerage data syncs automatically in the background every hour. Market data (live prices and candles) updates on a separate schedule: quotes refresh every few minutes during market hours, and end-of-day prices settle overnight. The timestamp of the last successful sync is shown in Data → Connected Accounts.

You can trigger a manual re-sync at any time from Data → Connected Accounts with Check for updates on your brokerage connection.

Initial sync

When you first connect a brokerage, Luum pulls up to 24 months of transaction history (subject to what your broker makes available). Initial sync typically takes 1–2 minutes. During this time your dashboard will show a loading state. Once complete, positions, ACB, and contribution room populate automatically.

What "read-only" means

The OAuth scope Luum requests is strictly read-only. Snaptrade enforces this at the API layer. There is no mechanism for Luum to place an order, transfer funds, or modify any account setting. You can revoke Luum's access at any time either from within your broker's OAuth applications settings page or from Data → Connected Accounts → Disconnect in Luum.

Supported brokerages

Seven Canadian institutions are reachable through Snaptrade: Wealthsimple, Questrade, TD Direct Investing, BMO InvestorLine, CIBC Investor's Edge, Webull Canada, and Interactive Brokers. Around thirty non-Canadian brokerages are supported as well, and the rolling list on the home page names every one of them.

Snaptrade does not reach RBC Direct Investing, Scotia iTRADE, National Bank Direct Brokerage, Qtrade or Desjardins. That is two of the Big Five, and it is stated plainly because a long list of supported names makes an absence harder to notice rather than easier, a reader who cannot find RBC is more likely to assume they looked wrong than that it is missing.

If your brokerage is not on the list, the account is still trackable. Every plan accepts a CSV or spreadsheet upload, which is the same ingestion path a connected account uses once the data arrives.

Two details worth knowing about specific connections:

  • Interactive Brokers connects via its Flex Query report feed rather than a live API connection, so data arrives on the report's schedule.
  • A brokerage can be temporarily degraded at Snaptrade's end without being removed from the list, in which case a sync may lag or fail while the connection itself stays valid.

The list inside the connection flow is generated live and is authoritative if it ever disagrees with this page.


Having trouble with a sync? See the troubleshooting guide →