past_due e ingresa al proceso de reintentos (dunning). El cliente mantiene el servicio durante esta ventana de gracia mientras Commet reintenta el cobro. Los clientes pueden reactivar antes desde el Portal del Cliente reintentando el pago o actualizando su tarjeta.
Qué pasa cuando un pago falla
- La suscripción cambia al estado
past_due - El recibo fallido se marca como
outstanding - El cliente mantiene el servicio: los eventos de uso y de asientos siguen funcionando (el uso se acumula como deuda)
- El cliente recibe una notificación por email
- Commet reintenta el cobro según un calendario fijo (dunning)
active. Si todos los reintentos fallan, la suscripción se cancela y el recibo se marca como uncollectible.
Mapeo de errores del proveedor
Commet traduce las respuestas del proveedor a un resultado de pago común y conserva el detalle del proveedor junto a él. Para fallas recurrentes, el webhookpayment.failed expone failureCode, failureMessage y un recoveryUrl cuando existe un camino de recuperación. El failureCode exacto depende del proveedor, así que usa el resultado normalizado y el recovery URL para manejar al cliente en lugar de depender de los códigos raw de un solo proveedor.
Los rechazos de tarjeta durante el checkout inicial no emiten
payment.failed; la respuesta del checkout trae directamente el estado de la falla. Las fallas recurrentes usan el flujo de dunning que sigue.
Reintentos automáticos
Los reintentos se ejecutan el día 1, el día 3, el día 5 y el día 7 después de la falla original (4 reintentos). El calendario queda anclado a la falla y nunca se mueve. Tras el último reintento fallido, la suscripción se cancela. Los reintentos manuales desde el Portal del Cliente o la API usan el método predeterminado y tienen límites diarios separados. No consumen reintentos del calendario automático ni inician otro cobro mientras haya un reintento automático en curso.Métodos de pago guardados
Commet intenta cobrar primero con el método predeterminado de la conexión de pago de la suscripción. Ante un rechazo confirmado, prueba los demás métodos disponibles de esa conexión, del más nuevo al más antiguo. OXXO queda fuera de estos reintentos. Cambiar el routing por país no cambia la conexión usada para reintentar. Probar varios métodos cuenta como un solo reintento del calendario. Commet se detiene si el pago se confirma. Si el resultado está pendiente o todavía no se conoce, espera a resolver ese cobro antes de probar otro método. Si el cobro con otro método funciona, el predeterminado del cliente no cambia.Dunning communications
Commet envía una notificación de falla cuando un cobro recurrente entra en dunning. Para mensajes específicos de tu producto, suscríbete a estos webhooks:payment.failed— falló un cobro recurrente; usafailureCode,failureMessageyrecoveryUrlpara explicar el siguiente paso.payment.recovered— se pagó el recibo pendiente y la suscripción volvió aactive.payment.retry_failed— se agotaron los retries y la suscripción fue cancelada.
Consultar el estado de la suscripción
- TypeScript
- Python
- Go
- Java
- PHP
- cURL
Restringir el acceso según el estado
Commet sigue dando servicio a los clientes enpast_due durante la ventana de dunning: los eventos de uso y de asientos siguen funcionando. Tú decides si restringes tu propio producto cuando la suscripción está en past_due. Para dar acceso solo mientras el cobro está sano, trata active y trialing como los estados con acceso:
- TypeScript
- Python
- Go
- Java
- PHP
- cURL
Recuperar una suscripción de forma programática
El SDK expone tres primitivas de recuperación del lado del servidor. Para suscripciones enpast_due, todas operan sobre el mismo recibo de renovación outstanding: ninguna lo anula. reactivate además reactiva suscripciones canceled.
Reintentar el cobro de servidor a servidor
reactivate cobra el método de pago guardado de la suscripción. Funciona tanto en suscripciones past_due como canceled, con efectos distintos:
past_due: reintenta el mismo recibo de renovación pendiente. El ancla de facturación se mantiene fija. Si tiene éxito, la suscripción vuelve aactivey se emitepayment.recovered.canceled: genera un recibo nuevo, reinicia el ancla del período de facturación a ahora y cobra la tarjeta guardada. Si tiene éxito, la suscripción vuelve aactivey se emitesubscription.reactivated. Requiere que el plan siga disponible en la moneda de la suscripción; de lo contrario devuelvePLAN_UNAVAILABLE(422).
recoveryUrl en los detalles del error: una página hospedada donde el cliente agrega una tarjeta nueva y paga. Esto importa para suscripciones canceladas por dunning: llegaron a canceled precisamente porque la tarjeta guardada seguía fallando.
Enviar un enlace de recuperación al cliente
createRecoveryLink devuelve un enlace hospedado y firmado para que el cliente pague la renovación pendiente por su cuenta. Entrégalo a través de tu propio email, SMS o dashboard. El enlace permanece válido hasta que el cobro se paga o la suscripción deja de estar en past_due.
El webhook payment.failed ya incluye un recoveryUrl: la URL del checkout para un primer cobro fallido, un enlace de recuperación firmado para una renovación fallida. Si consumes webhooks, no necesitas llamar a createRecoveryLink.
Actualizar el método de pago
updatePaymentMethod devuelve un checkout hospedado donde el cliente actualiza el método de pago predeterminado de la suscripción.
Self-serve recovery
Los clientes enpast_due ven su suscripción en el Portal del Cliente con un botón Reactivar suscripción. Pueden elegir:
- Reintentar con su tarjeta actual — útil cuando la falla fue temporal (fondos insuficientes que ya están disponibles, una retención bancaria que se liberó).
- Actualizar su método de pago — ingresar una nueva tarjeta a través del proveedor de pago de la suscripción y reintentar en el mismo paso.
active y emite un evento payment.recovered. Un reintento manual rechazado mantiene el calendario automático de dunning. Los reintentos están limitados a 3 por día por cliente.
Invitar a actualizar el pago
Redirige a los clientes al Portal del Cliente para reactivar:- TypeScript
- Python
- Go
- Java
- PHP
- cURL
Relacionado
- Recibos y ciclos de cobro — Tipos de recibo y momento del cobro
- Administrar suscripciones — Crear y administrar suscripciones de clientes
- Portal del Cliente — Portal de autogestión de cobros y pagos para clientes
- Payment Providers — Cómo Commet enruta pagos a través de Commet, Stripe o dLocal
- Payment Orchestration — Routing por país, defaults y métodos asociados a un proveedor