As chaves de licença são o tipo de direito de Chave de Licença. Crie um direito de Chave de Licença uma vez com o limite de ativação, expiração e instruções desejadas, anexe a qualquer produto, e o Dodo Payments gera e entrega uma chave por compra ou assento de assinatura, automaticamente.
O que são Chaves de Licença?
Chaves de licença são tokens únicos que autorizam o acesso ao seu produto. Elas são ideais para:- Licenciamento de software: Aplicativos de desktop, plugins e CLIs
- Controles por usuário: Limitar ativações por usuário ou dispositivo
- Bens digitais: Restringir downloads, atualizações ou recursos premium
Criar um Direito de Chave de Licença
1
Open Entitlements
Vá para Entitlements no seu painel do Dodo Payments e clique em + para criar um novo direito.
2
Choose License Key
Selecione License Key como a integração. Configure como cada chave emitida deve se comportar:
- Limite de Ativações: Máximo de ativações simultâneas por chave (por exemplo,
1para usuário único,5para licenças de equipe, deixar em branco para ilimitado). - Duração: Quanto tempo a chave permanece válida após a emissão (por exemplo, 30 dias, 1 ano). Para chaves emitidas por assinatura, deixe em branco; as chaves permanecem válidas enquanto a assinatura estiver ativa.
- Instruções de Ativação: Instruções orientadas ao cliente enviadas por e-mail com a chave. Exemplos:
Paste the key in Settings → LicenseouRun: mycli activate <key>.

