Skip to main content
Cuando un pago falla, Dodo Payments te indica por qué a través de un error_code estandarizado y un error_message legible para humanos. Esta guía muestra cómo leer esos campos, decidir si vale la pena reintentar, y recuperar el pago sin exponer información sensible a los clientes.

Cómo Dodo Payments Informa un Fallo

Cada pago fallido, ya sea una compra única o una renovación de suscripción, lleva los mismos campos de fallo en el objeto de pago:
error_code e error_message son null hasta que un pago realmente falle. Siempre verifica status primero, luego lee los campos de error.
error_message de la API del comercio es texto dirigido al comercio. Puede indicar el motivo real de un rechazo, incluidos los relacionados con fraude, por lo que nunca debes mostrarlo directamente al cliente. En su lugar, asigna error_code a tu propio texto seguro para el cliente, como se muestra en Mostrar errores a los clientes de forma segura.

El webhook de payment.failed

La forma más fiable de detectar un fallo es el webhook de payment.failed. El evento incluye el objeto de pago completo en data:
payment.failed payload
Un handler mínimo lee error_code y decide según su valor:
Verifica siempre la firma del webhook antes de procesarlo. Consulta la guía de Webhooks para conocer la configuración completa, incluida la verificación de firmas y la idempotencia.

Decide si reintentar: rechazos temporales frente a definitivos

error_code te indica si vale la pena reintentar con el mismo método de pago. La referencia de Transaction Failures indica el tipo de rechazo y la acción recomendada para cada error_code.

Gestión de fallos durante el checkout y durante la renovación

La forma de recuperar el pago depende de si el cliente está presente.
El cliente está completando el checkout activamente. Muestra un mensaje claro y permítele reintentar de inmediato o usar otra tarjeta.
  • requires_payment_method — el cliente nunca proporcionó un método de pago: no introdujo los datos de la tarjeta o se le pidió que lo hiciera y no realizó ninguna acción. Por lo general, esto es un abandono del checkout, no un rechazo: vuelve a captar la atención del cliente para que complete el pago (consulta Recuperación de carritos abandonados).
  • requires_customer_action — se necesita autenticación adicional (como 3DS); haz que el cliente la complete. Consulta Gestión de 3D Secure.

Reintentar un pago fallido

  • Suscripciones: activa Reintentos de pagos de suscripciones para recuperar rechazos temporales sin trabajo de integración. También puedes activar la recuperación haciendo que el cliente actualice su método de pago mediante la API de actualización del método de pago, que cobra cualquier importe pendiente.
  • Pagos únicos: vuelve a enviar el checkout o payment_link para que el cliente pueda intentarlo de nuevo con un método diferente. No existe un reintento automático para los pagos únicos.
No reintentes rechazos definitivos con la misma tarjeta. Las redes de tarjetas pueden marcar los rechazos repetidos como abusivos, lo que perjudica tu tasa de autorización.

Mostrar errores a los clientes de forma segura

Muestra al cliente un mensaje cordial: nunca el error_code sin procesar y nunca el error_message dirigido al comercio.
En las superficies que controla Dodo Payments — el checkout, el Customer Portal y los correos de gestión de cobros — esta asignación ya está hecha, incluido el uso de un mensaje genérico como alternativa para los rechazos relacionados con fraude. Solo necesitas la asignación siguiente cuando muestres fallos en tu propio producto.
Customer-facing messaging
Nunca reveles el motivo real de STOLEN_CARD, LOST_CARD, PICKUP_CARD ni FRAUDULENT. Mostrar estos motivos puede alertar a un actor fraudulento. Muestra un mensaje de rechazo genérico y registra internamente únicamente el error_code específico.

Relacionado

Transaction Failures

Cada código de rechazo, su tipo y la acción recomendada.

Error Codes

Errores de API y de lógica de negocio que no son rechazos de tarjeta.

Subscription Payment Retries

Recuperación automática de rechazos temporales durante las renovaciones de suscripciones.

Subscription Dunning

Secuencias de correos que recuperan rechazos definitivos.

Payment Webhooks

Esquema completo de la carga útil para eventos de pago.

Testing Failures

Tarjetas de prueba que simulan rechazos y fallos de renovación.
Última modificación el 8 de agosto de 2026