pending e aguarda que você forneça o valor da chave do seu próprio sistema, de um fornecedor terceiro ou de um conjunto finito de códigos.
Ao final, 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 completo da chave de licença e a configuração
fulfillment_mode.Fulfill License Key Grant API
Referência da API para o endpoint que você chama para entregar uma chave.
Como Funciona
O cumprimento manual altera apenas a etapa de emissão. Ativação, validação, desativação, expiração e revogação funcionam exatamente como uma chave gerada automaticamente, uma vez entregue.Pré-requisitos
Para seguir este guia, você precisará de:- Uma conta de comerciante do Dodo Payments.
- Sua chave de API (
DODO_PAYMENTS_API_KEY) e a chave secreta do webhook do painel de controle. Veja o guia de geração de chave de API. - Um endpoint de backend que possa receber webhooks.
Use
https://test.dodopayments.com e credenciais de modo de teste durante a construção. Alterne para https://live.dodopayments.com e chaves ao vivo quando for para a produção.Etapa 1 — Criar uma Autorização de Chave de Licença no Modo Manual
Uma autorização é uma definição reutilizável do que você entrega. Crie uma autorização de Chave de Licença e defina suafulfillment_mode para manual.
- Dashboard
- API
Open Entitlements
Vá para Autorizations no seu painel e clique em + para criar uma nova autorização.
Choose License Key
Selecione Chave de Licença como a integração e dê um Nome. O formulário expõe esses campos:
- Modo de Cumprimento —
Automaticpor padrão. Esta é a configuração que habilita o cumprimento manual; você a altera no próximo passo. - Duração da Licença — quanto tempo cada chave emitida permanece válida, ou Sem expiração.
- Limite de Ativações — máximo de ativações por chave, ou Ilimitado.
- Mensagem de Ativação — mensagem opcional voltada ao cliente exibida quando ele ativa a chave.

Set Fulfillment Mode to Manual
Abra o dropdown Modo de Cumprimento e altere de Automático para Manual. Esta é a configuração que conduz todo este guia — sem ela, as chaves são geradas e enviadas por e-email automaticamente e nenhuma concessão pendente é criada. Com Manual selecionado, cada compra cria uma concessão
pending para você cumprir. Clique em Criar Autorização para salvar.fulfillment_mode padrão é auto. Omitir, ou deixar uma autorização existente inalterada, mantém o comportamento automático. Somente autorizações explicitamente definidas para manual criam concessões pendentes.Etapa 2 — Anexe a Autorização a um Produto
Abra o produto que deseja vender, expanda Configurações Avançadas → Autorizações e Créditos, e selecione a autorização de Chave de Licença que definiu como Manual na Etapa 1. Um único produto pode entregar essa chave de licença junto com outras autorizações na mesma compra.
O modo de cumprimento é uma propriedade da autorização, não do produto. Porque você definiu como Manual na Etapa 1, todo produto a que essa autorização está vinculada cria concessões de chaves de licença
pending na compra — não há nada extra para configurar aqui.Etapa 3 — Detectar Concessões Pendentes
Quando um cliente compra o produto, o Dodo Payments cria uma concessão em statuspending sem chave anexada e dispara um webhook entitlement_grant.created. Este é o seu sinal de que um cliente está aguardando uma chave.
Ouça o webhook
Configure um endpoint de webhook (Desenvolvedor → Webhooks no painel) e aja sobre as concessões de chave de licença pendentes. A implementação segue a especificação Webhooks Padrão.integration_type: "license_key", para que você possa reconhecer uma concessão de chave de licença sem uma busca extra. Veja a referência de webhook de Concessão de Autorização para a carga útil completa.
Ou faça polling da API de Listagem de Concessões
Se preferir não depender de webhooks, liste as concessões para a autorização e filtre porintegration_type e status:
Etapa 4 — Entregar a Chave
Obtenha o valor da chave do seu próprio sistema, depois envie-o com o endpoint Cumprir Concessão de Chave de Licença. Isso requer sua chave de API secreta (permissão de Editor); não é um dos endpoints de licença pública.Campos de solicitação
A string da chave de licença a ser entregue ao cliente. Espaços em branco são removidos; um valor vazio ou apenas de espaço em branco é rejeitado.
Limite de ativações por chave. Retoma a configuração da autorização quando omitido.
Expiração por chave (ISO 8601). Retoma a duração da configuração da autorização quando omitido. Para concessões emitidas por assinatura, a validade permanece vinculada à assinatura independentemente.
delivered, o cliente recebe automaticamente a chave (o mesmo e-mail que receberia sob cumprimento automático), e entitlement_grant.delivered dispara.
O cliente recebe um e-mail com a chave de licença, o produto, limite de ativação, expiração e suas instruções de ativação:

Você não precisa enviar a chave por e-mail você mesmo — a entrega acontece automaticamente quando a concessão é cumprida.
Etapa 5 — Lidando com Erros e Novas Tentativas
O endpoint valida a concessão antes de entregar algo. Trate essas respostas:| Status | Significado | O que fazer |
|---|---|---|
200 | Chave entregue, concessão agora é delivered. | Concluído. |
400 | Não é uma concessão de chave de licença, ou a chave está vazia/em branco. | Corrija a solicitação; não tente novamente como está. |
404 | Nenhuma concessão com esse ID para o seu negócio. | Verifique o grant_id. |
409 | Concessão não aguardando cumprimento (já entregue ou já possui uma chave), ou o valor da chave já existe. | Se já foi entregue, trate como sucesso. Se uma chave duplicada, forneça uma chave diferente. |
422 | Corpo da solicitação falhou na validação (e.g. activations_limit < 1). | Corrija o campo e tente novamente. |
Verifique o Fluxo
- Compre o produto em modo de teste (veja os guias de checkout).
- Confirme se seu webhook recebeu
entitlement_grant.createdcomstatus: "pending"eintegration_type: "license_key", ou se a concessão aparece na resposta da Listagem de Concessões com esses filtros. - Chame o endpoint de cumprimento com uma chave de teste.
- Confirme se a resposta mostra
status: "delivered"com umlicense_keypreenchido, o cliente recebe o e-mail da chave eentitlement_grant.delivereddispara.
Uma vez entregue, o cliente pode ativar e validar a chave nos endpoints de licença pública exatamente como uma chave gerada automaticamente.
Referência de API Relacionada
Create Entitlement
Crie a autorização de Chave de Licença com
fulfillment_mode: manual.List Grants
Filtre por
integration_type e status para encontrar concessões pendentes.Fulfill License Key Grant
Entregue o valor da chave e faça a transição da concessão para entregue.
Entitlement Grant Webhooks
Os eventos
entitlement_grant.* que sinalizam concessões pendentes e entregues.Create Entitlement
Create the License Key entitlement with
fulfillment_mode: manual.List Grants
Filter by
integration_type and status to find pending grants.Fulfill License Key Grant
Deliver the key value and transition the grant to delivered.
Entitlement Grant Webhooks
The
entitlement_grant.* events that signal pending and delivered grants.