My most important overhaul for our business was abstracting over payments and ensuring we weren’t dependent on any one processor for online checkouts. It doesn’t matter who you are with or how flexible they are, sooner or later, for logistical, account, network, or other issues, if you have only one payment provider it is going to be unavailable and you’re going to be losing money.
If you’re on the .NET stack, our abstraction [0] is over PayPal, PayPal credit card, Stripe, ChargeBee, CoinBase, Amazon Payments, and other providers that have since been replaced with no-op exceptions because the payment processors have gone under.
[0]: https://www.nuget.org/packages/NeoSmart.Payments/