Manual Retry vuelve a intentar el pago de renovación fallido de una suscripción en el momento en que 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 funciona independientemente del calendario de Payment Retries automáticos.
¿Qué es Manual Retry?
Cuando falla un pago de renovación, la suscripción pasa aon_hold y Payment Retries vuelve a intentar el cobro según un calendario con intervalos crecientes. A veces sabes que el pago se realizará ahora: el cliente ha confirmado que recargó su cuenta o tu equipo de soporte está hablando con él. Manual Retry te permite enviar un intento inmediatamente en lugar de esperar horas o días al 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, los pagos únicos, los cargos por cambio de plan y los cargos bajo demanda no son aptos. - Sin acción del cliente: el cargo se realiza en el 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: un pago fallido es solo el punto de partida. Dodo Payments busca 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
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
Se crea un nuevo pago para el intento y aparece en el Activity Log. Si el cargo se realiza correctamente, la suscripción vuelve a
active y la siguiente fecha de facturación avanza con normalidad. Si el procesador de pagos aún no ha liquidado el cargo, el pago aparece como en curso 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
El reintento manual solo se envía cuando se cumplen todas las comprobaciones siguientes. La columna Reason code es lo que devuelve la API: enreason en GET /payments/{payment_id}/retry y como el error code en 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. Los reintentos automáticos siguen ejecutándose para otros estados que no sean 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 se rechaza un reintento por este motivo, la API devuelve
MANUAL_RETRY_LIMIT_REACHED (HTTP 429). El cuerpo del error solo contiene 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.
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 frente a automáticos
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 nunca falla cuando el pago no es apto. En su lugar, devuelve can_retry: false con el código reason, para que tu dashboard o tus herramientas de soporte puedan mostrar el mismo estado que muestra 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.
Response
Respuestas de error
Todos los códigos se describen en la referencia de Error Codes.
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, exactamente igual que en un reintento automático. Conserva payment_id de la respuesta del reintento si necesitas distinguir un intento manual de uno programado.
Payment Webhook Payloads
Esquemas completos de carga útil para eventos de pago.
Relacionado
Subscription Payment Retries
El calendario automático de intervalos crecientes que funciona 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 rechazo permanente.
Handle Payment Failures
Lee los códigos de rechazo y decide cuándo vale la pena reintentar.
Error Codes
Cada código
MANUAL_RETRY_*, su activador y su mensaje.