Skip to main content
Com o preenchimento manual de chaves de licença, cada compra cria um grant Pending que aguarda o fornecimento do valor da chave, em vez de o Dodo Payments gerar uma chave no momento do pagamento. A chave pode vir do seu próprio sistema, de um fornecedor terceirizado ou de um conjunto finito de códigos. Ao concluir este guia, você terá:
  • Um produto com uma autorização de Chave de Licença definida para cumprimento manual.
  • Um ouvinte de webhook que detecta quando um cliente está aguardando uma chave.
  • Uma chamada de cumprimento que entrega a chave e notifica o cliente automaticamente.

License Keys Overview

O ciclo de vida completo da chave de licença e a configuração fulfillment_mode.

Fulfill License Key Grant API

Referência da API para o endpoint chamado para entregar uma chave.

Como Funciona

A sequência abaixo mostra uma compra, do checkout à entrega da chave: O preenchimento manual altera apenas a etapa de emissão. Depois de entregue, a chave se comporta como uma chave gerada automaticamente para ativação, validação, desativação, expiração e revogação. Uma compra de várias unidades cria um grant Pending por unidade, e cada grant precisa da própria chave.

Pré-requisitos

Para seguir este guia, você precisa de:
  • Uma conta de comerciante do Dodo Payments.
  • Uma API key, criada em Developer → API Keys e armazenada em DODO_PAYMENTS_API_KEY, além do segredo de assinatura do webhook, obtido em Developer → Webhooks e armazenado em DODO_PAYMENTS_WEBHOOK_KEY. Consulte o guia de geração de API key.
  • Um endpoint de backend que possa receber webhooks.
Use https://test.dodopayments.com e credenciais do modo de teste enquanto desenvolve. Ao entrar em produção, altere para https://live.dodopayments.com e use as chaves do modo live.

Etapa 1 — Criar um entitlement de License Key no modo manual

Um entitlement é uma definição reutilizável do que você entrega. Crie um entitlement de License Key e defina fulfillment_mode como manual.
1

Open Entitlements

Acesse Entitlements no dashboard e clique em + para criar um entitlement.
2

Choose License Key

Selecione License Keys e informe um Name. O formulário tem estes campos:
  • Fulfillment Mode: Automatic por padrão. Essa é a configuração que habilita o preenchimento manual, e você a altera na próxima etapa.
  • License Length: por quanto tempo cada chave emitida permanece válida, ou No expiration.
  • Activations Limit: o número máximo de ativações por chave, ou Unlimited.
  • Activation Message: uma mensagem opcional voltada ao cliente, exibida quando o cliente ativa a chave e incluída no e-mail da chave de licença.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and activation message
3

Set Fulfillment Mode to Manual

Abra o menu suspenso Fulfillment Mode e altere de Automatic para Manual. O restante deste guia depende dessa configuração: sem ela, o Dodo Payments gera e envia as chaves automaticamente por e-mail e não cria nenhum grant pendente. Com Manual selecionado, cada compra cria um grant Pending para você preencher. Clique em Create Entitlement para salvar.
fulfillment_mode assume auto. Se você omiti-lo ou deixar um entitlement existente inalterado, o entitlement mantém o preenchimento automático. Somente entitlements definidos explicitamente como manual criam grants pendentes.

Etapa 2 — Associar o entitlement a um produto

Abra o produto que deseja vender, acesse a seção Entitlements e selecione o License Key entitlement definido como Manual na Etapa 1. Um produto pode entregar essa chave de licença junto com outros entitlements na mesma compra. Se você ainda não tiver um produto, crie primeiro um produto avulso ou de assinatura. Para vendê-lo por meio do checkout, consulte o Integration Guide.
Product entitlements panel with License Key selected

Selecting the License Key entitlement in the product entitlements panel.

O modo de preenchimento é uma propriedade do entitlement, não do produto. Como você o definiu como Manual na Etapa 1, todo produto associado a esse entitlement cria grants de chave de licença Pending no momento da compra. Você não precisa configurar mais nada no produto.

Etapa 3 — Detectar grants pendentes

Quando um cliente compra o produto, o Dodo Payments cria um grant com status Pending, sem nenhuma chave associada, e envia um webhook entitlement_grant.created. Esse evento indica que um cliente está aguardando uma chave.

