Stripe: charge.succeeded vs payment_intent.succeeded

Hello fellow developer. I will not waste your time.

TLDR: charge.succeeded was the old event and payment_intent.succeeded is the new one.

So, just process payment_intent.succeeded and ignore charge.succeeded if your codebase is new. If it’s an existing one, check whether charge.succeeded is already being handled.

More details: