Skip to main content

Quick Start Guide

Get your first checkout session running in under 5 minutes

API Reference & Live Testing

Explore the full API documentation and interactively test Checkout Session requests and responses.

Preview Checkout

Calculate pricing, taxes, and totals before creating a session.
Session Validity: Checkout sessions are valid for 24 hours by default. If you pass confirm=true in your request, the session will only be valid for 15 minutes.
Single-Use Links: The checkout_url returned by the API is not reusable and expires within 24 hours (or 15 minutes when confirm=true). It is intended for a single customer to complete one payment. Generate a fresh checkout session for each customer and each payment attempt rather than sharing or reusing a link.

Prerequisites

1

Dodo Payments Account

You’ll need an active Dodo Payments merchant account with API access.
2

API Credentials

Generate your API credentials from the Dodo Payments dashboard:
3

Products Setup

Create your products in the Dodo Payments dashboard before implementing checkout sessions.

Creating Your First Checkout Session

API Response

All methods above return the same response structure:
Somente session_id tem presença garantida. Dois casos retornam campos adicionais ou em menor quantidade:
  • payment_method_id foi fornecido — a cobrança é processada imediatamente e checkout_url é null. Use o payment_id retornado.
  • confirm: true criou o pagamento no momento da criação da sessão — a resposta também inclui payment_id, client_secret e publishable_key para uso com o SDK de checkout do Dodo Payments.
O checkout_url gerado é de uso único e expira em até 24 horas. Não o armazene em cache nem o reutilize entre clientes ou tentativas de pagamento — crie uma nova sessão de checkout sempre que precisar de um link atualizado.
1

Get the checkout URL

Extraia o checkout_url da resposta da API.
2

Redirect your customer

Direcione seu cliente para a URL de checkout para concluir a compra.
Opções alternativas de integração: em vez de redirecionar, você pode incorporar o checkout diretamente à sua página usando Overlay Checkout (sobreposição modal) ou Inline Checkout (totalmente incorporado). Em um aplicativo móvel nativo, encaminhe a mesma URL para os Mobile Checkout SDKs para Android, iOS, React Native ou Flutter. Todos eles usam a mesma URL de sessão de checkout.
3

Handle the return

Após o pagamento, os clientes são redirecionados para seu return_url com parâmetros de consulta que incluem o ID do pagamento/assinatura, o status, o e-mail do cliente e quaisquer chaves de licença. Consulte a documentação dos parâmetros de return_url para ver a lista completa.

Corpo da solicitação

Required Fields

Campos essenciais necessários para cada sessão de checkout

Optional Fields

Configuração adicional para personalizar sua experiência de checkout

Campos obrigatórios

array
obrigatório
Array de produtos a serem incluídos na sessão de checkout. Cada produto deve ter um product_id válido do seu painel do Dodo Payments.
Checkout misto: você pode combinar produtos de pagamento único e produtos de assinatura na mesma sessão de checkout. Isso permite casos de uso avançados, como taxas de configuração com assinaturas, pacotes de hardware com SaaS e muito mais.
Encontre os IDs dos seus produtos: você pode encontrar os IDs dos produtos no painel do Dodo Payments, em Products → View Details, ou usando a List Products API.

Campos opcionais

Configure estes campos para personalizar a experiência de checkout e adicionar lógica de negócios ao seu fluxo de pagamento.
object
Informações do cliente. Você pode associar um cliente existente usando o ID dele ou criar um novo registro de cliente durante o checkout.
Associe um cliente existente à sessão de checkout usando o ID dele.
object
Informações do endereço de cobrança para cálculo preciso de impostos, prevenção contra fraudes e conformidade regulatória.
Quando confirm é definido como true, todos os campos do endereço de cobrança se tornam obrigatórios para a criação bem-sucedida da sessão.
array
Controle quais métodos de pagamento ficam disponíveis para os clientes durante o checkout. Isso ajuda a otimizar o checkout para mercados específicos ou requisitos comerciais.Opções comuns: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, ach, multibanco, bancontact_card, eps, ideal, blik, paypal. Este não é o conjunto completo — consulte a referência da API Create Checkout Session para ver todos os valores aceitos.
Importante: sempre inclua credit e debit como opções alternativas para evitar falhas no checkout quando os métodos de pagamento preferidos estiverem indisponíveis.
Exemplo:
string
Substitua a seleção de moeda padrão por uma moeda de cobrança fixa. Usa códigos de moeda ISO 4217.Moedas compatíveis: USD, EUR, GBP, CAD, AUD, INR e outrasExemplo: "USD" para dólares americanos, "EUR" para euros
Este campo só tem efeito quando o Adaptive Currency está habilitado. Se o Adaptive Currency estiver desabilitado, a moeda padrão do produto será usada.
boolean
padrão:"false"
Exiba métodos de pagamento salvos anteriormente para clientes recorrentes, melhorando a velocidade do checkout e a experiência do usuário.
string
URL para redirecionar os clientes após a conclusão do pagamento. O Dodo Payments adiciona os seguintes parâmetros de consulta à sua URL durante o redirecionamento:Exemplos de URLs de redirecionamento:
Use os parâmetros de consulta license_key e email para exibir chaves de licença ou enviar uma confirmação imediatamente na sua página de retorno, sem precisar de uma chamada de API adicional.
string
URL para redirecionar os clientes quando eles clicarem no botão de voltar ou cancelarem a sessão de checkout. Se não for fornecida, o botão de voltar não será exibido.
Defina uma cancel_url para oferecer aos clientes uma maneira clara de retornar ao seu site sem concluir a compra. Isso melhora a experiência de checkout e reduz o atrito.
boolean
padrão:"false"
Se for true, finaliza imediatamente todos os detalhes da sessão. A API lançará um erro se houver dados obrigatórios ausentes.
array
Aplique um ou mais códigos de desconto em sequência à sessão de checkout. Os códigos são aplicados na ordem do array (o primeiro código reduz o preço-base, o segundo reduz o preço já descontado e assim por diante), até o máximo de 20 códigos por sessão.
O campo singular discount_code abaixo está obsoleto, mas ainda é totalmente compatível — as integrações existentes continuam funcionando sem alterações. Ele não pode ser combinado com discount_codes na mesma solicitação. Migre para discount_codes quando for conveniente para aproveitar a aplicação em sequência.
string
obsoleto
Obsoleto — prefira discount_codes para novas integrações. Este campo continua funcionando para compatibilidade retroativa, mas não pode ser combinado com discount_codes na mesma solicitação.
object
Pares de chave-valor personalizados para armazenar informações adicionais sobre a sessão.
boolean
Substitua o comportamento padrão de 3DS do comerciante para esta sessão.
boolean
padrão:"false"
Habilite o modo de coleta mínima de endereço. Quando habilitado, o checkout coleta apenas:
  • País: sempre obrigatório para a determinação de impostos
  • ZIP/Código postal: somente em regiões onde é necessário para o cálculo de sales tax, VAT ou GST
Isso reduz significativamente o atrito no checkout ao eliminar campos de formulário desnecessários.
Habilite o endereço mínimo para concluir o checkout mais rapidamente. A coleta do endereço completo continua disponível para empresas que exigem detalhes completos de cobrança.
string
Um método de pagamento salvo pertencente ao cliente associado. Requer confirm: true e um customer.customer_id existente. Quando definido, a cobrança é processada imediatamente e checkout_url é retornado como null — use o payment_id retornado.
Se for true, retorna uma URL de checkout encurtada em vez da URL completa da sessão.
string
ID da coleção de produtos para o fluxo de checkout baseado em coleção.
string
ID fiscal do cliente (por exemplo, um número de VAT). Requer billing_address com um country.
string
Nome comercial ou jurídico opcional associado ao ID fiscal. Quando fornecido juntamente com um tax_id válido, ele é exibido na fatura em vez do nome pessoal do cliente.
integer
Substitua o limite mínimo de mandato no nível do comerciante (em paise de INR) para e-mandates de INR em cartões indianos.
object
Personalize a aparência e o comportamento da interface de checkout.
object
Configure recursos e comportamentos específicos para a sessão de checkout.
array
Colete informações adicionais dos clientes durante o checkout usando campos personalizados de formulário. Você pode definir até 5 campos personalizados por sessão de checkout. As respostas dos clientes são incluídas nos payloads de webhook e ficam disponíveis pela API.
As respostas dos clientes aos campos personalizados são incluídas em:
  • Webhooks: payment.succeeded, subscription.active e outros payloads de eventos relevantes contêm o array custom_field_responses
  • Respostas da API: os objetos de pagamento e assinatura incluem custom_field_responses
object
Configuração adicional para sessões de checkout que contêm produtos de assinatura.

Exemplos de uso

Veja 10 exemplos completos que apresentam diferentes configurações de sessões de checkout para vários cenários comerciais:

1. Checkout simples de um único produto

2. Carrinho com vários produtos

3. Assinatura com período de teste

4. Checkout pré-confirmado

Quando confirm é definido como true, o cliente é levado diretamente à página de checkout, ignorando todas as etapas de confirmação.

5. Checkout com substituição de moeda

A substituição de billing_currency só entra em vigor quando o Adaptive Currency está habilitado nas configurações da sua conta. Se o Adaptive Currency estiver desabilitado, este parâmetro não terá efeito.

6. Métodos de pagamento salvos para clientes recorrentes

7. Checkout B2B com coleta de ID fiscal

8. Checkout com tema escuro e códigos de desconto em sequência

9. Métodos de pagamento regionais (UPI para a Índia)

Para obter informações detalhadas sobre a configuração e os testes de UPI, consulte a página Métodos de pagamento da Índia.

10. Checkout BNPL (Buy Now Pay Later)

Para obter informações detalhadas sobre a configuração e os testes de BNPL, consulte a página Buy Now Pay Later (BNPL).

11. Uso de métodos de pagamento existentes para checkout instantâneo

