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
1
Open Entitlements
Vá para Autorizations no seu painel e clique em + para criar uma nova autorização.
2
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.

3
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.
Selecting the License Key entitlement in the product entitlements panel.
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:
Se você preferir não depender de webhooks, liste as concessões para o direito de Chave de Licença e filtre por status. Toda concessão em um direito de Chave de Licença já é uma concessão de chave de licença, então nenhum filtro integration_type é necessário:
Node.js
Node.js
cURL
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:

The license key email the customer receives once you fulfill the grant.
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: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.