Skip to main content
Fires when a card payment started by your end user is declined.
This event’s type is CARD_PAYMENT_STATUS, not CARD_PAYMENT_FAILED. The name is generic on purpose, so it can be reused later for confirmations and other states. Today the only case that emits it is the declined payment, so status is always "FAILED".
Route on type and then branch on status. That way your handler keeps working the day this same type starts carrying other states.

The payload

The error detail is nested under additionalData.errorDetail, one level deeper than in failed card autopay, where it sits directly in additionalData. It is the only shape difference between the two card events.
additionalData is dropped entirely when there is no detail to send: when sendErrorInfo is off in your configuration, and also when it is on but the event carries no provider detail.

Examples

Common fields, hash and idempotency

What every webhook in this family shares.