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 webhookpayment.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. Cuandoerror_codees 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_attempt—0para el cargo original,1o superior para cada reintento programado de renovación de la suscripción.
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.
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
Leeerror_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.