Skip to main content

Descripción general

Dodo Payments devuelve un motivo detallado del fallo cada vez que un intento de pago no se completa correctamente. Estos motivos están estandarizados en los distintos métodos y proveedores de pago, por lo que puedes implementar una gestión coherente en tu aplicación. Cuando falla un pago, el webhook payment.failed y el objeto de pago exponen:
  • error_code — un motivo de fallo estandarizado de la tabla siguiente.
  • error_message — una explicación legible escrita para ti, el merchant. Cuando error_code es uno de los códigos estandarizados siguientes, se muestra un encabezado más la acción recomendada, en lugar del texto sin procesar del procesador de pagos.
  • retry_attempt0 para el cargo original, 1 o superior para cada reintento programado de renovación de la suscripción.
Comprender estos motivos de fallo te permite ofrecer a los clientes información clara, decidir si vale la pena reintentar y recuperar más ingresos.

Texto para el merchant frente a texto para el cliente

Cada código de fallo estandarizado corresponde a dos mensajes diferentes, para que cada audiencia vea el nivel de detalle adecuado:
El Customer Portal devuelve el texto dirigido al cliente en error_message, mientras que la API del merchant devuelve el texto dirigido al merchant para el mismo pago. El error_code es idéntico en ambos casos.

Handle Payment Failures

Una guía paso a paso para desarrolladores sobre cómo leer estos códigos desde los webhooks y la API, mostrarlos a los clientes y decidir cuándo reintentar.

Rechazos temporales frente a rechazos definitivos

Cada código de fallo pertenece a una de dos categorías. Esta distinción determina si debes reintentar con el mismo método de pago o pedir al cliente que use uno nuevo. Para las renovaciones de suscripciones, Dodo Payments aplica esta distinción automáticamente: los rechazos temporales se reintentan mediante Subscription Payment Retries, mientras que los rechazos definitivos finalizan inmediatamente la cadena de reintentos y se gestionan mejor con Subscription Dunning.
Nunca reveles al cliente el motivo real de STOLEN_CARD, LOST_CARD, PICKUP_CARD o FRAUDULENT. Mostrar estos motivos puede alertar a un actor fraudulento. Muestra siempre al cliente un mensaje de rechazo genérico (por ejemplo, “Tu tarjeta ha sido rechazada. Contacta con tu banco o usa otra tarjeta.”) y registra únicamente el código específico de forma interna.Dodo Payments ya aplica esta regla en las superficies que controla: para estos cuatro códigos, el checkout, el Customer Portal y los emails de dunning siempre recurren a un mensaje de rechazo genérico, mientras que tu propio texto conserva el motivo real. Aplica la misma regla en cualquier lugar donde muestres error_message desde la API del merchant a un cliente.

Motivos de fallo de transacciones

La siguiente tabla incluye todos los códigos de fallo, su tipo de rechazo, si el cliente puede resolverlo, una descripción y la acción recomendada.
Error del usuario indica si el cliente puede resolver el rechazo del pago. Cuando Yes, el cliente puede actuar para solucionar el problema (por ejemplo, introducir correctamente los datos de la tarjeta). Cuando No, el rechazo se debe a problemas del sistema o restricciones bancarias que el cliente no puede resolver directamente.
Una tarjeta también puede ser rechazada cuando el propio motor de riesgo del banco emisor marca al titular como un cliente de alto riesgo, independientemente del merchant o de los detalles de la transacción. Estos rechazos suelen aparecer como códigos genéricos, como DO_NOT_HONOR, GENERIC_DECLINE, CARD_DECLINED, TRANSACTION_NOT_APPROVED o FRAUDULENT. En estos casos, el banco no comparte el motivo específico y ni Dodo Payments ni el merchant pueden anular la decisión. Pide al cliente que contacte con su banco para resolver el bloqueo o que use otra tarjeta o método de pago.

Gestión programática de fallos

Lee error_code del webhook payment.failed o del objeto de pago, asígnalo a la acción recomendada anterior y decide si debes reintentar. Para las renovaciones de suscripciones, los rechazos temporales se reintentan automáticamente por ti; consulta Subscription Payment Retries. Para los errores de nivel de API y de lógica de negocio (como PAYMENT_NOT_SUCCEEDED o REFUND_WINDOW_EXPIRED) que no sean rechazos de tarjeta, consulta la referencia de Error Codes.

Relacionado

Handle Payment Failures

Guía completa para detectar, mostrar y reintentar pagos fallidos.

Error Codes

Códigos de error de API y de lógica de negocio para fallos que no son rechazos.

Subscription Payment Retries

Reintentos automáticos que recuperan rechazos temporales en las renovaciones de suscripciones.

Subscription Dunning

Secuencias de emails que recuperan rechazos definitivos al solicitar la actualización del método de pago.

Soporte

Para obtener ayuda adicional con fallos de transacciones o problemas de integración, contacta con nuestro equipo de soporte en support@dodopayments.com.
Última modificación el 8 de agosto de 2026