The rule the broker cannot solve for you
Canadian adjusted cost base for identical property is pooled across the taxpayer’s taxable accounts. That is the core reason broker book values diverge from reality when the same security exists at more than one brokerage.
If you buy shares of the same ETF in two non-registered accounts, those purchases contribute to one weighted-average ACB pool. A later sale from one brokerage still consumes that pooled ACB, not a broker-local number.
What belongs in the pool
The pool includes taxable accounts for the same taxpayer. The pool does not include registered accounts such as RRSP, TFSA, FHSA, or RESP.
That distinction is why myCostBase asks you to classify accounts during setup before it calculates anything.
A worked example
You buy 100 shares of an ETF at $20.00 through Brokerage A (ACB: $2,000, or $20.00/share). Later, you buy 100 more shares of the same ETF at $24.00 through Brokerage B. Those shares don’t get their own $24.00 ACB — they join the same pool: total ACB becomes $2,000 + $2,400 = $4,400 across 200 shares, or $22.00/share pooled.
If you then sell 60 shares from Brokerage A at $28.00, the ACB consumed is 60 × $22.00 = $1,320 — the pooled per-share figure, not the account-level $20.00 amount. If Brokerage A does not have the outside history, its T5008 Box 20 may reflect only the information available to it. Reconcile Box 20 rather than assuming it is either complete or incorrect.
Why transfers matter so much
Broker-to-broker transfers often break cost basis continuity. The receiving broker may set the book value to market value or leave the trail incomplete. For ACB purposes, that is not good enough.
myCostBase treats transfer events explicitly and expects the original basis to carry forward. If it is missing, the product should warn you instead of pretending the transfer created a fresh cost base.
What myCostBase shows in the ledger
When the pooled calculation is working correctly, the ledger lets you inspect:
- share count before and after each event;
- total ACB before and after each event;
- ACB per share after each event;
- which account produced the event;
- the explanation for why the row changed the pool.
That is how you verify the math rather than trusting it as a black box.
Common mismatch pattern
One of the most common T5008 mismatches is a sale from one brokerage where the broker used only its own local book value, while myCostBase uses the true pooled ACB from multiple taxable accounts. That is not a bug in the product. It is one of the main reasons the product exists.
If foreign-currency trades are involved too, continue to USD and FX Conversion for Capital Gains.