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 preço: Escolha Subscription (este guia). As alternativas são Pagamento único e Cobrança baseada em uso.
- Preço (obrigatório): Preço recorrente base com moeda. O preço deve ser de pelo menos $1 (ou o equivalente na moeda escolhida). Valores abaixo desse mínimo não são compatíveis e a assinatura não funcionará.
- Desconto aplicável (%): Desconto percentual opcional aplicado ao preço base; refletido no checkout e nas faturas.
- Repetir pagamento a cada (obrigatório): Intervalo para renovações, por exemplo, a cada 1 mês. Selecione a periodicidade (meses ou anos) e a quantidade.
- Período da assinatura (obrigatório): Prazo total durante o qual a assinatura permanece ativa (por exemplo, 10 anos). Após o término desse período, as renovações param, a menos que sejam estendidas.
- Dias do período de teste (obrigatório): Defina a duração do teste em dias. Use 0 para desativar os testes. A primeira cobrança ocorre automaticamente quando o teste termina.
- Valor do teste: Cobrança inicial opcional para um teste pago. Deixe sem definir para um teste gratuito. Consulte Testes pagos.
- Selecionar adicional: Anexe até 10 adicionais que os clientes podem comprar junto com o plano 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
Os testes permitem que os clientes avaliem uma assinatura antes de pagar o preço recorrente integral. Um teste pode ser gratuito, quando nada é cobrado até o fim do teste, ou pago, quando um valor reduzido é cobrado antecipadamente. Em ambos os casos, o preço integral começa na primeira renovação após o término do teste.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Testes pagos
Os testes não precisam ser gratuitos. Defina um Valor do teste no preço recorrente de um produto de assinatura para cobrar uma taxa inicial reduzida durante o período de teste. O preço recorrente integral passa a ser cobrado na primeira renovação.
trial_amount e trial_period_days para que você possa mostrar o valor devido hoje antes de a assinatura ser criada.
Os testes gratuitos permanecem inalterados. Deixar o Valor do teste sem definir mantém o comportamento existente, no qual a primeira cobrança é
0 e o preço integral é cobrado quando o teste termina.Evitando o uso indevido de testes
Evitar uso indevido de testes impede que os clientes reivindiquem repetidamente testes para a mesma empresa. Quando ativado, um cliente que já resgatou um teste é automaticamente convertido em uma compra paga sem teste, em vez de receber um novo teste.
- Os clientes são associados por e-mail normalizado, com os aliases contendo sinal de mais removidos, portanto
user+trial@example.comeuser@example.comsão considerados a mesma pessoa. - Os resgates são registrados na ativação do teste, portanto um cliente que cancela no mesmo dia ainda consumiu o teste.
- Os clientes existentes são preenchidos retroativamente a partir de seus testes históricos por e-mail, portanto usuários de testes anteriores são reconhecidos imediatamente.
A configuração fica desativada por padrão. Consulte Configurações de assinatura para ver a lista completa de controles de assinatura no nível da empresa.
Detectando o status do teste
Para determinar se uma assinatura de teste gratuito está em período de teste, recupere a lista de pagamentos da assinatura. Se houver exatamente um pagamento com valor 0, a assinatura está no período de teste:Atualizando o período de teste
Estenda o teste atualizandonext_billing_date:
Alterações no plano de assinatura
As alterações de plano permitem fazer upgrade ou downgrade de assinaturas, ajustar quantidades ou migrar para produtos diferentes. Dependendo do modo de rateio selecionado, uma alteração pode gerar uma cobrança imediata, criar um crédito ou não aplicar nenhum ajuste de cobrança.Product Collections
Agrupe produtos relacionados em coleções para ativar fluxos contínuos de upgrade/downgrade no Customer Portal.
Modos de rateio
Escolha como os clientes serão cobrados ao alterar planos:Comparação rápida dos quatro modos de rateio:
prorated_immediately
Cobra um valor rateado com base no tempo restante do ciclo de cobrança atual. Ideal para uma cobrança justa que considera o tempo não utilizado.
difference_immediately
Cobra imediatamente a diferença de preço (upgrade) ou adiciona crédito para renovações futuras (downgrade). Ideal para cenários simples de upgrade/downgrade.
Os créditos de downgrades que usam
difference_immediately são vinculados à assinatura e aplicados automaticamente a renovações futuras. Eles são diferentes dos benefícios do Credit-Based Billing.difference_immediately, o valor não utilizado se torna um crédito vinculado à assinatura, que compensa automaticamente renovações futuras:
full_immediately
Cobra imediatamente o valor total do novo plano, ignorando o tempo restante. Ideal para reiniciar ciclos de cobrança.
do_not_bill
Muda para o novo plano sem nenhum ajuste de cobrança. Não há cobranças de rateio nem créditos — o cliente simplesmente passa para o novo plano. Ideal para migrações de cortesia, alterações gratuitas de plano ou situações em que você deseja absorver a diferença de custo.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Cenário: O cliente do plano Basic (80/mês) no dia 16 de um ciclo de 30 dias usando 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
Cenário: O cliente do plano Pro (20/mês) usando O crédito de $60 é aplicado automaticamente a renovações futuras:
difference_immediately.- Renovação 1: 20 (crédito) = **40 de crédito)
- Renovação 2: 20 (crédito) = **20 de crédito)
- Renovação 3: 20 (crédito) = $0,00 (crédito esgotado)
- Renovação 4: $20,00 (preço integral)
Saiba mais sobre como os créditos são gerenciados no Guia de Upgrade e Downgrade.
Alterando planos com adicionais
Modifique os adicionais ao alterar planos. Os adicionais são incluídos nos cálculos de rateio:As alterações de plano geram cobranças imediatas. Cobranças malsucedidas podem mover a assinatura para o status
on_hold. Acompanhe as alterações por meio de eventos de webhook subscription.plan_changed.Visualizando alterações de plano
Antes de confirmar uma alteração de plano, visualize a cobrança exata e a assinatura resultante:Preview Change Plan API
Visualize as alterações de plano antes de confirmá-las.
Estados da assinatura
Uma assinatura passa por um conjunto definido de status durante sua vida útil. Esta tabela é a referência para cada status, o que o causa e como (ou se) é possível recuperá-lo.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 de alteração de plano falha
- A autorização do método de pagamento falha
Reativando a partir do estado em espera
Para reativar uma assinatura no estadoon_hold, atualize o método de pagamento. Isso automaticamente:
- Cria uma cobrança pelos valores pendentes
- 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
Depois de atualizar com sucesso o método de pagamento de uma assinatura
on_hold, você receberá eventos de webhook payment.succeeded seguidos de subscription.active.Eventos de webhook por transição
Cada transição emite um webhook para que você possa controlar a lógica de benefícios sem polling:Subscription Webhook Payloads
Veja o esquema completo do payload para eventos do ciclo de vida da assinatura.
Gerenciamento de API
Create subscriptions
Create subscriptions
Use
POST /subscriptions para criar assinaturas programaticamente a partir de produtos, com testes e adicionais opcionais.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 conforme necessário.
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 delas.API Reference
Consulte as APIs de listagem e recuperação.
Usage history
Usage history
Recupere o uso registrado para modelos de preços medidos ou híbridos.
API Reference
Consulte a API de histórico de uso.
Update payment method
Update payment method
Atualize o método de pagamento de uma assinatura. Para assinaturas ativas, isso atualiza o método de pagamento das renovações futuras. Para assinaturas no estado
on_hold, isso reativa a assinatura criando uma cobrança pelos valores pendentes.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 verá 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 aparecerá (a disponibilidade ainda depende de fatores como a localização do cliente e as configurações da sua empresa).API Reference
Saiba como atualizar métodos de pagamento e reativar assinaturas.
Casos de uso comuns
- SaaS e APIs: Acesso em níveis com adicionais para assentos ou uso
- Conteúdo e mídia: Acesso mensal com testes introdutórios
- Planos de suporte B2B: Contratos anuais com adicionais 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 os adicionais opcionais:Alterações de plano com rateio
Faça upgrade ou downgrade de uma assinatura e controle o comportamento do rateio:Cancelar na próxima data de cobrança
Agende um cancelamento que entrará em vigor ao final do período de cobrança atual:Estender o período da assinatura
Estenda a duração de uma assinatura passando um novosubscription_period_count e subscription_period_interval para PATCH /subscriptions/{id}. A data de expiração da assinatura é recalculada com base na nova quantidade e no intervalo — por exemplo, para conceder tempo adicional ao cliente no plano atual:
O período de uma assinatura só pode ser aumentado, nunca reduzido.
Assinaturas sob demanda
Crie uma assinatura sob demanda e cobre posteriormente conforme necessário:Atualizar o método de pagamento de uma assinatura ativa
Atualize o método de pagamento de uma assinatura ativa:Reativar uma assinatura a partir de on_hold
Reative uma assinatura que ficou em espera devido a um pagamento malsucedido:Assinaturas com mandatos em conformidade com o RBI
As assinaturas de UPI e cartões indianos operam sob as regulamentações 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 assinatura:- Cobranças abaixo do limite mínimo do mandato (₹15.000 por padrão): Criamos um mandato sob demanda para o valor mínimo. O valor da assinatura é cobrado periodicamente de acordo com a frequência da assinatura, até o limite do mandato.
- Cobranças iguais ou superiores ao limite mínimo do mandato: Criamos um mandato de assinatura (ou sob demanda) para o valor exato da assinatura.
mandate_min_amount_inr_paise (paise de INR). O valor registrado no banco é max(mandate_floor, billing_amount) — portanto, o limite se torna efetivamente o teto de autorização exibido ao cliente sempre que a cobrança for menor.
Para obter informações detalhadas sobre mandatos em conformidade com o RBI e o limite mínimo configurável para métodos de pagamento indianos, consulte a página Métodos de pagamento da Índia.
Considerações sobre upgrade e downgrade
Importante: Ao fazer upgrade ou downgrade de assinaturas, considere cuidadosamente os limites do mandato:- Se um upgrade/downgrade resultar em uma cobrança superior a Rs 15.000 e ultrapassar o limite de pagamento sob demanda existente, a cobrança da transação poderá falhar.
- Nesses casos, o cliente poderá precisar atualizar o método de pagamento ou alterar novamente a assinatura para estabelecer um novo mandato com o limite correto.
Melhores Práticas
- Comece com níveis claros: 2–3 planos com diferenças óbvias
- Comunique os preços: Mostre totais, rateio e próxima renovação
- Use testes de forma inteligente: Converta com integração, não apenas com tempo
- Aproveite os complementos: Mantenha os planos base simples e ofereça extras
- Teste alterações: Valide mudanças de plano e rateio em modo de teste
Assinaturas são uma base flexível para receita recorrente. Comece simples, teste minuciosamente e itere com base em métricas de adoção, cancelamento e expansão.
- As cobranças são iniciadas na data programada de acordo com a frequência da assinatura.
- A dedução efetiva da conta do cliente ocorre somente 48 horas após o início do pagamento.
- Essa janela de 48 horas pode se estender por mais 2 a 3 horas, dependendo das respostas da API do banco.
Janela de cancelamento do mandato
Durante a janela de processamento de 48 horas:- Os clientes podem cancelar o mandato pelos aplicativos bancários.
- Se um cliente cancelar o mandato durante esse período, a assinatura permanecerá ativa (este é um caso extremo específico de assinaturas Indian card e UPI AutoPay).
- No entanto, a dedução efetiva poderá falhar e, nesse caso, colocaremos a assinatura em espera.
- Adiar a ativação dos benefícios até a confirmação do pagamento
- Implementar períodos de carência ou acesso temporário
- Monitorar o status da assinatura para detectar cancelamentos de mandato
- Tratar estados de assinatura em espera na lógica da aplicação
Práticas recomendadas
- Comece com níveis claros: 2–3 planos com diferenças evidentes
- Comunique os preços: Mostre totais, rateio e a próxima renovação
- Use testes de forma estratégica: Converta com integração inicial, não apenas com tempo
- Aproveite os adicionais: Mantenha os planos base simples e faça upsell de extras
- Teste as alterações: Valide as alterações de plano e o rateio no modo de teste
As assinaturas são uma base flexível para receita recorrente. Comece de forma simples, teste completamente e faça iterações com base nas métricas de adoção, churn e expansão.