Descripción general
Cuando un intento de pago falla, Dodo Payments devuelve un código de fallo estandarizado que indica el motivo. Los códigos son los mismos en todos los métodos de pago y procesadores de pagos, por lo que un único conjunto de reglas de gestión cubre todos los pagos fallidos. El webhookpayment.failed y el objeto de pago exponen estos campos para un pago fallido:
error_code: un código de fallo estandarizado de la tabla siguiente.error_message: una explicación escrita para ti, el merchant. Cuandoerror_codees uno de los códigos estandarizados siguientes, se trata de un encabezado más la acción recomendada, no del texto sin procesar del procesador de pagos.retry_attempt:0para el cargo original, y1o superior para cada reintento programado de renovación de una suscripción. Los pagos que no son renovaciones de suscripción conservan el valor0.
Texto para el merchant frente a texto para el cliente
Cada código de fallo estandarizado se asigna a dos mensajes, uno para ti y otro para tu cliente:El Customer Portal devuelve el texto destinado al cliente en
error_message, mientras que la API del merchant devuelve el texto destinado al merchant para el mismo pago. error_code es el mismo en ambos casos.Handle Payment Failures
Una guía de desarrollo paso a paso para 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 es un rechazo temporal o un rechazo permanente. El tipo indica si un intento posterior con los mismos datos de pago puede tener éxito o si el cliente debe realizar alguna acción primero.
En las renovaciones de suscripciones, Dodo Payments aplica esta clasificación automáticamente. Subscription Payment Retries vuelve a intentar los rechazos temporales. Un rechazo permanente finaliza inmediatamente la cadena de reintentos; recupéralo con Subscription Dunning.
Motivos de fallo de transacciones
La tabla siguiente enumera 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.
Yes significa que el cliente puede solucionar el problema, por ejemplo, introduciendo correctamente los datos de la tarjeta. No significa que el rechazo se debe a un problema del sistema o a una restricción bancaria, y que el cliente no puede resolverlo directamente.Un banco emisor también puede rechazar una tarjeta porque su propio motor de riesgo marca al titular de la tarjeta como de alto riesgo, independientemente del comercio 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. El banco no comparte el motivo específico, y ni Dodo Payments ni el comercio pueden anular la decisión. Pide al cliente que se ponga en contacto con su banco para resolver el bloqueo, o que utilice 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 en la tabla y decide si debes reintentar. En las renovaciones de suscripciones, Dodo Payments reintenta por ti los rechazos temporales. Consulta Subscription Payment Retries.
Para consultar errores de la API y de la lógica empresarial que no son rechazos de tarjetas, como PAYMENT_NOT_SUCCEEDED o REFUND_WINDOW_EXPIRED, 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.