How to track one portfolio across several exchanges and a wallet

Connecting three exchanges and a wallet takes ten minutes. A total that matches what you own means knowing what each balance call leaves out.

Connect each exchange with a read-only key to a workspace that reads balances, and add the wallet as a watched address. Altrady covers three exchanges and a wallet on its cheapest plan; Cryptohopper's unlisted free plan covers the exchange half, spot only. The total will be short unless you check three things: every sub-account on each exchange, every chain and token in the wallet, and the coins in transit between them.

The short way

If you hold coins on three exchanges and one self-custody wallet, and you want a single number in your own currency without writing anything, use Altrady. Its Basic plan, 28 euro a month or 20 billed annually, connects three exchanges and up to five trading accounts on them, and its portfolio also takes read-only wallet addresses — no API key and no private key, just the address.

On each exchange, create a new API key for this and nothing else:

Permissions:   Read only. Trading off, withdrawal off.
IP access:     Restricted, if the exchange and the tracker both support it.
Label:         portfolio-tracker (so you know which key to revoke later)

Altrady itself requests read and trade permission and never withdrawal, because it is a trading workspace first; if a tracker will not accept a key without trading, decide whether that is a key you want to hand over before pasting it. Then add the wallet address under the portfolio's wallets, and compare the first total against each exchange's own account overview before you trust it. The section on where this breaks is about why the two will not match the first time.

What the options are

A workspace that reads exchanges and wallets. Altrady is the one in this catalogue that does both halves on its cheapest tier. The exchange half covers the nineteen venues on its exchanges table; the wallet half reads BTC, LTC, ETH, BSC, TRX, XRP and EGLD addresses, picks up ERC20 and BEP20 tokens automatically on the two EVM chains, and reads only the native asset on the rest. Keys are encrypted on your device under a five-word Vault password before they are stored on Altrady's servers — lose the five words and every connection has to be rebuilt from new keys.

An older workspace, if your venues are on its list. Coinigy builds a portfolio from your API keys and has done since long before most of these products existed. Of the 38 exchanges on its table, 20 report balances, and wallet tracking is unlimited from Pro Trader at 18.66 dollars. Read the list before you subscribe: FTX International is still on it, there is no Hyperliquid and no Bitget, and the vendor's own changelog ends in December 2024. Its Google Sheets add-on, which pulled balances into a spreadsheet, calls an API version that now answers that it is no longer available.

A free plan for the exchange half. Cryptohopper has a free tier called Pioneer that the pricing page does not show. It connects every exchange the platform supports — twelve, from Binance and Coinbase Advanced to Kraken and OKX — for manual trading and portfolio tracking. It is spot only, by the vendor's own statement, and there is no wallet tracking, so the self-custody half of the portfolio stays somewhere else.

Your own keys and your own total. If none of the workspaces lists one of your venues, or you would rather not hand a key to anyone, CCXT reads balances from every exchange it supports through one method:

import ccxt

venues = {
    'binance': {'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_API_SECRET'},
    'kraken': {'apiKey': 'YOUR_API_KEY', 'secret': 'YOUR_API_SECRET'},
}
for name, keys in venues.items():
    exchange = getattr(ccxt, name)(keys)
    if exchange.has['fetchBalance']:
        totals = exchange.fetch_balance()['total']
        print(name, {coin: amount for coin, amount in totals.items() if amount})

That gives you quantities, not money. Pricing them, and adding the wallet, is the part you then write yourself — which is the work the workspaces above are charging for.

Where this breaks

One exchange account is several accounts. This is the most common reason a tracker's total is lower than the exchange's own figure. On Bybit, the wallet-balance request accepts one account type, UNIFIED, and the documentation says it outright: "To get Funding wallet balance, please go to this endpoint" — a different request, which also needs a list of coins named in advance when you ask it about the unified account. On Binance the funding wallet has its own endpoint again, and a separate wallet-balance call returns a list of wallets, each valued in BTC unless you ask for another quote asset. A tracker that reads only the trading account is not wrong about what it read. It is silent about what it did not, and a coin sitting in a funding, earn or sub-account wallet simply is not in the total.

A wallet tracker reads balances on some chains, not your positions. Altrady's list is seven chains, with tokens recognised on two of them. A token on Arbitrum, Base or Solana is not read at all, a token on Tron or the XRP Ledger shows only the native coin, and anything you have deposited into a contract — a liquidity pool, a lending market, a staking contract — is no longer a balance at your address. It is a claim, recorded by the contract, and a balance reader shows either nothing or a receipt token with no price attached.

Derivatives are not balances either. On a perpetuals account, the number that matters is margin plus unrealised profit or loss, and it moves every second. Cryptohopper is spot only, so a perp position on Bybit or OKX does not exist as far as Pioneer is concerned, and Bybit's unified account holds spot coins and futures margin in the same balance, which needs a tool that knows which is which. Check that the number your tracker shows for a derivatives account is equity rather than wallet balance.

Coins in transit are in neither place. While a withdrawal is pending, the source exchange may report it in its own column — Binance's wallet-balance response carries a withdrawing figure next to free and locked — and the destination has not credited it yet. A total taken at that moment is short by the amount moving, and a total that adds the source's pending figure to an early credit at the destination counts it twice. Move funds, then wait for the deposit to land before reading the total.

