Falló un intento de cobro de un link de pago.
Todos los webhooks comparten una estructura principal. Los datos específicos del evento están dentro de data .
El motivo original del cobro y cómo se inició este intento. La recuperación nunca reemplaza el motivo original. El contexto puede ser null si no se capturó, incluso en reintentos de facturas históricas.
The payment link ID.
The link status. Always "failed" for this event.
The amount that was attempted in cents (100 = $1.00).
The payment currency code.
The payment description shown to the customer.
The customer ID, or null when the link is not tied to a customer. Returns your externalId if you provided one when creating the customer, otherwise returns the Commet publicId.
The failure code from the payment processor.
A human-readable failure message.
The payment method: card, oxxo, or mercado_pago. Null when unknown.
The source of funds for this charge, when reported by the provider. Null when unavailable or unknown.
{
"event": "payment_link.failed",
"timestamp": "2026-06-23T14:30:00.000Z",
"organizationId": "8f14e45f-ceea-4e7a-9c3d-1c2b3a4d5e6f",
"mode": "live",
"apiVersion": "2026-08-27",
"data": {
"paymentContext": {
"reason": "one_time_payment",
"paymentLinkId": "pay_l1m2n3",
"recovery": null
},
"paymentId": "pay_l1m2n3",
"status": "failed",
"amount": 5000,
"currency": "usd",
"description": "One-time onboarding fee",
"customerId": "user_123",
"failureCode": "card_declined",
"failureMessage": "Your card was declined.",
"paymentMethod": "card",
"subPaymentMethod": null
}
}Cuando se rechaza un intento de cobro sobre un link de pago. El link queda abierto — un link fallido se puede reintentar, y el cliente puede pagarlo de nuevo. Un intento exitoso posterior dispara payment_link.completed.
failureCode es el código del procesador (por ejemplo card_declined) y failureMessage es el motivo legible, o null cuando el proveedor no da ninguno.
El evento se dispara igual sin importar qué proveedor de pagos procese el cobro.
¿Cómo está esta guía?