Hello!
We don't have an API today that offers exchange rates unfortunately. It's something we have discussed in the past and even had a beta around but it's mostly been deprecated. Today our recommendation is still to use external APIs for this though we know it can be tricky to find a reliable one that suits your needs.
My main recommendation here would be to have your shop owners configure their pricing in the currency they want to accept. Most will likely only want to support one currency, in which case you charge the end customer in that currency and there's no currency conversion. So for the CAD example, you wouldn't attempt to show them an estimate in CAD, you would instead show them the price in USD and charge them in USD. The entire transaction on Stripe would be in USD and the end customer's bank would be the one calculating how much that is in CAD with their own exchange rate and apply that conversion. You have no control over this calculation and while you could guess it is likely going to be incorrect in some cases and it's worse to display an incorrect conversion.
Now if a shop owner decides to price in multiple currencies, you can then show the correct price, which is what you will really charge. In that world, the shop owner has to account for fluctuation of exchange rates over time and price accordingly. That's where you don't charge $121.67 CAD for a $100 USD but instead the shop owner decides that in CAD you charge $130 all the time for example. It has some upsides and downsides too in that world though.
Sorry, I know that's not really the answer you were looking for here but there isn't really a way to guarantee exchange rates upfront like this today.
Best,
Remi