3
Save the entitlement
Salvar. O direito agora está disponível para ser anexado a qualquer produto.
Anexar a Produtos
Abra um produto, expanda Configurações Avançadas → Direitos & Créditos, e selecione seu direito de Chave de Licença. Um único produto pode entregar uma chave de licença junto com outros direitos (acesso ao Discord, downloads de arquivos, acesso ao repositório do GitHub, etc.) na mesma compra.
Selecting the License Key entitlement in the product entitlements panel.
Como as Chaves são Emitidas
A emissão de chaves segue o ciclo de concessão padrão:Comportamento de Quantidade
- Produtos por assinatura emitem uma chave por assento (
subscriptions.quantity). - Produtos únicos emitem uma chave por item de linha do carrinho (
product_cart.quantity). - Concessões manuais de API emitem exatamente uma chave.
Modo de cumprimento
Cada direito de Chave de Licença tem umfulfillment_mode que controla quem fornece a chave:
auto(padrão): Dodo Payments gera e envia a chave automaticamente por e-mail após o pagamento ou a assinatura. Esse é o comportamento descrito acima e se aplica quandofulfillment_modenão é especificado.manual: a compra cria uma concessãoPendingsem chave, e você fornece cada valor de chave manualmente. Consulte Atendimento manual abaixo.
Cumprimento Manual
Por padrão, Dodo Payments gera e envia uma chave de licença por e-mail assim que o cliente efetua o pagamento. Com o atendimento manual, você fornece a chave: a compra cria uma concessãoPending sem chave, notifica você e aguarda o envio do valor da chave. Use essa opção quando as chaves vierem do seu próprio sistema, de um fornecedor terceirizado ou de um conjunto limitado de códigos pré-impressos.
Procurando uma construção passo a passo? Veja o Guia de Integração de Cumprimento Manual de Chave de Licença para um passo a passo completo desde a criação do produto até a entrega da chave.
Quando usar
A execução automática é o padrão adequado para a maioria das licenças de software. Escolha o cumprimento manual quando o Dodo Payments não puder gerar a chave por conta própria:- Traga suas próprias chaves: A chave é gerada por seu aplicativo, um produto de desktop ou seu próprio servidor de licenças.
- Fornecedores terceiros: Você revende chaves emitidas por um fornecedor upstream (uma chave de jogo, uma credencial de API, uma plataforma parceira).
- Inventário finito: Você distribui códigos de um pool pré-alocado e deseja atribuí-los um a um.
- Revisão humana: Você quer verificar uma compra antes de liberar o acesso.
Habilitar cumprimento manual
Definafulfillment_mode: "manual" na configuração de integração do direito da Chave de Licença:
fulfillment_mode é compatível com versões anteriores. Direitos criados antes de essa configuração existir não têm fulfillment_mode e continuam a se comportar como auto. A mudança para manual só afeta concessões criadas após a alteração; chaves já entregues não são tocadas.Encontrar concessões aguardando cumprimento
Quando um cliente compra um produto no modo manual, a concessão é criada com o statusPending e sem chave, e um webhook entitlement_grant.created é acionado com integration_type: "license_key" e status: "Pending". Você pode reagir a esse webhook ou consultar o endpoint Listar concessões do cliente usando os filtros integration_type e status:
Entregar a chave
Envie a chave usando o endpoint Cumprir concessão de chave de licença. A concessão passa paraDelivered, e a chave é enviada automaticamente ao cliente — no mesmo e-mail que ele receberia no atendimento automático.
cURL
activations_limit e expires_at são opcionais e voltam à configuração do direito quando omitidos. Cada concessão pode ser cumprida uma vez; tentar cumprir novamente uma concessão já cumprida retorna 409 em vez de emitir uma segunda chave.
Você não precisa enviar a chave por e-mail — a entrega acontece automaticamente quando a concessão é cumprida. Isso difere de importar chaves via
POST /license_keys, que intencionalmente não notifica o cliente.Ativação, Validação, Desativação
Os endpoints de ativação/validação/desativação da API são públicos e não requerem chave de API. Use-os diretamente a partir de software de desktop, CLIs ou clientes baseados em navegador para verificar chaves em tempo de execução.Endpoints Públicos: Os endpoints de ativação, desativação e validação de licença são públicos e não exigem chave de API. Chame-os diretamente de suas aplicações clientes sem expor suas credenciais de API.
Ativar uma licença
Validar uma licença
Desativar uma instância de ativação
Gerenciar Chaves
Abra o direito de Chave de Licença no seu dashboard para ver cada concessão (uma linha por chave de cliente) com data de entrega, contagem de ativações e uma ação de revogação. Cada detalhe da concessão revela a chave de licença subjacente, validade, ativações usadas e o limite de ativações. Você também pode listar concessões programaticamente:Importar Chaves de Licença Existentes via API
Já tem chaves de licença em outro sistema? Use a API Create License Key para importá-las para o Dodo Payments. Isso permite migrar chaves existentes sem interromper seus clientes — eles continuam a ativar, validar e desativar usando as mesmas strings de chaves sem reemissão.Como as chaves diferem por fonte
Use the
source field on license-key records to distinguish migrated inventory and manually fulfilled keys from organically issued keys when reconciling or auditing. Read it from the license_key object on grants returned by List Grants; the legacy GET /license_keys endpoint is deprecated.
Chaves de Licença na URL de Retorno
Quando um cliente conclui uma compra de um produto com direito a Chave de Licença, a chave gerada é automaticamente anexada à suareturn_url como um parâmetro de consulta. Isso permite exibir a chave imediatamente na sua página de sucesso sem fazer uma chamada de API extra.
subscription_id é usado em vez de payment_id:
Gerenciamento de API
Lifecycle Operations (Public Endpoints)
Lifecycle Operations (Public Endpoints)
Ativação, desativação e validação são públicas; não é necessária chave de API.
Activate License
Crie ou registre uma instância de ativação para uma chave de licença.
Deactivate License
Revogue uma ativação anterior para liberar capacidade.
Validate License
Verifique a autenticidade, status e restrições antes de conceder acesso.
License Key Management
License Key Management
Crie, liste, recupere e atualize registros individuais de chaves de licença. Use-os para importar chaves existentes ou buscar detalhes de uso.
Create License Key
Create a new license key or import an existing one.
List License Keys
Browse all keys with status and usage details.
Get License Key
Retrieve a specific key and its metadata.
Update License Key
Modify expiry, activation limits, or enable/disable a key.
Entitlement Management
Entitlement Management
Manage the License Key entitlement itself: its activation limit, duration, and instructions.
Create Entitlement
Create a License Key entitlement.
Update Entitlement
Update the entitlement’s configuration.
List Grants
List the keys issued for an entitlement.
Revoke Grant
Manually revoke a customer’s key.
Webhooks
License-key delivery and revocation fire the fourentitlement_grant.* webhook events. The grant payload includes a populated license_key object with the key, expiry, activations used, and limit.
The legacy license_key.* events (license_key.created) continue to fire for the underlying license-key record lifecycle; see the License Key webhook payload page.
Legacy License Keys
Products created with the older
license_key_enabled flag have been automatically migrated to a License Key entitlement. The migration is transparent: existing customers’ keys continue to work unchanged, the public /licenses/activate, /licenses/validate, /licenses/deactivate endpoints continue to function, and the /license_keys/* API endpoints continue to read and write to the same key store.The standalone License Keys dashboard section remains available as a flat list of every key issued, useful for audit and search. New configuration (changing activation limits, durations, or instructions) should be done by editing the migrated License Key entitlement under Entitlements.Best Practices
- Keep activation limits clear: Choose sensible defaults (1 for single-user apps, 3–5 for team licenses) and document them.
- Provide precise activation instructions: Customers paste these from their email, so exact paths and commands save support tickets.
- Validate keys server-side: For network-connected products, validate via
/licenses/validaterather than caching activation locally. - Use webhooks for revocation: Listen to
entitlement_grant.revokedto disable in-app features immediately when a customer cancels or refunds. - Test with subscriptions and one-times: License key behavior differs subtly between the two, so test both before going live.