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 Los webhooks que recibes y el momento en que los recibes dependen de si el producto tiene un período de prueba. Facturación inmediata (0 días de prueba):subscription.active: el mandato se autoriza y la suscripción se activa.payment.succeeded: confirma el primer cobro. Recíbelo normalmente entre 2 y 10 minutos después del checkout.
- Al inicio de la prueba (checkout):
subscription.activese activa una vez autorizado el método de pago. Todavía no se realiza ningún cobro recurrente. El primer cobro real se pospone hasta que finalice la prueba. - Al finalizar la prueba: se cobra el importe recurrente y recibes
payment.succeededjunto consubscription.renewed.
subscription.renewed: se activa en cada ciclo de facturación cuando se deduce el pago de renovación, siempre junto conpayment.succeeded. También incluye elnext_billing_dateactualizado.
Siempre que se deduzca dinero realmente por un producto de suscripción, recibes
subscription.renewed y payment.succeeded. Usa subscription.renewed (en lugar de usar solo payment.succeeded) como señal para ampliar el acceso al siguiente ciclo.- Fallo de la suscripción
subscription.failed- La creación de la suscripción falló porque no se pudo crear un mandato.payment.failed- Indica un pago fallido.
- Suscripción en espera
subscription.on_hold- La suscripción se pone en espera debido a un pago de renovación fallido o a un cobro fallido por cambio de plan.- Cuando una suscripción pasa a estar en espera, no se renovará automáticamente hasta que se actualice el método de pago.
Práctica recomendada: Para simplificar la implementación, recomendamos realizar principalmente el seguimiento de los eventos de suscripción para gestionar el ciclo de vida de la suscripción.
subscription.failed frente a subscription.on_hold
Estos dos eventos se confunden fácilmente, pero requieren un tratamiento muy diferente:
Gestionar una suscripción en espera
Cuando una suscripción entra en el estadoon_hold, debes actualizar el método de pago para reactivarla. Esta sección explica cuándo las suscripciones pasan a estar en espera y cómo gestionarlas.
Cuándo las suscripciones pasan a estar en espera
Una suscripción se pone en espera cuando:- Falla el pago de renovación: el cobro automático de renovación falla por fondos insuficientes, una tarjeta caducada o el rechazo del banco
- Falla el cobro por cambio de plan: falla un cobro inmediato durante la actualización o degradación del plan
- Falla la autorización del método de pago: no se puede autorizar el método de pago para cobros recurrentes
Reactivar suscripciones en espera
Para reactivar una suscripción desde el estadoon_hold, usa la API Update Payment Method. Esto automáticamente:
- Crea un cobro por las cantidades pendientes
- Genera una factura por el cobro
- Procesa el pago usando el nuevo método de pago
- Reactiva la suscripción al estado
activecuando el pago se realiza correctamente
1
Handle subscription.on_hold webhook
Cuando recibas 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 Update Payment Method:
También puedes usar un ID de método de pago existente si el cliente tiene métodos de pago guardados:
3
Monitor webhook events
Después de actualizar el método de pago, supervisa estos eventos de webhook:
payment.succeeded- El cobro por las cantidades pendientes se realizó correctamentesubscription.active- La suscripción se ha reactivado
Ejemplo de payload de evento de suscripción
Cambiar planes de suscripción
Puedes actualizar o degradar un plan de suscripción mediante el endpoint de la API de cambio de plan. Esto te permite modificar el producto, la cantidad y gestionar la prorrata de la suscripción.Change Plan API Reference
Para obtener información detallada sobre cómo cambiar planes de suscripción, consulta nuestra documentación de la API Change Plan.
Opciones de prorrata
Al cambiar de plan de suscripción, tienes dos opciones para gestionar el cobro inmediato:1. prorated_immediately
- Calcula el importe prorrateado según el tiempo restante del ciclo de facturación actual
- Cobra al cliente únicamente la diferencia entre el plan anterior y el nuevo
- Durante un período de prueba, cambia inmediatamente al usuario al nuevo plan y cobra al cliente en ese momento
2. full_immediately
- Cobra al cliente el importe total de la suscripción del nuevo plan
- Ignora el tiempo restante o los créditos del plan anterior
- Es útil cuando quieres reiniciar el ciclo de facturación o cobrar el importe total independientemente de la prorrata
3. difference_immediately
- Al actualizar el plan, se cobra inmediatamente al cliente la diferencia entre los importes de ambos planes.
- Por ejemplo, si el plan actual cuesta 30 dólares y el cliente cambia a uno de 80 dólares, se le cobran $50 al instante.
- Al degradar el plan, el importe no utilizado del plan actual se añade como crédito interno y se aplica automáticamente a futuras renovaciones de la suscripción.
- Por ejemplo, si el plan actual cuesta 50 dólares y el cliente cambia a un plan de 20 dólares, los $30 restantes se acreditan y se utilizan en el siguiente ciclo de facturación.
4. do_not_bill
- Aplica el cambio de plan inmediatamente, pero no realiza ningún cobro en el momento del cambio.
- El plan actualizado (y la cantidad/add-ons) se factura en la siguiente renovación programada, y se conserva la fecha de facturación original.
Comportamiento
- Al invocar esta API, Dodo Payments inicia inmediatamente un cobro según la opción de prorrata seleccionada
- Si el cambio de plan es una degradación y usas
prorated_immediately, los créditos se calcularán automáticamente 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 utilizará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 importe completo del nuevo plan
Procesamiento del cobro
- El cobro inmediato iniciado al cambiar de plan normalmente termina de procesarse en menos de 2 minutos
- Si este cobro inmediato falla por cualquier motivo, la suscripción se pone automáticamente en espera hasta que se resuelva el problema
Suscripciones bajo demanda
Las suscripciones bajo demanda te permiten cobrar a los clientes de forma flexible, no solo siguiendo un calendario fijo. Esta función está disponible para todas las cuentas.
on_demand en el cuerpo de la solicitud. Esto te permite autorizar un método de pago sin realizar un cobro inmediato o establecer un precio inicial personalizado.
Para cobrar una suscripción bajo demanda:
Para los cobros posteriores, usa el endpoint POST /subscriptions//charge y especifica el importe que se cobrará al cliente por esa transacción.
Para consultar una guía completa paso a paso (incluidos ejemplos de solicitudes/respuestas, políticas de reintento seguras y gestión de webhooks), consulta la Guía de suscripciones bajo demanda.
Aspectos clave de la facturación de suscripciones
Las pruebas utilizan una autorización de $0, no un cobro. Cuando una suscripción tiene una prueba, el inicio de la prueba crea una autorización de mandato de $0 para guardar la tarjeta; el primer cobro real se produce al finalizar la prueba. En la lista de pagos, una suscripción en período de prueba muestra exactamente un pago con
amount: 0.Ciclo de vida de la suscripción:
on_hold = falló una renovación (se puede recuperar: solicita al cliente que actualice su método de pago; se aplican reintentos de dunning). expired = el plazo terminó sin renovación y no se puede reactivar. El cliente debe volver a suscribirse. cancelled = finalizada por el cliente o el comerciante. La mayoría de los fallos de renovación son rechazos del emisor (fondos insuficientes, tarjeta rechazada), no un error de Dodo.Referencia de API relacionada
Create Subscription
Referencia de API para crear productos de suscripción y gestionar el ciclo de vida de las suscripciones
Change Subscription Plan
Referencia de API para actualizar, 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 la suscripción