Use o método de pagamento salvo de um cliente para criar uma sessão de checkout que seja processada imediatamente, ignorando a coleta do método de pagamento:
Ao usar payment_method_id, confirm deve ser definido como true e um customer_id existente deve ser fornecido. O método de pagamento será validado quanto à elegibilidade com a moeda do pagamento. Como a cobrança é processada imediatamente, checkout_url é retornado como null — use o payment_id retornado.
O método de pagamento deve pertencer ao cliente e ser compatível com a moeda do pagamento. Isso permite compras com um clique para clientes recorrentes.
Gere links de pagamento encurtados e compartilháveis com slugs personalizados:
Links curtos são perfeitos para compartilhamento por SMS, e-mail ou redes sociais. Eles são mais fáceis de memorizar e geram mais confiança nos clientes do que URLs longas.

13. Ignorar a página de sucesso do pagamento com redirecionamento imediato

Redirecione os clientes imediatamente após a conclusão do pagamento, ignorando a página de sucesso padrão:
Use redirect_immediately: true quando tiver uma página de sucesso personalizada que ofereça uma experiência melhor do que a página de sucesso padrão do pagamento. Isso é especialmente útil para aplicativos móveis e fluxos de checkout incorporados.
Quando redirect_immediately está habilitado, os clientes são redirecionados para seu return_url imediatamente após a conclusão do pagamento, ignorando completamente a página de sucesso padrão.

14. Forçar um idioma

Force o checkout a ser exibido em um idioma específico, substituindo a detecção do idioma do navegador do cliente:
Use force_language quando souber o idioma preferido do cliente (por exemplo, nas configurações da conta) ou ao segmentar mercados regionais específicos.
Idiomas compatíveis: árabe (ar), catalão (ca), chinês (zh), holandês (nl), inglês (en), francês (fr), alemão (de), hebraico (he), indonésio (id), italiano (it), japonês (ja), coreano (ko), malaio (ms), polonês (pl), português (pt), romeno (ro), russo (ru), espanhol (es), sueco (sv), tailandês (th), turco (tr)

15. Coletar campos personalizados

Colete informações adicionais dos clientes durante o checkout usando campos personalizados:
As respostas dos campos personalizados são incluídas automaticamente nos payloads de webhook (payment.succeeded, subscription.active etc.) e podem ser recuperadas pela API. Use-as para enriquecer seu CRM, acionar fluxos de onboarding ou personalizar a experiência do cliente.
Tipos de campo disponíveis: text, number, email, url, date, dropdown, boolean

Visualizar sessões de checkout

Antes de criar uma sessão de checkout, você pode visualizar o detalhamento de preços, incluindo impostos, descontos e totais. Isso é útil para exibir preços precisos aos clientes antes que eles avancem para o checkout.
Quando o carrinho contém um produto de assinatura, a resposta de visualização também retorna um next_billing_date — uma prévia da próxima data de cobrança, para que você possa exibi-la antes da criação da assinatura. Ela é calculada em relação ao momento atual: now + trial period quando há um período de teste; caso contrário, now + one payment frequency. O campo é omitido para carrinhos exclusivamente de compras únicas. Esta é uma estimativa baseada no momento da visualização; o next_billing_date oficial é definido quando a assinatura é ativada.
A visualização também retorna trial_period_days (a duração efetiva do período de teste, gratuito ou pago) e trial_amount (a cobrança de teste por unidade após os descontos, nas unidades menores da moeda do preço). trial_amount está presente somente para um teste pago e é null para um teste gratuito ou sem teste. Use current_breakup para obter o total tributado efetivamente devido hoje.

Preview API Reference

Veja a documentação completa do endpoint de visualização.

Principais diferenças

Anteriormente, ao criar um link de pagamento com Dynamic Links, era necessário fornecer o endereço de cobrança completo do cliente. Com Checkout Sessions, isso não é mais necessário. Você pode simplesmente enviar as informações que tiver, e cuidaremos do restante. Por exemplo:
  • Se você souber apenas o país de cobrança do cliente, forneça somente essa informação.
  • O fluxo de checkout coletará automaticamente os dados ausentes antes de levar o cliente à página de pagamento.
  • Por outro lado, se você já tiver todas as informações necessárias e quiser ir diretamente para a página de pagamento, poderá enviar o conjunto completo de dados e incluir confirm=true no corpo da solicitação.

Processo de migração

A migração de Dynamic Links para Checkout Sessions é simples:
1

Update your integration

Atualize sua integração para usar o novo método da API ou do SDK.
2

Adjust request payload

Ajuste o payload da solicitação de acordo com o formato de Checkout Sessions.
3

That's it!

Sim. Nenhum tratamento adicional ou etapa especial de migração é necessário da sua parte.

Referência da API relacionada

Create Checkout Session

Referência completa da API para criar sessões de checkout com todos os parâmetros e opções disponíveis

Preview Checkout Session

Referência da API para visualizar preços, impostos e totais antes de criar uma sessão
Última modificação em 17 de agosto de 2026