VoIP.ms works great in both the US and Canada. (I believe it started here in Canada.)
Also, many Canadian financial institutions (including the CRA, Wealthsimple, and BMO) work fine with US phone numbers for 2FA… including Google Voice, in my personal experience. https://www.reddit.com/r/Googlevoice/comments/1c571kw
VoIP.ms is hard to port into and out of, I've repeatedly seen them drop part of the account number when transferring a number, then drag their feet for days thereafter on resubmitting the port.
Always ask for the Port Order Number (PON) so you can follow up with the other carrier to see what they received from VoIP.ms