Thank you for your many detailed replies here! This idea that parent brought up is one I've heard before: Stripe declines payments that a local gateway service would have accepted, for reasons unrelated to fraud protection. That's always made me scratch my head because my (admittedly primitive) understanding is that you're eventually hitting some API at the bank which accepts or declines the charge. Why would it matter whether it's Stripe hitting it or some other gateway? I assume Stripe has more resources to attack such problems than your average Mexican gateway provider, so there must be some intractable problem in there somewhere?
We switched from stripe to local payment gateways in some countries because some banks automatically convert any charge by stripe to USD making it more expensive for the end client and refusing in some cases the charge, when in local gateways everything goes through in the local currency.
Additionaly stripe charges their 2.5% to 3% + 2% conversion fee making it impossible some business models that are low margin.