Every body has the same envelope:
id (evt_…), type, created, livemode, pending_webhooks, and data.object, the object the event is about. Handle events by evt_ id; a retry delivers the same id again.
Payloads
These are generated from the platform’s own sample objects and validated against theEvent schema in the API reference on every build.
checkout.session.completed
checkout.session.completed
checkout.session.completed
subscription.created
subscription.created
subscription.created
subscription.updated
subscription.updated
subscription.updated
subscription.canceled
subscription.canceled
subscription.canceled
invoice.settled
invoice.settled
invoice.settled
invoice.payment_failed
invoice.payment_failed
invoice.payment_failed
Ordering
Events for one subscription arrive in lifecycle order, but two can land within the same second.subscription.canceled and its final invoice.settled are the common pair. Key your state on the subscription id and let a canceled status win.