Webhook Event Types

Event Payload Structures - Webhook API specification

Payment Intent Events

Track the lifecycle of a payment intent. data is a PaymentIntentEventData object.

Event When it fires Typical action
payment_intent.initiated Right after POST /payment-intents Persist the intent ID, link it to your order
payment_intent.requires_action Provider returned a redirect URL or requisites Usually no merchant action - the customer is still in the flow
payment_intent.processing Provider is capturing/confirming Mark the order as "payment processing"
payment_intent.succeeded Funds captured Fulfill the order
payment_intent.failed Intent could not progress (provider error, customer rejection, validation failure) Notify the customer, allow retry
payment_intent.canceled Intent was canceled or expired without payment Release inventory, mark order as canceled

Payment Events

Track the underlying payment once the intent reaches a processing state. data is a PaymentEventData object.

Event When it fires Typical action
payment.pending Payment created but provider has not confirmed yet Nothing - informational
payment.processing Provider is processing the payment Nothing - informational
payment.succeeded Funds captured Fulfill the order (if you didn't already on payment_intent.succeeded)
payment.failed Payment rejected / could not be captured. errors[] is populated. Notify the customer

You generally only need to handle payment_intent.succeeded / payment_intent.failed / payment_intent.canceled to fulfill or cancel orders. The payment.* events are useful for reconciliation and accounting.