Since everyone liked the textnow reference, I'll add some more comments:
1) Every US phone number, whether a Voip provider, a message provider, etc. has an attribute that can be queried by the calling institution, e.g. a bank. And that caller can decide if they want to complete the call. Here's a link that gives some insight: https://www.twilio.com/blog/identifying-line-type-with-python
2) Those same providers have gotten a lot of headaches when they get too restrictive. Like legitimate US users on vacation trying to check their US accounts...Typically they do provide an alternate method of validation, like sending to your email, or calling your number and not sending you an SMS. One needs to check carefully...Fidelity has no problem sending an SMS to my Voip number and Callcentric forwards it to my mail. So when someone says there is no way, they may not be trying hard enough. I have a Citi US account. They wouldn't register my MX cell online, but they did it manually when I called them.
3) There are two types of SMS. Short codes and regular phone numbers... Some banks send to short codes only, which can complicate because providers can't receive short codes or charge extra for it, Bottom line, if they're making it so difficult for you to receive messages on a free service like textnow, consider dumping the bank.
4) VPN has nothing to do with two factor authentication. Being on a VPN means the institution sees you as being in the US instead of a foreign country. I haven't had any problem with Fidelity, Vanguard, or anyone else when I log in from Mexico...Your mileage may vary..