Subscriptions let you sell ongoing access with automated renewals. Use flexible billing cycles, free trials, plan changes, and add‑ons to tailor pricing for each customer.
Upgrade & Downgrade
Control plan changes with proration and quantity updates.
On‑Demand Subscriptions
Authorize a mandate now and charge later with custom amounts.
Customer Portal
Let customers manage plans, billing, and cancellations.
Subscription Webhooks
React to lifecycle events like created, renewed, and canceled.
What Are Subscriptions?
Subscriptions are recurring products customers purchase on a schedule. They’re ideal for:- SaaS licenses: Apps, APIs, or platform access
- Memberships: Communities, programs, or clubs
- Digital content: Courses, media, or premium content
- Support plans: SLAs, success packages, or maintenance
Key Benefits
- Predictable revenue: Recurring billing with automated renewals
- Flexible cycles: Monthly, annual, custom intervals, and trials
- Plan agility: Proration for upgrades and downgrades
- Add‑ons and seats: Attach optional, quantifiable upgrades
- Seamless checkout: Hosted checkout and customer portal
- Developer-first: Clear APIs for creation, changes, and usage tracking
Creating Subscriptions
Create subscription products in your Dodo Payments dashboard, then sell them through checkout or your API. Separating products from active subscriptions lets you version pricing, attach add‑ons, and track performance independently.Subscription product creation
Configure the fields in the dashboard to define how your subscription sells, renews, and bills. The sections below map directly to what you see in the creation form.Product details
- Product Name (required): The display name shown in checkout, customer portal, and invoices.
- Product Description (required): A clear value statement that appears in checkout and invoices.
- Product Image (required): PNG/JPG/WebP up to 3 MB. Used on checkout and invoices.
- Brand: Associate the product with a specific brand for theming and emails.
- Tax Category (required): Choose the category (for example, SaaS) to determine tax rules.
Pricing
- Tipo de precio: Elige Subscription (esta guía). Las alternativas son Single Payment y Usage Based Billing.
- Precio (obligatorio): Precio recurrente base con moneda. El precio debe ser de al menos $1 (o el equivalente en la moneda elegida). No se admiten importes inferiores a este mínimo y la suscripción no funcionará.
- Descuento aplicable (%): Descuento porcentual opcional aplicado al precio base; se refleja en el checkout y las facturas.
- Repetir pago cada (obligatorio): Intervalo de las renovaciones, por ejemplo, cada 1 Month. Selecciona la frecuencia (meses o años) y la cantidad.
- Periodo de suscripción (obligatorio): Plazo total durante el que la suscripción permanece activa (por ejemplo, 10 Years). Una vez finalizado este periodo, las renovaciones se detienen salvo que se amplíe.
- Días del periodo de prueba (obligatorio): Define la duración de la prueba en días. Usa 0 para desactivar las pruebas. El primer cobro se realiza automáticamente cuando termina la prueba.
- Importe de prueba: Cargo inicial opcional para una prueba de pago. Déjalo sin establecer para una prueba gratuita. Consulta Pruebas de pago.
- Seleccionar complemento: Añade hasta 10 complementos que los clientes pueden comprar junto con el plan base.
Add‑ons are ideal for quantifiable extras such as seats or storage. You can control allowed quantities and proration behavior when customers change them.
Advanced settings
- Tax Inclusive Pricing: Display prices inclusive of applicable taxes. Final tax calculation still varies by customer location.
- Generate license keys: Issue a unique key to each customer after purchase. See the License Keys guide.
- Digital Product Delivery: Deliver files or content automatically after purchase. Learn more in Digital Product Delivery.
- Metadata: Attach custom key–value pairs for internal tagging or client integrations. See Metadata.
Subscription Trials
Las pruebas permiten a los clientes evaluar una suscripción antes de pagar el precio recurrente completo. Una prueba puede ser gratuita, sin ningún cargo hasta que finalice, o de pago, con un importe reducido cobrado por adelantado. En ambos casos, el precio completo comienza en la primera renovación después de que termina la prueba.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Pruebas de pago
Las pruebas no tienen que ser gratuitas. Define un Importe de prueba en el precio recurrente de un producto de suscripción para cobrar una tarifa inicial reducida durante el periodo de prueba. El precio recurrente completo se aplica en la primera renovación.
trial_amount y trial_period_days para que puedas mostrar el importe adeudado hoy antes de crear la suscripción.
Las pruebas gratuitas no cambian. Dejar Importe de prueba sin establecer mantiene el comportamiento existente: el primer cargo es
0 y el precio completo se cobra cuando termina la prueba.Prevención del uso indebido de pruebas
Prevenir el uso indebido de pruebas impide que los clientes reclamen pruebas repetidamente para el mismo negocio. Cuando está activado, un cliente que ya haya canjeado una prueba pasa automáticamente a una compra de pago sin prueba, en lugar de recibir una prueba nueva.
- Los clientes se comparan mediante un correo electrónico normalizado, eliminando los alias con signo más, por lo que
user+trial@example.comyuser@example.comse consideran la misma persona. - Los canjes se registran en la activación de la prueba, por lo que un cliente que cancele el mismo día igualmente habrá consumido su prueba.
- Los clientes existentes se incorporan usando sus pruebas históricas por correo electrónico, de modo que los usuarios de pruebas anteriores se reconocen inmediatamente.
La configuración está desactivada de forma predeterminada. Consulta Configuración de suscripciones para ver la lista completa de controles de suscripciones a nivel empresarial.
Detección del estado de una prueba
Para determinar si una suscripción de prueba gratuita está en periodo de prueba, recupera la lista de pagos de la suscripción. Si existe exactamente un pago con importe 0, la suscripción está en periodo de prueba:Actualización del periodo de prueba
Amplía la prueba actualizandonext_billing_date:
Cambios del plan de suscripción
Los cambios de plan permiten mejorar o reducir suscripciones, ajustar cantidades o migrar a productos diferentes. Según el modo de prorrateo que selecciones, un cambio puede activar un cargo inmediato, crear un crédito o no aplicar ningún ajuste de facturación.Product Collections
Agrupa productos relacionados en colecciones para habilitar rutas fluidas de mejora y reducción en el Customer Portal.
Modos de prorrateo
Elige cómo se factura a los clientes cuando cambian de plan:Comparación rápida de los cuatro modos de prorrateo:
prorated_immediately
Cobra un importe prorrateado según el tiempo restante del ciclo de facturación actual. Ideal para una facturación justa que tenga en cuenta el tiempo no utilizado.
difference_immediately
Cobra inmediatamente la diferencia de precio (mejora) o añade crédito para futuras renovaciones (reducción). Ideal para situaciones sencillas de mejora o reducción.
Los créditos de las reducciones que usan
difference_immediately están vinculados al ámbito de la suscripción y se aplican automáticamente a futuras renovaciones. Son distintos de las ventajas de Credit-Based Billing.difference_immediately, el valor no utilizado se convierte en un crédito vinculado a la suscripción que compensa automáticamente futuras renovaciones:
full_immediately
Cobra inmediatamente el importe completo del nuevo plan, ignorando el tiempo restante. Ideal para reiniciar los ciclos de facturación.
do_not_bill
Cambia al nuevo plan sin ningún ajuste de facturación. No hay cargos de prorrateo ni créditos: el cliente simplemente pasa al nuevo plan. Ideal para migraciones de cortesía, cambios a planes gratuitos o situaciones en las que quieras asumir la diferencia de coste.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Escenario: Un cliente del plan Basic (80/mes) el día 16 de un ciclo de 30 días usando Próxima renovación el 15 de febrero (16 de enero + 30 días): $80.00/mes.
prorated_immediately.Example: Downgrade credit calculation
Example: Downgrade credit calculation
Escenario: Un cliente del plan Pro (20/mes) usando El crédito de $60 se aplica automáticamente a futuras renovaciones:
difference_immediately.- Renovación 1: 20 (crédito) = **40 de crédito)
- Renovación 2: 20 (crédito) = **20 de crédito)
- Renovación 3: 20 (crédito) = $0.00 (crédito agotado)
- Renovación 4: $20.00 (precio completo)
Obtén más información sobre la gestión de créditos en la guía de mejoras y reducciones.
Cambiar de plan con complementos
Modifica los complementos al cambiar de plan. Los complementos se incluyen en los cálculos de prorrateo:De forma predeterminada (
effective_at: 'immediately'), los cambios de plan generan cargos inmediatos. Pasa effective_at: 'next_billing_date' para programar el cambio para la próxima fecha de facturación; el cambio pendiente se devuelve en la suscripción como scheduled_change, y puedes cancelarlo con Cancelar cambio de plan programado. Los cargos fallidos pueden cambiar la suscripción al estado on_hold, a menos que pases on_payment_failure: 'prevent_change', lo que mantiene la suscripción en su plan actual hasta que el pago se complete correctamente. Realiza un seguimiento de los cambios mediante eventos de webhook subscription.plan_changed.Vista previa de los cambios de plan
Antes de confirmar un cambio de plan, previsualiza el cargo exacto y la suscripción resultante:Preview Change Plan API
Previsualiza los cambios de plan antes de confirmarlos.
Pausar y reanudar suscripciones
Pausar congela una suscripción en lugar de finalizarla. La facturación se detiene, el acceso se revoca y la suscripción conserva su plan y su historial para que el cliente pueda continuar exactamente donde lo dejó. Úsalo como alternativa de retención a la cancelación. Abre cualquier suscripción activa en Ventas → Suscripciones y haz clic en Pausar suscripción. El estado cambia apaused y las renovaciones se detienen hasta que se reanude la suscripción.

