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:Por padrão (
effective_at: 'immediately'), as alterações de plano geram cobranças imediatas. Passe effective_at: 'next_billing_date' para agendar a alteração para a próxima data de cobrança; a alteração pendente é retornada na assinatura como scheduled_change, e você pode cancelá-la com Cancelar alteração de plano agendada. Cobranças com falha podem mover a assinatura para o status on_hold, a menos que você passe on_payment_failure: 'prevent_change', que mantém a assinatura no plano atual até que o pagamento seja bem-sucedido. 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.
Pausando e retomando assinaturas
Pausar congela uma assinatura em vez de encerrá-la. A cobrança é interrompida, o acesso é revogado e a assinatura mantém seu plano e histórico para que o cliente possa continuar exatamente de onde parou. Use isso como alternativa de retenção ao cancelamento. Abra qualquer assinatura ativa em Sales → Subscriptions e clique em Pause subscription. O status muda parapaused e as renovações são interrompidas até que a assinatura seja retomada.

O que acontece quando você pausa
- As renovações são interrompidas. Nenhuma invoice é gerada e nenhuma cobrança de renovação é tentada enquanto a assinatura estiver pausada.
- O acesso é revogado imediatamente. Pausar revoga todos os entitlement grants entregues e pendentes na assinatura, o que desabilita suas license keys e impede a emissão de novas URLs de download de digital product. Retomar concede esses itens novamente, da mesma forma que a recuperação de
on_hold. - O relógio de cobrança congela.
next_billing_dateeexpires_atavançam exatamente pelo tempo que a assinatura ficou pausada, para que o cliente mantenha o período pelo qual já pagou. - Não há limite de duração para a pausa. Uma assinatura pausada permanece assim até que alguém a retome. Você não define antecipadamente a duração da pausa.
active e restaura seus entitlements. Como o relógio foi congelado, a próxima renovação ocorre após a duração da pausa — uma assinatura pausada por 12 dias é renovada com 12 dias de atraso.
Pausando assinaturas baseadas em uso
Uma assinatura baseada em uso pode ter uso registrado, mas ainda não faturado, no momento em que é pausada. Bill Usage at Pause em Settings → Subscriptions define o que acontece com esse uso:
Somente o uso medido é liquidado dessa forma — a tarifa base recorrente nunca é cobrada no momento da pausa. Assinaturas padrão e on-demand não têm nada a liquidar, portanto essa configuração não as afeta.
Bill Usage at Pause é registrado por ciclo de cobrança. Alterá-lo no meio do ciclo não muda a forma como o ciclo em andamento é liquidado; o novo valor se aplica a partir do próximo ciclo.
Retomar é uma saída válida desse bloqueio — você não precisa cobrar a invoice de liquidação primeiro. Apenas tenha em mente que retomar perdoa o uso pendente, em vez de adiá-lo.
Permitindo que os clientes pausem suas próprias assinaturas
Allow Subscription Pause em Settings → Subscriptions controla se os clientes podem pausar e retomar pelo Customer Portal. Essa opção fica desativada por padrão, portanto a pausa self-service é opcional.
Pausing from the Customer Portal
Veja o que o cliente vê, incluindo a caixa de diálogo de confirmação.
Pausando via API
Pausar e retomar são controlados por um único campopause no endpoint de atualização de assinatura. Não existe um endpoint separado para pausar.
subscription.paused e retomar emite subscription.unpaused. Ambos contêm o objeto completo da assinatura, com paused_at definido enquanto pausada e null após a retomada.
Pausa e outras ações de assinatura
- O cancelamento continua funcionando. Você pode cancelar uma assinatura pausada exatamente como faria com uma assinatura ativa. Qualquer invoice de liquidação aberta resultante da pausa é anulada quando você faz isso.
- Alterações de plano agendadas são adiadas, não descartadas. Uma alteração de plano agendada para a próxima data de cobrança permanece intacta enquanto a assinatura está pausada e é aplicada na data de cobrança ajustada após a retomada. Seu
scheduled_change.effective_até um snapshot do momento em que foi agendada e não é ajustado pela pausa, portanto pode mostrar uma data no passado — interprete-o como “estava agendado para”, não como uma data garantida. Para descartar a alteração em vez de mantê-la, use Cancel Scheduled Plan Change.
Estados da assinatura
Uma assinatura passa por um conjunto definido de status durante sua existência. Esta tabela é a referência para cada status, o que o causa e como (ou se) você pode recuperá-lo.on_hold e paused também são distintos. on_hold é involuntário — um pagamento falhou. paused é deliberado — você ou o cliente escolheram congelar a assinatura, e nenhuma renovação é tentada enquanto ela permanece pausada. Uma assinatura baseada em uso ainda pode ter uma invoice de liquidação única pendente no momento em que é pausada; consulte Pausando assinaturas baseadas em uso.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
- Uma invoice de liquidação da pausa de uma assinatura baseada em uso não é paga
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 invoice
- Processa o pagamento usando o novo método de pagamento
- Reativa a assinatura para o estado
activeapós o pagamento bem-sucedido
A única exceção é um bloqueio causado por uma invoice de liquidação da pausa não paga. Liquidar essa invoice retorna a assinatura para
paused, não para active, pois a pausa era o estado anterior à falha do pagamento. Retome-a explicitamente depois que a invoice for liquidada.Após atualizar com sucesso o método de pagamento de uma assinatura
on_hold, você receberá eventos de webhook payment.succeeded seguidos por subscription.active.Eventos de webhook por transição
Cada transição emite um webhook para que você possa controlar a lógica de entitlements sem polling:Subscription Webhook Payloads
Veja o schema completo do payload para eventos do ciclo de vida da assinatura.
Gerenciamento pela API
Create subscriptions
Create subscriptions
Use
POST /checkouts para criar assinaturas programaticamente a partir de produtos, com trials opcionais (subscription_data.trial_period_days) e add-ons (product_cart[].addons).API Reference
Veja a API de criação de sessão de checkout.
Update subscriptions
Update subscriptions
Use
PATCH /subscriptions/{subscription_id} para cancelar na próxima data de cobrança, estender o período da assinatura, atualizar os dados de cobrança ou modificar metadados. Para alterar a quantidade, use a Change Plan API — PATCH não aceita quantity.API Reference
Saiba como atualizar os detalhes da assinatura.
Pause and resume subscriptions
Pause and resume subscriptions
Pausar e retomar usam o mesmo endpoint
PATCH /subscriptions/{subscription_id}, por meio do campo pause: pause: true pausa uma assinatura ativa e pause: false a retoma. O campo não pode ser combinado com nenhum outro campo na mesma solicitação. Para conhecer o comportamento completo, os efeitos na cobrança e as configurações comerciais relacionadas, consulte Pausando e retomando assinaturas.API Reference
Veja a API de atualização de assinatura, incluindo o campo
pause.Change plans (proration)
Change plans (proration)
Altere o produto ativo e as quantidades com controles de proration.
API Reference
Revise as opções de alteração de plano.
On‑demand charges
On‑demand charges
Para assinaturas on-demand, cobre valores específicos sob demanda.
API Reference
Cobre uma assinatura on-demand.
List and retrieve
List and retrieve
Use
GET /subscriptions para listar todas as assinaturas e GET /subscriptions/{id} para recuperar uma.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
Veja 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 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 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 add-ons para assentos ou uso
- Conteúdo e mídia: acesso mensal com trials introdutórios
- Planos de suporte B2B: contratos anuais com add-ons de suporte premium
- Ferramentas e plugins: license keys e versões lançadas
Exemplos de integração
Checkout Sessions (assinaturas)
Ao criar sessões de checkout, inclua seu produto de assinatura e os add-ons opcionais:Alterações de plano com proration
Faça upgrade ou downgrade de uma assinatura e controle o comportamento de proration:Cancelar na próxima data de cobrança
Agende um cancelamento que entre 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/{subscription_id}. A data de expiração da assinatura é recalculada a partir da nova quantidade e do intervalo — por exemplo, para conceder tempo adicional a um cliente em seu plano atual:
O período de uma assinatura só pode ser aumentado, nunca reduzido.
Assinaturas on-demand
Crie uma assinatura on-demand e faça a cobrança 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 entrou 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 os 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 assinatura:- Cobranças abaixo do limite mínimo do mandato (₹15.000 por padrão): Criamos um mandato on-demand no valor do limite 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 mandato on-demand) 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 mínimo se torna efetivamente o teto de autorização apresentado 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 India Payment Methods.
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 um valor de cobrança superior a Rs 15.000 e ultrapassar o limite de pagamento on-demand existente, a cobrança da transação poderá falhar.
- Nesses casos, o cliente poderá precisar atualizar seu método de pagamento ou alterar novamente a assinatura 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 banco solicitará que o cliente autorize a transação.
- Se o cliente não autorizar a transação, ela falhará e a assinatura será colocada em espera.
Atraso de processamento de 48 horas
Cronograma de processamento: As cobranças recorrentes em cartões indianos e assinaturas UPI seguem um padrão de processamento específico:- As cobranças são iniciadas na data agendada, de acordo com a frequência da assinatura.
- A dedução efetiva da conta do cliente ocorre somente após 48 horas do início do pagamento.
- Essa janela de 48 horas pode se estender por até 2–3 horas adicionais, 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 sua aplicação
Práticas recomendadas
- Comece com níveis claros: 2–3 planos com diferenças evidentes
- Comunique os preços: mostre totais, proration e a próxima renovação
- Use trials com critério: converta com onboarding, não apenas com tempo
- Aproveite os add-ons: mantenha os planos base simples e faça upsell de extras
- Teste as alterações: valide alterações de plano e proration no modo de teste
As assinaturas são uma base flexível para receita recorrente. Comece de forma simples, teste cuidadosamente e faça iterações com base nas métricas de adoção, churn e expansão.