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
- Pricing Type: Choose Subscription (this guide). Alternatives are Single Payment and Usage Based Billing.
- Price (required): Base recurring price with currency.
- Discount Applicable (%): Optional percentage discount applied to the base price; reflected in checkout and invoices.
- Repeat payment every (required): Interval for renewals, e.g., every 1 Month. Select the cadence (months or years) and quantity.
- Subscription Period (required): Total term for which the subscription remains active (e.g., 10 Years). After this period ends, renewals stop unless extended.
- Trial Period Days (required): Set trial length in days. Use 0 to disable trials. The first charge occurs automatically when the trial ends.
- Select add‑on: Attach up to 10 add‑ons that customers can purchase alongside the base plan.
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
Trials let customers access subscriptions without immediate payment. The first charge occurs automatically when the trial ends.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Detecting Trial Status
To determine if a subscription is in trial, retrieve the list of payments for the subscription. If there is exactly one payment with amount 0, the subscription is in trial period:Updating Trial Period
Extend the trial by updatingnext_billing_date:
Subscription Plan Changes
Plan changes let you upgrade or downgrade subscriptions, adjust quantities, or migrate to different products. Depending on the proration mode you select, a change may trigger an immediate charge, create credit, or apply no billing adjustment.Product Collections
Group related products into collections to enable seamless upgrade/downgrade paths in the Customer Portal.
Proration Modes
Choose how customers are billed when changing plans:Quick comparison of the four proration modes:
prorated_immediately | difference_immediately | full_immediately | do_not_bill | |
|---|---|---|---|---|
| Upgrade | Cobrança proporcional pelos dias restantes | Diferença de preço total cobrada | Preço total do novo plano cobrado | Sem cobrança — troca imediata |
| Downgrade | Crédito proporcional pelos dias restantes | Diferença de preço total como crédito | Sem crédito, cobrança total | Sem crédito — troca imediata |
| Ciclo de faturamento | Reinicia hoje | Reinicia hoje | Reinicia hoje | Permanece o mesmo |
| Melhor para | Cobrança justa baseada no tempo | Mudanças simples de nível | Reinicialização do ciclo de faturamento | Migrações gratuitas ou trocas de cortesia |
prorated_immediately
Charges prorated amount based on remaining time in the current billing cycle. Best for fair billing that accounts for unused time.
difference_immediately
Charges the price difference immediately (upgrade) or adds credit for future renewals (downgrade). Best for simple upgrade/downgrade scenarios.
Credits from downgrades using
difference_immediately are subscription-scoped and auto-applied to future renewals. They’re distinct from Credit-Based Billing entitlements.difference_immediately, the unused value becomes a subscription-scoped credit that automatically offsets future renewals:
full_immediately
Charges full new plan amount immediately, ignoring remaining time. Best for resetting billing cycles.
do_not_bill
Switches to the new plan without any billing adjustment. No proration charges, no credits — the customer simply moves to the new plan. Best for courtesy migrations, free plan switches, or scenarios where you want to absorb the cost difference.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Scenario: Customer on Basic (80/month) on day 16 of a 30-day cycle using Próxima renovação em 15 de fevereiro (16 de janeiro + 30 dias): $80.00/mês.
prorated_immediately.Example: Downgrade credit calculation
Example: Downgrade credit calculation
Scenario: Customer on Pro (20/month) using The $60 credit auto-applies to future renewals:
difference_immediately.- Renewal 1: 20 (credit) = **40 credit remaining)
- Renewal 2: 20 (credit) = **20 credit remaining)
- Renewal 3: 20 (credit) = $0.00 (credit exhausted)
- Renewal 4: $20.00 (full price)
Learn more about how credits are managed in the Upgrade & Downgrade Guide.
Changing Plans with Add-ons
Modify add-ons when changing plans. Add-ons are included in proration calculations:Plan changes trigger immediate charges. Failed charges may move the subscription to
on_hold status. Track changes via subscription.plan_changed webhook events.Previewing Plan Changes
Before committing to a plan change, preview the exact charge and resulting subscription:Preview Change Plan API
Preview plan changes before committing to them.
Subscription States
Uma assinatura passa por um conjunto definido de status ao longo de seu ciclo de vida. Esta tabela é a referência para cada status, o que o causa e como (ou se) você pode recuperá-lo.| Status | O que significa | Recuperável? | Caminho de recuperação / próximo passo |
|---|---|---|---|
pending | A assinatura está sendo criada ou processada | — | Aguardar subscription.active (ou subscription.failed) |
active | A assinatura está ativa e será renovada automaticamente | — | Nenhuma ação necessária |
on_hold | Um pagamento de renovação (ou cobrança por alteração de plano) falhou; a assinatura está em pausa | Sim | Atualizar o método de pagamento para reativar — automaticamente via Repetições de Pagamento e Cobrança, ou manualmente via a API de Atualização de Método de Pagamento |
cancelled | A assinatura foi cancelada e não será renovada | Somente nova compra | O cliente deve iniciar uma nova assinatura; Cobrança pode solicitar uma nova compra |
failed | A criação da assinatura falhou (o mandato inicial ou pagamento não obteve sucesso) | Não — terminal | O cliente deve criar uma nova assinatura com um método de pagamento funcional |
expired | A assinatura atingiu o fim do seu termo | — | O cliente deve começar uma nova assinatura, se desejar |
Máquina de Estados
Estado Em Espera
Uma assinatura entra no estadoon_hold quando:
- Um pagamento de renovação falha (fundos insuficientes, cartão expirado, etc.)
- Uma cobrança para alteração de plano falha
- A autorização do método de pagamento falha
Reativando do Estado Em Espera
Para reativar uma assinatura do estadoon_hold, atualize o método de pagamento. Isso automaticamente:
- Cria uma cobrança para as dívidas restantes
- Gera uma fatura
- Processa o pagamento usando o novo método de pagamento
- Reativa a assinatura para o estado
activeapós o pagamento bem-sucedido
Após atualizar com sucesso o método de pagamento para uma assinatura
on_hold, você receberá eventos de webhook payment.succeeded seguidos por subscription.active.Eventos Webhook por Transição
Cada transição emite um webhook para que você possa gerenciar a lógica de direito sem polling:| Transição | Evento |
|---|---|
| Assinatura ativada | subscription.active |
| Renovação bem-sucedida | subscription.renewed |
| Renovação falha → pausado | subscription.on_hold |
| Criação falha | subscription.failed |
| Plano atualizado/degradado | subscription.plan_changed |
| Cancelado | subscription.cancelled |
| Termo encerrado | subscription.expired |
| Quaisquer alterações de campo | subscription.updated |
Subscription Webhook Payloads
Veja o esquema completo de payload para eventos do ciclo de vida de assinaturas.
Gerenciamento de API
Create subscriptions
Create subscriptions
Use
POST /subscriptions para criar assinaturas programaticamente a partir de produtos, com testes opcionais e complementos.API Reference
Veja a API de criação de assinatura.
Update subscriptions
Update subscriptions
Use
PATCH /subscriptions/{id} para atualizar quantidades, cancelar na próxima data de cobrança ou modificar metadados.API Reference
Saiba como atualizar os detalhes da assinatura.
Change plans (proration)
Change plans (proration)
Altere o produto ativo e as quantidades com controles de rateio.
API Reference
Revise as opções de alteração de plano.
On‑demand charges
On‑demand charges
Para assinaturas sob demanda, cobre valores específicos sob demanda.
API Reference
Cobre uma assinatura sob demanda.
List and retrieve
List and retrieve
Use
GET /subscriptions para listar todas as assinaturas e GET /subscriptions/{id} para recuperar uma.API Reference
Veja as APIs de listagem e recuperação.
Usage history
Usage history
Busque o uso registrado para modelos de preços medidos ou híbridos.
API Reference
Veja a API de histórico de uso.
Update payment method
Update payment method
Atualize o método de pagamento para uma assinatura. Para assinaturas ativas, isso atualiza o método de pagamento para renovações futuras. Para assinaturas no estado
on_hold, isso reativa a assinatura ao criar uma cobrança para as dívidas restantes.Ao gerar um novo link de método de pagamento (o tipo de solicitação New), você pode passar allowed_payment_method_types para restringir quais métodos de pagamento o cliente vê nessa página. Os clientes nunca verão um método que não esteja na lista, embora incluir um método não garanta que ele apareça (a disponibilidade ainda depende de fatores como localização do cliente e configurações da sua empresa).API Reference
Saiba como atualizar os métodos de pagamento e reativar assinaturas.
Casos de Uso Comuns
- SaaS e APIs: Acesso em níveis com complementos para assentos ou uso
- Conteúdo e mídia: Acesso mensal com testes introdutórios
- Planos de suporte B2B: Contratos anuais com complementos de suporte premium
- Ferramentas e plugins: Chaves de licença e lançamentos versionados
Exemplos de Integração
Sessões de Checkout (assinaturas)
Ao criar sessões de checkout, inclua seu produto de assinatura e complementos opcionais:Alterações de plano com prorrateio
Faça upgrade ou downgrade de uma assinatura e controle o comportamento de prorrateio:Cancelar na próxima data de cobrança
Agende um cancelamento que entre em vigor no final do período de cobrança atual:Assinaturas sob demanda
Crie uma assinatura sob demanda e cobre mais tarde conforme necessário:Atualizar método de pagamento para assinatura ativa
Atualize o método de pagamento para uma assinatura ativa:Reativar assinatura de on_hold
Reative uma assinatura que ficou em espera devido a falha no pagamento:Assinaturas com Mandatos Compatíveis com RBI
UPI e assinaturas de cartão indiano operam sob regulamentos do RBI (Reserve Bank of India) com requisitos específicos de mandato:Limites de Mandato
O tipo e o valor do mandato dependem da cobrança recorrente da sua assinatura:- Cobranças abaixo do piso do mandato (padrão ₹15.000): Criamos um mandato sob demanda para o valor do piso. O valor da assinatura é cobrado periodicamente de acordo com a frequência da sua assinatura, até o limite do mandato.
- Cobranças no piso do mandato ou acima dele: Criamos um mandato de assinatura (ou mandato sob demanda) para o valor exato da assinatura.
mandate_min_amount_inr_paise (INR paise). O valor registrado junto ao banco é max(mandate_floor, billing_amount) — assim, o piso efetivamente se torna o teto de autorização visível para o cliente sempre que a cobrança for menor.
Para informações detalhadas sobre mandatos compatíveis com RBI e o piso de mandato configurável para métodos de pagamento indianos, veja a página Métodos de Pagamento na Índia.
Considerações sobre Upgrade e Downgrade
Importante: Ao fazer upgrade ou downgrade de assinaturas, considere cuidadosamente os limites de mandato:- Se um upgrade/downgrade resultar em um valor de cobrança que excede Rs 15.000 e ultrapassa o limite de pagamento sob demanda existente, a cobrança da transação pode falhar.
- Nesses casos, o cliente pode precisar atualizar seu método de pagamento ou alterar a assinatura novamente para estabelecer um novo mandato com o limite correto.
Autorização para Cobranças de Alto Valor
Para cobranças de assinatura de Rs 15.000 ou mais:- O cliente será solicitado por seu banco a autorizar a transação.
- Se o cliente não autorizar a transação, a transação falhará e a assinatura será colocada em espera.
Atraso de Processamento de 48 Horas
Cronograma de Processamento: Cobranças recorrentes em cartões indianos e assinaturas UPI seguem um padrão de processamento único:- Cobranças são iniciadas na data programada de acordo com a frequência da sua assinatura.
- A dedução real da conta do cliente ocorre apenas após 48 horas da iniciação do pagamento.
- Esta janela de 48 horas pode se estender até 2-3 horas adicionais dependendo das respostas da API bancária.
Janela de Cancelamento de Mandato
Durante a janela de processamento de 48 horas:- Os clientes podem cancelar o mandato através de seus aplicativos bancários.
- Se um cliente cancelar o mandato durante esse período, a assinatura permanecerá ativa (este é um caso específico para assinaturas AutoPay de cartões indianos e UPI).
- No entanto, a dedução real pode falhar e, nesse caso, colocaremos a assinatura em espera.
- Atrasar a ativação dos benefícios até confirmação do pagamento
- Implementar períodos de carência ou acesso temporário
- Monitorar o status da assinatura para cancelamentos de mandato
- Lidar com estados de espera de assinatura na lógica do seu aplicativo
Melhores Práticas
- Comece com níveis claros: 2–3 planos com diferenças óbvias
- Comunique preços: Mostre totais, prorrateio e próxima renovação
- Use testes com cautela: Converta com integração, não apenas tempo
- Aproveite os complementos: Mantenha os planos base simples e ofereça extras
- Teste alterações: Valide alterações de plano e prorrateio no modo de teste
Assinaturas são uma base flexível para receita recorrente. Comece simples, teste minuciosamente e itere com base em adoção, churn e métricas de expansão.