Stripe recommends using the modern Payment Intents API for better compatibility: Payment Intents: Newer, more flexible, handles 3D Secure automatically Charge API: Older, simpler, but limited for advanced scenarios