Tax

Built for the country you actually file in.

Not a US product with a currency toggle. A Canadian tax engine that knows a TFSA from an RRSP, what the superficial loss rule does to a December sale, and when the CRA starts wanting a T1135.

What nobody tells you

Your US dividends are being taxed in a country you don’t live in.

The IRS withholds 15% of every US dividend before it reaches you. Hold those shares in an RRSP and the Canada–US treaty makes that zero. Hold them in a TFSA and it is gone — withheld, and with no Canadian tax on the income, there is nothing to claim a credit against.

Same shares. Same company. Same you. Different account.

Sitting in
Withheld every year
−$375
What that costs you over 20 years
−$15,373

because withheld dollars don’t compound either

Assumes a flat 15% treaty withholding rate, dividends paid evenly across the year, and that the withheld dollars would otherwise have compounded at 7% a year for 20 years. It illustrates one rule in isolation — an FHSA behaves like the TFSA here, and a non-registered account is withheld too but generally recoverable through the foreign tax credit. Your real numbers depend on your holdings; the app computes this per position from your actual ledger, not from a slider.

CompoundWise finds every position this applies to, tells you which account it belongs in, and scores how well your whole portfolio is placed — out of 100.

Same shares. Different account.

Move it once. Keep it forever.

TFSA
15% withheld, unrecoverable
RRSP
treaty-exempt
VOO
US dividend ETF
31
What that move is worth over 20 years
$0

The withheld dividends, and the compounding they never got to do.

Assumes $375 of US dividends withheld a year at the 15% treaty rate, compounding at 7%. The app computes this from your own positions, not from an example.

Where a holding belongs

The account is worth as much as the pick.

Same shares, same company, same you — and a different answer at the end of the year depending on which account they sat in.

Asset location, scored

Every position gets a mark out of 100 for being in the right account.

US dividend payers in a TFSA score low. High-growth in a TFSA scores high. Canadian dividend payers in a taxable account score high.

US withholding drag

Finds the US dividend stocks sitting in the account that quietly loses 15% of them.

15% IRS withholding in a TFSA, FHSA or non-registered account. An RRSP is exempt under Article XXI of the treaty.

Capital gains, before you sell

Shows the tax bill waiting if you sold everything today.

Gain × 50% inclusion × your marginal rate. The rate comes from your province and income band on CRA's 2026 brackets, not a national average.

Tax-neutral rebalancing

Warns you when a rebalance would cost tax, and shows a cheaper route.

Quantifies the gain a plan would realise and points at idle cash or this year's contribution instead.

Not a US product with a currency toggle. A Canadian tax engine, with the CRA rates and limits kept by tax year in one config file — so when a threshold moves, one number moves, and everything downstream moves with it.

Portfolio placement score

Move a holding. Watch what it costs.

71/100
VOOUS dividend ETF
31

Withheld at 15% and unrecoverable — no Canadian tax on the income to credit it against.

SHOPHigh growth, no dividend
94

Maximum upside sheltered permanently, and no dividend means no withholding to waste.

ENBCanadian eligible dividend
88

The eligible dividend tax credit only exists here. Anywhere else it is thrown away.

Illustrative scores on three representative holdings. The ordering is the real rule; the app scores every position you actually own, against the account it is actually in.

C$87,400of C$100,000
foreign cost basefiling threshold

T1135, before the CRA asks

Tracks the cost base of your foreign holdings, in CAD, against the C$100,000 filing threshold. The banner turns red when you cross it — and comes back next tax season once you've filed.

30-day window · blockedsafe 12 Oct

The superficial loss rule, with a date

Sell at a loss and buy back inside 30 days and the CRA denies the loss. The harvest panel doesn't just warn you — it names the exact day the repurchase becomes safe.

FHSA$6,400 of $8,000
TFSA$5,000 of $7,000
RRSP$12,000 of $33,810

Contribution room that counts deposits

Against the statutory caps — FHSA $8,000/yr and $40,000 lifetime, RESP $50,000, RDSP $200,000. It tracks the deposits you record, never market value, so a TFSA that grew is never falsely flagged as an over-contribution.

14 MarTD+$2,140
02 JunBAM−$610
21 NovCNR+$4,905
→ fills Schedule 3

A year-end summary for filing time

Every realized disposition for the year — date, ticker, shares, proceeds in CAD, gain or loss — totalled, with the taxable half and the estimated tax. One click exports it as a CSV to fill Schedule 3 from — check each line against your broker's T5008.

Example account figures, illustrative. The thresholds and caps are the 2026 statutory figures the engine carries.

Staying on the right side of it

The rules that cost people money quietly.

The superficial loss rule

Warns you when the CRA won't let you claim a loss because you rebought too soon.

±30 days. It names the exact day the repurchase becomes safe — and re-flags an older sale if a conflicting buy is added later.

T1135 foreign property

Warns you before you cross the line where the CRA wants an extra form.

C$100,000 of foreign cost base. Mark it filed and the banner returns next tax season.

Contribution room

Keeps score of how much room is left in each registered account.

FHSA $8,000/yr and $40,000 lifetime, RESP $50,000, RDSP $200,000 — counted from deposits you record, never market value.

Room that pools correctly

Two TFSAs share one pool, and so do a personal and a spousal RRSP.

Contributions pool per room key, so a second account never doubles your limit.

Year-end summary

A ready-made list of your sales for filing time.

One-click CSV of every sale with proceeds and gain in CAD, the taxable half and estimated tax totalled — to fill Schedule 3 from, checked against your broker's T5008.

Constants you can check

The tax rates and limits live in one config file, keyed by the tax year they apply to. Source notes cover the brackets and some other sections — not yet every number.

One config file, served to every app. A new tax year is a config change, not a code change.

Not the 4% rule. Annuity math on the pot your balances are projected to reach at retirement, then a Monte Carlo simulation from that same pot at your spending target — success odds, how often the sustainable spend itself lasts, the spend that lasts in 90% of simulations, the tough and kind endings, and the age the money typically runs out on the paths that fail. Volatility is blended from your actual asset mix. The seed is fixed, so the same inputs always give the same answer.

bridge yearsbefore CPP / OAS startkind · 10th bestmediantough · depletes at 846095
About half
of simulated lifetimes last at the sustainable spend
$71,400
sustainable spend, today’s dollars — the middle case
5
bridge years to carry alone

Take it at 60, or wait until 70?

The answer is a date, not an opinion. Move the sliders.

When do you start CPP?
You would receive
$1,100
per month, in today’s dollars
0.0% vs starting at 65
Breakeven

This is the reference case. Move the slider to compare against it.

CPP adjustment factors are the statutory ones — 0.6% off per month before 65, 0.7% on per month after — applied to the estimate you enter, in today’s dollars, ignoring tax and the OAS clawback. The app runs the same factors against your real Service Canada figure and carries both through the retirement plan.

OAS clawback
15¢ per $1 above $95,323

The 2026 recovery threshold. The plan tells you when your own income crosses it, and what that costs.

The forced RRIF
5.28% minimum at 71

If the mandatory minimum on your registered balance would push you over the clawback line, the plan says so — the classic case for melting the RRSP down early.

Drawdown order
Non-registered → RRSP/RRIF → TFSA

Fill the low brackets, shrink the future forced minimum, and leave the TFSA for last — its withdrawals never count toward the clawback.

Illustrative figures. Every constant above is read from the engine’s one tax config, and every formula is locked by tests that run on each change.