Things are looking brighter for us with our Stripe implementation upgrade for SCA. I had mentioned previously that I thought Stripe lacked the possibility to easily outsource to them the management of payment details after a failed payment.
One week later and after getting lost in Stripe documentation and videos, it turns out this was inaccurate. There is a solution, and quite a simple one. It is not as easy as checking a box in the Dashboard settings but it is still quite straight forward and definitely less complex than managing an SCA-ready payment flow yourself. For those on the same boat with Stripe, you may find some details here (or contact me if you have questions).
It is sad that Stripe Customer support couldn’t guide me towards this solution when I contacted them earlier (they told me I had to manage everything myself for my use case).
We now delegate everything payment-related to Stripe directly, using Checkout and their hosted pay pages. On our end, we only manage the subscription cycle (and display a helpful “payment failed” message that redirects to a Stripe hosted page when a user card gets declined during a renewal). That removed a lot of the complexity from our app around payments while improving PCI compliance paperwork.
That also means that if another regulation comes in in another country, we’ll be compliant as long as Stripe is compliant, with no additional work. And, as a bonus it should open us to adding new payment channels like IDeal or Bank transfer with just a click of a button in Stripe Admin (yet to be tested though.).
All in all, quite happy with the overall experience!