Every tracker prices with its own feed. Three exchanges quote three slightly different prices for the same coin, a wallet token may have no exchange price at all, and the tracker picks one source for all of them without saying which. Binance's own wallet-balance call values everything in BTC unless told otherwise. For a check on what you own, that is noise; for a figure you will report anywhere, it is a choice somebody has to make, and the tracker made it for you.

Venue lists rot, and a closed exchange still has your history. BitMEX ceased trading on 23 September 2026; Coinigy still lists FTX. An account on an exchange that has stopped operating drops out of every tracker at once — so export its history while you still can, as the how-to on exporting exchange trade history explains.

The key is on someone else's server. Every workspace here holds your exchange keys on its own infrastructure, because that is how it keeps reading while you are logged out. A key that can only read is a key worth little to whoever finds it, which is the whole case for creating one per tracker with trading and withdrawal switched off.

If you outgrow this

If the problem is the wallet half — DeFi positions, many chains, tokens a workspace does not recognise — the trading workspaces in this section are the wrong tool, and the on-chain side of the catalogue is the place to look: on-chain analytics.

If the problem is that the total has to be defensible — for tax, an auditor or a partner — a balance is the wrong record. What you need is the history of every trade, deposit and withdrawal on every venue, which is a different job and a different page: export your exchange trade history.

If the problem is that you also want to trade from the same screen, Altrady and Coinigy are both trading workspaces first, and the rest of that shelf is at crypto trading terminals.

The tools named above

In the order this page puts them in, which is an editorial judgement and not a ranking anyone paid for.

  1. Altrady

    Exchanges and read-only wallet addresses in one portfolio, three exchanges on the 28-euro Basic plan. Wallets read seven chains, tokens on two.

    Multi-exchange trading workspace — smart orders, scanners, bots and a journal.

    €10/moFree tier

  2. Coinigy

    Balances from 20 of its 38 venues, wallet tracking on Pro at 18.66 dollars. Check its venue list first — no release since December 2024.

    One of the oldest multi-exchange workspaces — 38 venues charted, 13 of them traded.

    $18.66/moFree tier

  3. Cryptohopper

    The unlisted free Pioneer plan connects every supported exchange for manual trading and portfolio tracking. Twelve venues, spot only, no wallet.

    Hosted spot bots built in forms, one bot per subscription, with a marketplace attached.

    $29/moFree tier

  4. CCXT

    One fetchBalance call over every venue with your own read-only keys, if you would rather keep the keys and the total in your own script.

    One MIT client for 104 crypto exchanges, 76 of them over websocket.

    FreeFree tierOpen source

FAQ

Is there a free way to see three exchanges and a wallet on one screen?

Not one this catalogue can point to with confidence. Cryptohopper's free Pioneer plan tracks a portfolio across every exchange it supports, but it is spot only and has no wallet tracking. Coinigy's free Starter plan monitors connected exchange accounts, with wallet tracking limited until Pro. Altrady drops an expired trial onto a free tier whose feature list it does not publish. The cheapest documented answer to both halves is Altrady Basic at 28 euro a month.

Do I have to give a portfolio tracker a key that can trade?

A portfolio needs read permission and nothing else, so create the key with trading and withdrawal switched off, and IP-restricted where the exchange allows it. Whether a given product accepts a key without trade permission is the first thing to check, because these are trading workspaces first. Altrady says it asks only for read and trade and never for withdrawal; Coinigy requires two-factor authentication before trading can be switched on.

Why is the tracker's total lower than the exchange's own figure?

Usually because the tracker read one account and the exchange's figure covers several. On Bybit the wallet-balance call answers only for the unified trading account, and the funding account is a separate request. On Binance the funding wallet has its own endpoint. Earn and sub-account balances live in yet other places. A tracker that does not ask for each one reports a smaller number, and does not say so.

Will the wallet half show my DeFi positions?

Not in anything this page names. Altrady's wallet tracking reads balances — native assets on seven chains, plus ERC20 and BEP20 tokens on Ethereum and BSC. A liquidity-pool position, a lending deposit or a staked token is a claim held by a contract rather than a balance at your address, and a balance reader either misses it or lists a receipt token with no price. That part of a portfolio needs an on-chain tool, not a trading workspace.

Sources

  1. Get Wallet Balance (V5) — accountType UNIFIED — Bybit, read
  2. Get All Coins Balance (V5) — Bybit, read
  3. Funding Wallet (USER_DATA) — Binance, read
  4. Query User Wallet Balance (USER_DATA) — Binance, read

The catalogue next door

This page names a handful of products. The rest of them are in Crypto Trading Terminals, each filled in against the same schema, with the fields to narrow it yourself.

Last updated . Corrected in place — an endpoint that moves is a bug on this page, not a new post.

Report an error on this page

Quote the line and say what it should be.

The vendor’s page, filing or documentation that says otherwise.

Only if you want to hear back. Never published.

Read by a person. It fixes a fact and moves nothing else.