I live in Canada, and have for years. I have US Dollar credit cards from Canadian banks, I have US Dollar credit cards from US banks. I have Canadian Dollar credit cards too. My phone number has a US area code (Canada shares an international prefix with the US), but I also have a virtual number for Canada.
Whatever system you think of to price discriminate, people will break it.
Funny little Canada price discrimination story: Cell phone data is really expensive here since there is no competition, so much so that it is often cheaper to roam on an international line in Canada than to have a contract with a Canadian Telecom, hence the US number.
But you get complex UX flows if your guess at the start is wrong. You think the user is Canadian but puts in a US card what do you do now? IIUC Stripe doesn't have options for dealing with this. Maybe you can reject the payment and make them restart, selecting the country of their payment card.
Pretty sure that's what Netflix does. I pay on the basis of my billing address but, if I'm in another country, (or come in through a VPN) I get the content based on where I'm located in my experience.