Prerequisites
To integrate the Dodo Payments API, you’ll need:- A Dodo Payments merchant account
- API credentials (API key and webhook secret key) from the dashboard
API Integration
Checkout Sessions
Use Checkout Sessions to sell subscription products with a secure, hosted checkout. Pass your subscription product inproduct_cart and redirect customers to the returned checkout_url.
- Node.js SDK
- Python SDK
- REST API
API Response
The following is an example of the response:checkout_url.
Webhooks
Al integrar suscripciones, recibirás webhooks para rastrear el ciclo de vida de la suscripción. Estos webhooks te ayudan a gestionar los estados de suscripción y escenarios de pago de manera efectiva. Para configurar tu endpoint de webhook, sigue nuestra Guía de Integración Detallada.Tipos de Eventos de Suscripción
Los siguientes eventos de webhook rastrean los cambios de estado de la suscripción:subscription.active- La suscripción se activa con éxito.subscription.updated- El objeto de la suscripción fue actualizado (se dispara con cualquier cambio de campo).subscription.on_hold- La suscripción se pone en espera debido a una renovación fallida.subscription.failed- La creación de la suscripción falló durante la creación del mandato.subscription.renewed- La suscripción se renueva para el siguiente período de facturación.
Escenarios de Pago
Flujo de Pago Exitoso Cuando un pago tiene éxito, recibirás los siguientes webhooks:subscription.active- Indica activación de la suscripciónpayment.succeeded- Confirma el pago inicial:- Para facturación inmediata (0 días de prueba): Espera dentro de 2-10 minutos
- Para días de prueba: cuando eso termine
subscription.renewed- Indica deducción de pago y renovación para el próximo ciclo. (Básicamente, cada vez que se deduce el pago por productos de suscripción, recibirás el webhooksubscription.renewedjunto conpayment.succeeded)
- Fallo de la Suscripción
subscription.failed- La creación de la suscripción falló debido a un fallo en la creación de un mandato.payment.failed- Indica un fallo de pago.
- Suscripción en Espera
subscription.on_hold- La suscripción se pone en espera debido a un fallo en el pago de renovación o un fallo al cambiar el plan.- Cuando una suscripción está en espera, no se renovará automáticamente hasta que se actualice el método de pago.
Mejor Práctica: Para simplificar la implementación, recomendamos principalmente rastrear eventos de suscripción para gestionar el ciclo de vida de la suscripción.
subscription.failed vs. subscription.on_hold
Estos dos eventos son fáciles de confundir, pero requieren manejos muy diferentes:
Manejo de Suscripción en Espera
Cuando una suscripción entra en el estadoon_hold, necesitas actualizar el método de pago para reactivarla. Esta sección explica cuándo las suscripciones se ponen en espera y cómo manejarlas.
Cuándo las Suscripciones se Ponen en Espera
Una suscripción se coloca en espera cuando:- Falló el pago de renovación: El cargo automático de renovación falla debido a fondos insuficientes, tarjeta expirada o rechazo del banco
- Falla el cargo por cambio de plan: Un cargo inmediato durante la actualización/degradación del plan falla
- Falla la autorización del método de pago: El método de pago no puede ser autorizado para cargos recurrentes
Reactivación de Suscripciones desde en Espera
Para reactivar una suscripción desde el estadoon_hold, usa la API de Actualización de Método de Pago. Esto automáticamente:
- Crea un cargo por deudas pendientes
- Genera una factura por el cargo
- Procesa el pago usando el nuevo método de pago
- Reactiva la suscripción al estado
activetras el pago exitoso
1
Handle subscription.on_hold webhook
Cuando recibes un webhook
subscription.on_hold, actualiza el estado de tu aplicación y notifica al cliente:2
Update payment method
Cuando el cliente esté listo para actualizar su método de pago, llama a la API de Actualización de Método de Pago:
También puedes usar una ID de método de pago existente si el cliente ha guardado métodos de pago:
3
Monitor webhook events
Después de actualizar el método de pago, monitorea estos eventos de webhook:
payment.succeeded- El cargo por deudas pendientes fue exitososubscription.active- La suscripción ha sido reactivada
Ejemplo de Payload de Evento de Suscripción
Cambiar Planes de Suscripción
Puedes mejorar o degradar un plan de suscripción usando el endpoint API de cambio de plan. Esto te permite modificar el producto de la suscripción, la cantidad y manejar la prorrata.Change Plan API Reference
Para obtener información detallada sobre el cambio de planes de suscripción, consulta nuestra documentación de la API de Cambio de Plan.
Opciones de Prorrata
Al cambiar planes de suscripción, tienes dos opciones para manejar el cargo inmediato:1. prorated_immediately
- Calcula el monto prorrateado basado en el tiempo restante en el ciclo de facturación actual
- Cobra al cliente solo la diferencia entre el plan antiguo y el nuevo
- Durante un período de prueba, esto cambiará inmediatamente al usuario al nuevo plan, cobrando al cliente de inmediato
2. full_immediately
- Cobra al cliente el monto completo de la suscripción para el nuevo plan
- Ignora cualquier tiempo restante o créditos del plan anterior
- Útil cuando deseas restablecer el ciclo de facturación o cobrar el monto completo sin importar la prorrata
3. difference_immediately
- Al mejorar, el cliente se cobra de inmediato la diferencia entre los dos montos de los planes.
- Por ejemplo, si el plan actual es de 30 Dólares y el cliente mejora a uno de 80 Dólares, se le cobran $50 instantáneamente.
- Al degradar, la cantidad no utilizada del plan actual se añade como crédito interno y se aplica automáticamente a renovaciones futuras de suscripción.
- Por ejemplo, si el plan actual es de 50 Dólares y el cliente cambia a un plan de 20 Dólares, los $30 restantes se acreditan y se usan para el siguiente ciclo de facturación.
Comportamiento
- Cuando invocas esta API, Dodo Payments inicia inmediatamente un cargo basado en tu opción de prorrata seleccionada
- Si el cambio de plan es una degradación y usas
prorated_immediately, se calcularán automáticamente los créditos y se añadirán al saldo de crédito de la suscripción. Estos créditos son específicos de esa suscripción y solo se usarán para compensar futuros pagos recurrentes de la misma suscripción - La opción
full_immediatelyomite los cálculos de crédito y cobra el monto completo del nuevo plan
Procesamiento del Cargo
- El cargo inmediato iniciado al cambiar el plan usualmente completa el procesamiento en menos de 2 minutos
- Si este cargo inmediato falla por alguna razón, la suscripción se coloca automáticamente en espera hasta que se resuelva el problema
Suscripciones Bajo Demanda
Las suscripciones bajo demanda te permiten cobrar a los clientes de manera flexible, no solo en un horario fijo. Esta función está disponible para todas las cuentas.
on_demand en el cuerpo de tu solicitud. Esto te permite autorizar un método de pago sin un cargo inmediato o establecer un precio inicial personalizado.
Para cobrar una suscripción bajo demanda:
Para cargos posteriores, utiliza el endpoint POST /subscriptions//charge y especifica la cantidad a cobrar al cliente por esa transacción.
Para obtener una guía completa, paso a paso, incluyendo ejemplos de solicitudes/respuestas, políticas de reintento seguro y manejo de webhooks, consulta la Guía de Suscripciones Bajo Demanda.
Referencia de API Relacionada
Create Subscription
Referencia de API para crear productos de suscripción y gestionar el ciclo de vida de la suscripción
Change Subscription Plan
Referencia de API para mejorar, degradar o cambiar planes de suscripción con opciones de prorrata
Update Payment Method
Referencia de API para actualizar métodos de pago y reactivar suscripciones en espera
Patch Subscription
Referencia de API para actualizar los detalles y la configuración de suscripciones