Qué ocurre al pausar
- Las renovaciones se detienen. No se genera ninguna factura ni se intenta realizar ningún cargo de renovación mientras la suscripción está pausada.
- El acceso se revoca inmediatamente. Pausar revoca todos los otorgamientos de derechos entregados y pendientes de la suscripción, lo que deshabilita sus claves de licencia y evita que se emitan nuevas URL de descarga de productos digitales. Al reanudar, se vuelven a otorgar, del mismo modo que al recuperarse de
on_hold. - El reloj de facturación se congela.
next_billing_dateyexpires_atavanzan ambos exactamente durante la duración de la pausa, para que el cliente conserve el tiempo que ya pagó. - No hay un límite de duración de la pausa. Una suscripción pausada permanece pausada hasta que alguien la reanuda. No se establece por adelantado la duración de la pausa.
active y restaura sus derechos. Como el reloj estuvo congelado, la próxima renovación ocurre más tarde de lo programado originalmente, exactamente por la duración de la pausa; una suscripción pausada durante 12 días se renueva 12 días más tarde.
Pausar suscripciones basadas en uso
Una suscripción basada en uso puede tener uso registrado pero aún no facturado en el momento en que se pausa. Facturar uso al pausar, en Configuración → Suscripciones, determina qué ocurre con él:
Solo el uso medido se liquida de esta forma; la tarifa base recurrente nunca se cobra al pausar. Las suscripciones estándar y bajo demanda no tienen nada que liquidar, por lo que esta configuración no les afecta.
Facturar uso al pausar se registra por ciclo de facturación. Cambiarlo a mitad del ciclo no modifica la forma en que se liquida el ciclo que ya está en curso; el nuevo valor se aplica a partir del siguiente ciclo.
Reanudar es una salida válida de esta retención; no tienes que cobrar primero la factura de liquidación. Ten en cuenta que reanudar perdona el uso pendiente en lugar de aplazarlo.
Permitir que los clientes pausen sus propias suscripciones
Permitir pausar suscripciones, en Configuración → Suscripciones, controla si los clientes pueden pausar y reanudar desde el Customer Portal. Está desactivado de forma predeterminada, por lo que la pausa de autoservicio debe habilitarse explícitamente.
Pausing from the Customer Portal
Consulta lo que ve el cliente, incluido el diálogo de confirmación.
Pausar mediante la API
Pausar y reanudar se realizan mediante un único campopause en el endpoint de actualización de suscripciones. No existe un endpoint de pausa separado.
subscription.paused y reanudar emite subscription.unpaused. Ambos incluyen el objeto completo de la suscripción, con paused_at establecido mientras está pausada y null una vez reanudada.
Pausas y otras acciones de suscripción
- La cancelación sigue funcionando. Puedes cancelar una suscripción pausada exactamente igual que una activa. Cualquier factura de liquidación abierta derivada de la pausa se anula al hacerlo.
- Los cambios de plan programados se retrasan, no se descartan. Un cambio de plan programado para la próxima fecha de facturación permanece intacto mientras la suscripción está pausada y se aplica en la fecha de facturación desplazada una vez que se reanuda. Su
scheduled_change.effective_ates una instantánea del momento en que se programó y no se ajusta por la pausa, por lo que puede mostrar una fecha pasada; interprétalo como «estaba programado para», no como una fecha garantizada. Para descartar el cambio en lugar de mantenerlo, utiliza Cancelar cambio de plan programado.
Estados de las suscripciones
Una suscripción pasa por un conjunto definido de estados durante su ciclo de vida. Esta tabla sirve de referencia para cada estado, qué lo provoca y cómo (o si) puedes recuperarlo.on_hold e paused también son distintos. on_hold es involuntario: falló un pago. paused es deliberado: tú o el cliente decidieron congelar la suscripción, y no se intenta ninguna renovación mientras permanezca pausada. Una suscripción basada en uso todavía puede adeudar una factura de liquidación única en el momento en que se pausa; consulta Pausar suscripciones basadas en uso.Máquina de estados
Estado retenido
Una suscripción entra en el estadoon_hold cuando:
- Falla un pago de renovación (fondos insuficientes, tarjeta caducada, etc.)
- Falla un cargo por cambio de plan
- Falla la autorización del método de pago
- Una factura de liquidación de pausa de una suscripción basada en uso queda impagada
Reactivar desde el estado retenido
Para reactivar una suscripción desde el estadoon_hold, actualiza el método de pago. Esto automáticamente:
- Crea un cargo por las cuotas restantes
- Genera una factura
- Procesa el pago utilizando el nuevo método de pago
- Reactiva la suscripción al estado
activecuando el pago se realiza correctamente
La única excepción es una retención causada por una factura de liquidación de pausa impagada. Saldar esa factura devuelve la suscripción a
paused, no a active, porque la pausa era el estado anterior al fallo del pago. Reanúdala explícitamente una vez liquidada la factura.Después de actualizar correctamente el método de pago de una suscripción
on_hold, recibirás los eventos webhook payment.succeeded seguidos de subscription.active.Eventos webhook por transición
Cada transición emite un webhook para que puedas gestionar la lógica de derechos sin sondeos:Subscription Webhook Payloads
Consulta el esquema completo de carga útil para los eventos del ciclo de vida de las suscripciones.
Gestión mediante API
Create subscriptions
Create subscriptions
Usa
POST /checkouts para crear suscripciones mediante programación a partir de productos, con pruebas opcionales (subscription_data.trial_period_days) y complementos (product_cart[].addons).API Reference
Consulta la API para crear una sesión de checkout.
Update subscriptions
Update subscriptions
Usa
PATCH /subscriptions/{subscription_id} para cancelar en la próxima fecha de facturación, ampliar el periodo de la suscripción, actualizar los datos de facturación o modificar los metadatos. Para cambiar la cantidad, utiliza la API de cambio de plan; PATCH no acepta quantity.API Reference
Aprende a actualizar los datos de una suscripción.
Pause and resume subscriptions
Pause and resume subscriptions
La pausa y la reanudación utilizan el mismo endpoint
PATCH /subscriptions/{subscription_id} mediante el campo pause: pause: true pausa una suscripción activa y pause: false la reanuda. El campo no se puede combinar con ningún otro campo en la misma solicitud. Para conocer el comportamiento completo, los efectos de facturación y la configuración empresarial relacionada, consulta Pausar y reanudar suscripciones.API Reference
Consulta la API de actualización de suscripciones, incluido el campo
pause.Change plans (proration)
Change plans (proration)
Cambia el producto activo y las cantidades con controles de prorrateo.
API Reference
Revisa las opciones de cambio de plan.
On‑demand charges
On‑demand charges
Para suscripciones bajo demanda, cobra importes específicos bajo demanda.
API Reference
Cobra una suscripción bajo demanda.
List and retrieve
List and retrieve
Usa
GET /subscriptions para enumerar todas las suscripciones y GET /subscriptions/{id} para recuperar una.API Reference
Consulta las API de listado y recuperación.
Usage history
Usage history
Obtén el uso registrado para modelos de precios medidos o híbridos.
API Reference
Consulta la API del historial de uso.
Update payment method
Update payment method
Actualiza el método de pago de una suscripción. En las suscripciones activas, esto actualiza el método de pago para futuras renovaciones. En las suscripciones en estado
on_hold, reactiva la suscripción al crear un cargo por las cuotas restantes.Al generar un nuevo enlace de método de pago (el tipo de solicitud New), puedes pasar allowed_payment_method_types para limitar los métodos de pago que el cliente ve en esa página. Los clientes nunca verán un método que no esté en la lista, aunque incluir un método no garantiza que aparezca (la disponibilidad también depende de factores como la ubicación del cliente y la configuración de tu empresa).API Reference
Aprende a actualizar métodos de pago y reactivar suscripciones.
Casos de uso habituales
- SaaS y API: Acceso por niveles con complementos para puestos o uso
- Contenido y medios: Acceso mensual con pruebas introductorias
- Planes de soporte B2B: Contratos anuales con complementos de soporte premium
- Herramientas y plugins: Claves de licencia y versiones publicadas
Ejemplos de integración
Checkout Sessions (suscripciones)
Al crear sesiones de checkout, incluye tu producto de suscripción y los complementos opcionales:Cambios de plan con prorrateo
Actualiza o degrada una suscripción y controla el comportamiento del prorrateo:Cancelar en la próxima fecha de facturación
Programa una cancelación que surta efecto al final del periodo de facturación actual:Ampliar el periodo de la suscripción
Amplía la duración de una suscripción pasando un nuevosubscription_period_count y subscription_period_interval a PATCH /subscriptions/{subscription_id}. La fecha de vencimiento de la suscripción se recalcula a partir del nuevo número y el intervalo; por ejemplo, para conceder tiempo adicional a un cliente en su plan actual:
El periodo de una suscripción solo puede aumentarse, nunca acortarse.
Suscripciones bajo demanda
Crea una suscripción bajo demanda y cobra más adelante según sea necesario:Actualizar el método de pago de una suscripción activa
Actualiza el método de pago de una suscripción activa:Reactivar una suscripción desde on_hold
Reactiva una suscripción que quedó retenida debido a un pago fallido:Suscripciones con mandatos compatibles con RBI
Las suscripciones UPI y con tarjetas de la India funcionan bajo las regulaciones de RBI (Reserve Bank of India), con requisitos específicos para los mandatos:Límites de los mandatos
El tipo y el importe del mandato dependen del cargo recurrente de tu suscripción:- Cargos inferiores al mínimo del mandato (₹15.000 de forma predeterminada): Creamos un mandato bajo demanda por el importe mínimo. El importe de la suscripción se cobra periódicamente según la frecuencia de tu suscripción, hasta el límite del mandato.
- Cargos iguales o superiores al mínimo del mandato: Creamos un mandato de suscripción (o un mandato bajo demanda) por el importe exacto de la suscripción.
mandate_min_amount_inr_paise (paise de INR). El importe registrado en el banco es max(mandate_floor, billing_amount), por lo que el mínimo se convierte efectivamente en el límite de autorización visible para el cliente cuando la facturación es inferior.
Para obtener información detallada sobre los mandatos compatibles con RBI y el mínimo configurable de los mandatos para métodos de pago de la India, consulta la página Métodos de pago de la India.
Consideraciones sobre actualizaciones y degradaciones
Importante: Al actualizar o degradar suscripciones, considera cuidadosamente los límites de los mandatos:- Si una actualización o degradación genera un importe superior a 15.000 Rs y supera el límite de pago bajo demanda existente, el cargo de la transacción puede fallar.
- En estos casos, el cliente puede tener que actualizar su método de pago o volver a cambiar la suscripción para establecer un nuevo mandato con el límite correcto.
Autorización para cargos de importe elevado
Para cargos de suscripción de 15.000 Rs o más:- El banco solicitará al cliente que autorice la transacción.
- Si el cliente no autoriza la transacción, esta fallará y la suscripción quedará retenida.
Retraso de procesamiento de 48 horas
Cronología del procesamiento: Los cargos recurrentes de las tarjetas de la India y las suscripciones UPI siguen un patrón de procesamiento particular:- Los cargos se inician en la fecha programada según la frecuencia de tu suscripción.
- La deducción real de la cuenta del cliente solo ocurre después de 48 horas desde el inicio del pago.
- Este periodo de 48 horas puede extenderse hasta 2-3 horas adicionales, según las respuestas de la API del banco.
Ventana de cancelación del mandato
Durante la ventana de procesamiento de 48 horas:- Los clientes pueden cancelar el mandato mediante sus aplicaciones bancarias.
- Si un cliente cancela el mandato durante este periodo, la suscripción permanecerá activa (es un caso límite específico de las suscripciones AutoPay con tarjetas de la India y UPI).
- Sin embargo, la deducción real puede fallar y, en ese caso, la suscripción quedará retenida.
- Retrasar la activación de beneficios hasta la confirmación del pago
- Implementar periodos de gracia o acceso temporal
- Supervisar el estado de la suscripción para detectar cancelaciones de mandatos
- Gestionar los estados de retención de suscripciones en la lógica de tu aplicación
Prácticas recomendadas
- Empieza con niveles claros: 2–3 planes con diferencias evidentes
- Comunica los precios: Muestra los totales, el prorrateo y la próxima renovación
- Usa las pruebas con criterio: Convierte clientes mediante la incorporación, no solo mediante el tiempo
- Aprovecha los complementos: Mantén sencillos los planes base y ofrece extras como venta adicional
- Prueba los cambios: Valida los cambios de plan y el prorrateo en modo de prueba
Las suscripciones son una base flexible para generar ingresos recurrentes. Empieza de forma sencilla, realiza pruebas exhaustivas y repite el proceso según las métricas de adopción, abandono y expansión.