How to Use Bank of Canada FX Rates for Canadian Capital Gains

myCostBase
7 min read

When a Canadian investor buys or sells a U.S.-listed security in a taxable account, both the adjusted cost base and the proceeds of disposition must be reported in Canadian dollars on Schedule 3. The conversion is not a suggestion — it is required. And the rate you use matters more than most investors realize.

The standard reference for this conversion is the Bank of Canada daily exchange rate, specifically the FXUSDCAD rate published each business day. This post covers how to find that rate for a past transaction date, how to handle days when no rate is published, what to do when your broker used a different rate, and how the conversion arithmetic actually works.

Why the Bank of Canada rate specifically

The CRA does not mandate a single exchange rate source, but the Bank of Canada daily rate is the most widely accepted and most defensible choice. It is publicly available, covers decades of history, and is used by most Canadian tax software and financial institutions. If the CRA ever questions your conversion, pointing to the Bank of Canada rate for the transaction date closes the issue efficiently.

Other rates — your bank’s spot rate on the day, a credit card conversion rate, or a broker’s internal rate — can also be used with documentation. But if they differ materially from the Bank of Canada rate, you may need to justify the variance. The simplest path is to use the Bank of Canada rate from the start.

How to find the rate for a past transaction date

The Bank of Canada publishes its exchange rates through the Valet API and through the exchange rates page on their website. For historical lookups:

  1. Go to the Bank of Canada exchange rates page
  2. Select the “FXUSDCAD” series (Canadian dollar per U.S. dollar — how many CAD equals 1 USD)
  3. Enter the date range covering your transaction

The Valet API is particularly useful for batch lookups or for automated tools. The endpoint format is:

1
https://www.bankofcanada.ca/valet/observations/FXUSDCAD/json?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD

This returns a JSON response with the daily closing rate for each business day in the range.

Trade date vs settlement date

Most equity transactions settle two business days after the trade date (T+2). The CRA’s position is that the transaction date for ACB and capital gains purposes is the trade date — when the order was executed — not the settlement date. Use the Bank of Canada rate for the trade date, not the settlement date, when converting to CAD.

What to do when the date is a weekend or public holiday

The Bank of Canada does not publish exchange rates on weekends or statutory holidays. If your trade date falls on a Saturday, Sunday, or a federal holiday, no rate will be available for that exact date.

The accepted practice is to use the rate from the most recent prior business day. If you bought shares on a Monday Canadian holiday, use the rate from the preceding Friday. If a trade settles on a day the Bank of Canada was closed, use the last rate published before that date.

The USD capital gains calculator on this site handles this automatically — it looks back up to seven calendar days from the trade date and uses the most recent available rate, showing you the exact date used.

A complete worked conversion example

Scenario: You buy 80 shares of a U.S. ETF at USD $62.50 per share on March 4, 2025, paying a $4.99 CAD commission. You sell all 80 shares at USD $71.20 on November 18, 2025, paying another $4.99 CAD commission.

Step 1 — Find the BoC rates:

  • March 4, 2025: FXUSDCAD = 1.4412
  • November 18, 2025: FXUSDCAD = 1.3956

Step 2 — Calculate ACB in CAD:

  • USD cost: 80 × $62.50 = $5,000.00 USD
  • CAD ACB: $5,000.00 × 1.4412 = $7,206.00
  • Add commission: $7,206.00 + $4.99 = $7,210.99 CAD

Step 3 — Calculate proceeds in CAD:

  • USD proceeds: 80 × $71.20 = $5,696.00 USD
  • CAD proceeds: $5,696.00 × 1.3956 = $7,951.81
  • Subtract commission: $7,951.81 − $4.99 = $7,946.82 CAD

Step 4 — Capital gain: $7,946.82 − $7,210.99 = $735.83 CAD

Note that the weaker USD on the sell date (1.3956 vs 1.4412 at purchase) reduced the gain. In USD terms the gain was $696 × (ignoring commissions); in CAD the gain was $735.83 because the commission conversion also shifted. The difference between applying trade-date rates and using an annual average rate would have been small in this example, but in volatile FX years the gap can be material.

When your broker’s CAD conversion may be wrong

Some brokers report T5008 proceeds in CAD but use their own conversion rate rather than the Bank of Canada rate. If the rate they used differs from the Bank of Canada rate for that date, the proceeds figure on your T5008 will not match what CRA would calculate.

You are not required to accept the broker’s converted amount. If you have the trade price in USD and the Bank of Canada rate for the trade date, you can calculate the correct CAD proceeds yourself and use that figure on Schedule 3. Keep a note of the rate source with your records.

For existing USD positions, review whether your original ACB was ever calculated using the Bank of Canada rate on the exact purchase date. If you used an approximation or an annual average, the ACB may need to be corrected before you can accurately calculate gains on future sales.

Documenting FX rates for CRA

When you use the Bank of Canada rate, documenting the source is straightforward: note the rate, the date, and the FXUSDCAD reference alongside each trade record. Printing the Bank of Canada exchange rates page for the relevant dates, or saving the Valet API response, is sufficient. If CRA ever questions your conversion, the Bank of Canada rate for the specific trade date is the most readily verifiable reference available — the same source your broker, your tax software, and a CRA analyst would use.

Annual average vs trade-date rates: understanding the risk

Some Canadian investors default to the Bank of Canada annual average FXUSDCAD rate — one number for all USD transactions in a year. The annual average is simpler and for most years produces results within a small margin of the trade-date method.

The gap becomes material in years with significant currency movement. In 2020, the FXUSDCAD rate ranged from roughly 1.33 to 1.45 over the year — a difference of 12 cents. A $50,000 USD purchase at the low end of the range would have an ACB approximately $6,000 CAD different from the same purchase at the high end. Applying an annual average to both the buy and the sell can misstate the gain — potentially by thousands of dollars — in those volatile years.

The trade-date method eliminates this approximation entirely and is the most defensible position if your USD gains are ever reviewed.

Practical steps for each USD transaction

For every USD buy or sell in a taxable Canadian account:

  1. Record the trade date — not settlement date (settlement is typically T+2, but the trade date is what matters for ACB and proceeds)
  2. Look up the Bank of Canada FXUSDCAD rate for that exact date using the BoC website or Valet API
  3. If the trade date was a weekend or holiday, use the last preceding business day’s published rate
  4. Multiply your USD amount by the rate to get the CAD equivalent
  5. Record both the USD amount and the CAD equivalent in your ACB ledger with the rate source noted

For a broader investor workflow, read USD Stocks in Canada: How FX Conversion Affects Your Capital Gains and use the USD capital gains calculator to verify one buy-and-sell scenario before entering it into a full ledger.


This article is for general educational purposes only and is not tax, legal, or financial advice. Adjusted cost base calculations depend on your complete transaction history and personal circumstances. Consult a qualified tax professional for advice specific to your situation.


myCostBase applies Bank of Canada daily rates to every USD transaction automatically — create a free account →