Manual Retry vuelve a intentar un pago de renovación de una suscripción cuando lo solicitas, desde la página de detalles del pago o mediante la API. Cobra el método de pago guardado en la suscripción y se ejecuta de forma independiente del calendario de Payment Retries automáticos.
¿Qué es Manual Retry?
Cuando falla un pago de renovación, la suscripción pasa aon_hold. Si activaste Payment Retries, estos vuelven a intentar el cobro según un calendario con intervalos crecientes. A veces sabes que el pago se aprobará ahora: el cliente confirmó que recargó su cuenta o tu equipo de soporte está hablando con él. Manual Retry envía un intento de inmediato, en lugar de esperar horas o días hasta el siguiente intento programado.
- Solo pagos de renovación: Manual Retry se aplica a las facturas de renovación de suscripciones mientras la suscripción está en
on_hold. Los primeros pagos, pagos únicos, cargos por cambios de plan y cargos bajo demanda no son aptos. - Sin acción del cliente: el cobro se realiza al método de pago ya guardado en la suscripción.
- Independiente de los reintentos automáticos: un reintento manual no consume un intento del calendario automático, no cambia el siguiente reintento programado y funciona incluso cuando Payment Retries está desactivado.
- Reintenta la factura, no el pago: el pago fallido es solo el punto de entrada. Dodo Payments encuentra la factura de renovación abierta asociada y cobra esa deuda, por lo que no importa desde qué pago fallido de la factura realices el reintento.
Reintentar desde el dashboard
Solo los usuarios con el rol Owner o Editor pueden enviar un reintento manual.1
Open the failed payment
Ve a Transactions → Payments y haz clic en el pago de renovación fallido para abrir su página de Transaction details.
2
Click Retry Payment Manually
Haz clic en Retry Payment Manually en la esquina superior derecha. El botón solo está disponible mientras el pago sea eligible.
3
Check the result
Dodo Payments crea un nuevo pago para el intento, que aparece en el Activity Log. Si el cobro se realiza correctamente, la suscripción vuelve a
active y la siguiente fecha de facturación pasa a ser un periodo de facturación posterior al reintento correcto. Si el procesador de pagos aún no ha liquidado el cobro, el pago aparece como en progreso hasta que el webhook payment.succeeded o payment.failed informe del resultado.
Retry Payment Manually on the transaction details page of a failed renewal
Elegibilidad
Dodo Payments solo envía un reintento manual cuando se cumplen todas las comprobaciones de esta tabla. La columna Reason code muestra lo que devuelve la API: enreason sobre GET /payments/{payment_id}/retry y como el error code sobre POST /payments/{payment_id}/retry.
Manual Retry es más restrictivo que los reintentos automáticos en un aspecto: requiere que la suscripción esté en
on_hold. Una suscripción past_due en un periodo de gracia no supera esta comprobación. Los reintentos automáticos siguen ejecutándose para otros estados no activos. Consulta Subscription Status Transitions.Límites de reintentos
Cada factura de renovación permite 3 reintentos manuales, con un periodo de espera entre ellos:
Los límites se aplican tanto en test mode como en live mode. Cuando el límite rechaza un reintento, la API devuelve
MANUAL_RETRY_LIMIT_REACHED (HTTP 429) y el cuerpo del error contiene solo code y message. Para saber cuándo se habilita el siguiente reintento, consulta el estado del reintento y lee retry_available_at. Es null una vez consumidos los tres reintentos.
Los reintentos automáticos no cuentan para este límite y los reintentos manuales no cuentan para los 8 intentos del calendario automático.
Reintentos manuales y automáticos
Las dos vías de reintento se diferencian en los siguientes aspectos:Reintentar mediante la API
Comprueba primero la elegibilidad y después envía el reintento. Ambos endpoints reciben el ID de un pago fallido.Comprobar si se puede reintentar un pago
GET /payments/{payment_id}/retry no devuelve un error para un pago que no es apto. En su lugar, devuelve can_retry: false con el código reason, para que tu propio dashboard o herramienta de soporte pueda mostrar el mismo estado que el dashboard de Dodo Payments. Requiere el rol Viewer.
Response
Enviar un reintento manual
POST /payments/{payment_id}/retry crea un nuevo pago y cobra el método de pago guardado. Requiere el rol Editor. Los ejemplos del SDK reutilizan client del ejemplo anterior.
Response
Respuestas de error
Cuando no se permite un reintento,POST devuelve uno de estos estados HTTP:
La referencia de Error Codes describe todos los códigos.
Webhooks
Un reintento manual crea un pago normal, por lo que se activan los mismos webhooks que para cualquier intento de renovación:
En el objeto de pago de estos eventos,
retry_attempt es 1 o superior y subscription_id está establecido, igual que en un reintento automático. El objeto de pago no tiene ningún campo que marque un intento manual, así que conserva payment_id de la respuesta del reintento si necesitas distinguir un intento manual de uno programado.
Payment Webhook Payloads
Esquemas completos de payload para eventos de pago.
Relacionado
Subscription Payment Retries
El calendario automático con intervalos crecientes que se ejecuta junto con los reintentos manuales.
Subscription Dunning
Envía un correo al cliente para que actualice su método de pago después de un hard decline.
Handle Payment Failures
Lee los códigos de rechazo y decide cuándo merece la pena reintentar.
Error Codes
Cada código
MANUAL_RETRY_*, su activador y su mensaje.