Aguardar o webhook

Adicione um endpoint de webhook em Developer → Webhooks no dashboard e, em seguida, processe os grants de chave de licença pendentes. Os webhooks seguem a especificação Standard Webhooks, portanto você pode verificá-los com a biblioteca standardwebhooks:
O payload do grant contém integration_type: "license_key", permitindo identificar um grant de chave de licença sem uma consulta adicional. As entregas de webhook podem se repetir; portanto, ignore os eventos cujo header webhook-id você já tenha processado. Consulte a referência do webhook Entitlement Grant para ver o payload completo.

Ou consultar a API List Grants

Se preferir não depender de webhooks, liste os grants do seu entitlement de License Key e filtre por status. Todo grant de um entitlement de License Key é um grant de chave de licença, portanto você não precisa de um filtro integration_type:

Etapa 4 — Entregar a chave

Obtenha o valor da chave no seu próprio sistema e envie-o ao endpoint Fulfill License Key Grant. A chamada exige sua secret API key com permissão de Editor. Ela não é um dos endpoints públicos de licença. Os SDKs também a disponibilizam, por exemplo, como client.entitlements.grants.fulfillLicenseKey() em TypeScript e client.entitlements.grants.fulfill_license_key() em Python.

Campos da solicitação

string
obrigatório
A string da chave de licença a ser entregue ao cliente, com até 255 caracteres. Os espaços em branco ao redor são removidos, e um valor vazio ou composto apenas por espaços em branco é rejeitado.
integer
Limite de ativações por chave, de no mínimo 1. Quando omitido, aplica-se o Activations Limit do entitlement.
string
Expiração por chave (ISO 8601). Quando omitida, a chave de um grant avulso expira de acordo com o License Length do entitlement, enquanto a chave de um grant de assinatura não tem expiração, seguindo a validade da assinatura.
Em caso de sucesso, o grant muda para Delivered, o Dodo Payments envia a chave por e-mail ao cliente (o mesmo e-mail recebido no preenchimento automático) e os eventos de webhook license_key.created e entitlement_grant.delivered são disparados. O e-mail contém a chave de licença, o produto, o limite de ativações, a expiração e suas instruções de ativação:
Customer license key email showing the key, product, activation limit, expiry, and activation instructions

The license key email the customer receives once you fulfill the grant.

Você não precisa enviar a chave por e-mail. A entrega ocorre automaticamente quando o grant é preenchido.

Etapa 5 — Lidar com erros e novas tentativas

O endpoint valida o grant antes de entregar qualquer coisa. Trate estas respostas:
O preenchimento pode ser repetido com segurança em erros transitórios, como timeouts e respostas 5xx. Cada grant pode ser preenchido apenas uma vez; portanto, uma nova tentativa após uma chamada bem-sucedida, mas não confirmada, retorna 409 em vez de emitir uma segunda chave ou enviar um e-mail duplicado. Use o id do grant como sua chave de idempotência.

Verificar o fluxo

Para testar o fluxo de ponta a ponta:
  1. Compre o produto no modo de teste. Consulte os guias de checkout.
  2. Confirme que seu webhook recebeu entitlement_grant.created com status: "Pending" e integration_type: "license_key", ou que o grant aparece na resposta de List Grants filtrada por status=Pending.
  3. Chame o endpoint de preenchimento com uma chave de teste.
  4. Confirme que a resposta mostra status: "Delivered" com um license_key preenchido, que o cliente recebe o e-mail com a chave e que entitlement_grant.delivered é disparado.
Depois que a chave for entregue, o cliente poderá ativá-la e validá-la nos endpoints públicos de licença, assim como faria com uma chave gerada automaticamente.

Referência relacionada da API

Create Entitlement

Crie o entitlement de License Key com fulfillment_mode: manual.

List Grants

Filtre por status e customer_id para encontrar grants pendentes.

Fulfill License Key Grant

Entregue o valor da chave e mova o grant para Delivered.

Entitlement Grant Webhooks

Os eventos entitlement_grant.* que sinalizam grants pendentes e entregues.
Última modificação em 26 de setembro de 2026