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.canceledto fulfill or cancel orders. Thepayment.*events are useful for reconciliation and accounting.