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
Ao integrar assinaturas, você receberá webhooks para acompanhar o ciclo de vida da assinatura. Esses webhooks ajudam você a gerenciar estados de assinatura e cenários de pagamento de forma eficaz. Para configurar seu endpoint de webhook, siga nosso Guia de Integração Detalhado.Tipos de Eventos de Assinatura
Os seguintes eventos de webhook acompanham as mudanças de status de assinatura:subscription.active- Assinatura ativada com sucesso.subscription.updated- Objeto de assinatura foi atualizado (acionado em qualquer alteração de campo).subscription.on_hold- Assinatura suspensa devido a falha na renovação.subscription.failed- Falha na criação da assinatura durante a criação do mandato.subscription.renewed- Assinatura renovada para o próximo período de cobrança.
Cenários de Pagamento
Fluxo de Pagamento Bem-Sucedido Quando um pagamento tem sucesso, você receberá os seguintes webhooks:subscription.active- Indica ativação da assinaturapayment.succeeded- Confirma o pagamento inicial:- Para cobrança imediata (0 dias de teste): Esperado dentro de 2-10 minutos
- Para dias de teste: sempre que isso terminar
subscription.renewed- Indica dedução de pagamento e renovação para o próximo ciclo. (Basicamente, sempre que o pagamento for deduzido para produtos de assinatura, você receberá o webhooksubscription.renewedjunto compayment.succeeded)
- Falha na Assinatura
subscription.failed- Falha na criação da assinatura devido a falha na criação do mandato.payment.failed- Indica falha no pagamento.
- Assinatura em Suspenso
subscription.on_hold- Assinatura suspensa devido a falha no pagamento de renovação ou falha na cobrança de alteração de plano.- Quando uma assinatura é suspensa, ela não se renovará automaticamente até que o método de pagamento seja atualizado.
Melhor Prática: Para simplificar a implementação, recomendamos acompanhar principalmente os eventos de assinatura para gerenciar o ciclo de vida da assinatura.
subscription.failed vs. subscription.on_hold
Esses dois eventos são fáceis de confundir, mas requerem manuseio muito diferente:
Gerenciando Assinatura em Suspenso
Quando uma assinatura entra no estadoon_hold, você precisa atualizar o método de pagamento para reativá-la. Esta seção explica quando assinaturas entram em suspenso e como gerenciá-las.
Quando Assinaturas Entram em Suspenso
Uma assinatura é colocada em suspenso quando:- Falha no pagamento de renovação: A cobrança automática de renovação falha devido a fundos insuficientes, cartão expirado ou recusa do banco
- Falha na cobrança de alteração de plano: Uma cobrança imediata durante uma atualização/rebaixamento de plano falha
- Falha na autorização do método de pagamento: O método de pagamento não pode ser autorizado para cobranças recorrentes
Reativando Assinaturas em Suspenso
Para reativar uma assinatura do estadoon_hold, use a API de Atualizar Método de Pagamento. Isso automaticamente:
- Cria uma cobrança para dívidas restantes
- Gera uma fatura para a cobrança
- Processa o pagamento usando o novo método de pagamento
- Reativa a assinatura para o estado
activeapós pagamento bem-sucedido
1
Handle subscription.on_hold webhook
Quando você recebe um webhook
subscription.on_hold, atualize o estado de seu aplicativo e notifique o cliente:2
Update payment method
Quando o cliente estiver pronto para atualizar o método de pagamento, chame a API de Atualizar Método de Pagamento:
Você também pode usar um ID de método de pagamento existente se o cliente tiver métodos de pagamento salvos:
3
Monitor webhook events
Após atualizar o método de pagamento, monitore estes eventos de webhook:
payment.succeeded- A cobrança para dívidas restantes foi bem-sucedidasubscription.active- A assinatura foi reativada
Exemplo de Payload de Evento de Assinatura
Mudança nos Planos de Assinatura
Você pode fazer upgrade ou downgrade de um plano de assinatura usando o endpoint da API de mudança de plano. Isso permite que você modifique o produto da assinatura, quantidade e manipule prorratações.Change Plan API Reference
Para informações detalhadas sobre mudança de planos de assinatura, por favor, consulte nossa documentação da API de Mudança de Plano.
Opções de Prorratação
Ao mudar de planos de assinatura, você tem duas opções para lidar com a cobrança imediata:1. prorated_immediately
- Calcula o valor prorrateado com base no tempo restante no ciclo de cobrança atual
- Cobra do cliente apenas a diferença entre o plano antigo e o novo
- Durante um período de teste, isso mudará imediatamente o usuário para o novo plano, cobrando imediatamente do cliente
2. full_immediately
- Cobra do cliente o valor total da assinatura para o novo plano
- Ignora qualquer tempo restante ou créditos do plano anterior
- Útil quando você deseja reiniciar o ciclo de cobrança ou cobrar o valor total, independentemente da prorratação
3. difference_immediately
- Ao fazer upgrade, o cliente é imediatamente cobrado pela diferença entre os valores dos dois planos.
- Por exemplo, se o plano atual for 30 Dólares e o cliente fizer um upgrade para 80 Dólares, ele será cobrado $50 instantaneamente.
- Ao fazer downgrade, o valor não utilizado do plano atual é adicionado como crédito interno e aplicado automaticamente às renovações futuras da assinatura.
- Por exemplo, se o plano atual for 50 Dólares e o cliente mudar para um plano de 20 Dólares, os $30 restantes são creditados e usados no próximo ciclo de cobrança.
Comportamento
- Ao invocar esta API, o Dodo Payments inicia imediatamente uma cobrança com base na opção de prorratação selecionada
- Se a mudança de plano for um downgrade e você usar
prorated_immediately, os créditos serão calculados automaticamente e adicionados ao saldo de créditos da assinatura. Estes créditos são específicos para essa assinatura e serão usados apenas para compensar pagamentos recorrentes futuros da mesma assinatura - A opção
full_immediatelyignora cálculos de créditos e cobra o valor total do novo plano
Processamento de Cobrança
- A cobrança imediata iniciada após a mudança de plano geralmente completa o processamento em menos de 2 minutos
- Se essa cobrança imediata falhar por qualquer motivo, a assinatura é automaticamente colocada em suspenso até que o problema seja resolvido
Assinaturas Sob Demanda
Assinaturas sob demanda permitem que você cobre clientes de forma flexível, não apenas em um cronograma fixo. Este recurso está disponível para todas as contas.
on_demand no corpo da sua solicitação. Isso permite autorizar um método de pagamento sem uma cobrança imediata ou definir um preço inicial personalizado.
Para cobrar uma assinatura sob demanda:
Para cobranças subsequentes, use o endpoint POST /subscriptions//charge e especifique o valor a ser cobrado do cliente para essa transação.
Para um guia completo, passo a passo — incluindo exemplos de solicitações/respostas, políticas de nova tentativa seguras e manuseio de webhooks — veja o Guia de Assinaturas Sob Demanda.
Referência de API Relacionada
Create Subscription
Referência de API para criar produtos de assinatura e gerenciar o ciclo de vida de assinatura
Change Subscription Plan
Referência de API para fazer upgrade, downgrade ou mudar planos de assinatura com opções de prorratação
Update Payment Method
Referência de API para atualizar métodos de pagamento e reativar assinaturas em suspenso
Patch Subscription
Referência de API para atualizar detalhes e configuração de assinaturas