Skip to main content
As chaves de licença são o tipo de entitlement License Key. Crie um entitlement License Key uma vez, com o limite de ativação, a expiração e a mensagem de ativação desejados, e depois associe-o a qualquer produto. Por padrão, Dodo Payments gera e envia por email uma chave para cada unidade comprada ou para cada assento de assinatura.

O que são chaves de licença?

Uma chave de licença é um token exclusivo que autoriza o acesso ao seu produto. Use chaves de licença para:
  • Licenciamento de software: aplicativos para desktop, plugins e CLIs.
  • Controles por assento: limite as ativações por usuário ou dispositivo.
  • Bens digitais: controle o acesso a downloads, atualizações ou recursos premium.
Dodo Payments gerencia chaves de licença por meio de Entitlements. Os mesmos eventos de pagamento e assinatura que conduzem seus outros entitlements conduzem o ciclo de vida de cada chave: criação, expiração, revogação e concessão novamente.

Criar um Direito de Chave de Licença

1

Open Entitlements

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

Choose License Key

Selecione License Keys, insira um Name e configure como cada chave emitida deve funcionar:
  • Fulfillment Mode: Automatic (o padrão) gera e envia cada chave por email. Manual permite que você forneça cada chave. Consulte Manual Fulfillment.
  • Activations Limit: o número máximo de ativações ativas por chave, por exemplo 1 para um único usuário ou 5 para uma licença de equipe. Selecione Unlimited para não definir um limite.
  • License Length: por quanto tempo uma chave permanece válida após ser emitida, por exemplo, 30 dias ou 1 ano, ou No expiration. Para produtos de assinatura, escolha No expiration: as chaves emitidas para uma assinatura não expiram, e sua validade acompanha o status da assinatura.
  • Activation Message: instruções opcionais voltadas ao cliente, com até 2.500 caracteres, incluídas no email que entrega a chave. Por exemplo: Paste the key in Settings → License ou Run: mycli activate <key>.
Novo formulário de direitos de Chave de Licença com nome, modo de cumprimento, duração da licença, limite de ativações e mensagem de ativação
3

Save the Entitlement

Clique em Create Entitlement. Agora você pode associar o entitlement a qualquer produto.

Anexar a Produtos

Abra um produto, acesse a seção Entitlements e selecione seu entitlement License Key. Um produto pode entregar uma chave de licença junto com outros entitlements na mesma compra, como acesso ao Discord, downloads de arquivos ou acesso a um repositório do GitHub.
Painel de direitos do produto com Chave de Licença selecionada

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 vida padrão de concessão. Cada evento afeta as chaves de licença da seguinte forma:

Comportamento da quantidade

O número de chaves depende da origem da concessão. Cada chave recebe sua própria concessão.
  • Produtos de assinatura emitem uma chave por assento (subscriptions.quantity).
  • Produtos avulsos emitem uma chave por unidade do item de linha do carrinho (product_cart.quantity).
  • Concessões manuais pela API emitem exatamente uma chave.

Fulfillment Mode

Todo entitlement License Key tem um fulfillment_mode que controla quem fornece a chave:
  • auto (padrão, Automatic no dashboard): Dodo Payments gera e envia a chave por email no pagamento ou na assinatura. Esse é o comportamento mostrado na tabela acima e se aplica quando fulfillment_mode é omitido.
  • manual (Manual no dashboard): cada unidade comprada cria uma concessão Pending sem chave, e você fornece cada valor de chave. Consulte Manual Fulfillment.

Manual Fulfillment

Com o fulfillment manual, você fornece cada chave de licença em vez de Dodo Payments gerá-la. A compra cria uma concessão Pending sem chave, notifica você por meio de um webhook e aguarda o envio do valor da chave. Use-o quando as chaves vierem do seu próprio sistema, de um fornecedor terceirizado ou de um conjunto finito de códigos pré-impressos.
Para um guia passo a passo, desde a criação do produto até a entrega da chave, consulte o Guia de integração de Manual License Key Fulfillment.

Quando usar

O fulfillment automático atende à maioria dos casos de licenciamento de software. Escolha o fulfillment manual quando Dodo Payments não puder gerar a chave sozinho:
  • Traga suas próprias chaves: seu aplicativo, produto para desktop ou servidor de licenças gera a chave.
  • Fornecedores terceirizados: você revende chaves emitidas por um fornecedor upstream, como uma chave de jogo, uma credencial de API ou uma licença de plataforma parceira.
  • Estoque finito: você distribui códigos de um conjunto pré-alocado e os atribui um por vez.
  • Revisão humana: você quer verificar uma compra antes de liberar o acesso.

Ativar o fulfillment manual

Para ativar o fulfillment manual pela API, defina fulfillment_mode: "manual" no integration_config do entitlement License Key. No dashboard, defina Fulfillment Mode como Manual.
fulfillment_mode é compatível com versões anteriores. Entitlements criados antes da existência dessa configuração não têm fulfillment_mode e funcionam como auto. Mudar para manual afeta somente as concessões criadas depois da alteração. As chaves já entregues não mudam.

Encontrar concessões aguardando fulfillment

Quando um cliente compra um produto com um entitlement no modo manual, Dodo Payments cria a concessão com status Pending, sem chave, e envia um webhook entitlement_grant.created com integration_type: "license_key" e status: "Pending". Reaja a esse webhook ou consulte o endpoint List Customer Grants com os filtros integration_type e status:

Entregar a chave

Para entregar uma chave, envie-a ao endpoint Fulfill License Key Grant. A concessão muda para Delivered, e Dodo Payments envia a chave por email ao cliente. É o mesmo email que o cliente recebe no fulfillment automático.
cURL
activations_limit e expires_at são opcionais. Quando você os omite, Dodo Payments usa a configuração do entitlement. Cada concessão pode ser atendida uma vez: tentar novamente uma concessão já atendida retorna 409 em vez de emitir uma segunda chave.
Você não precisa enviar a chave por email. Dodo Payments a entrega quando a concessão é atendida. A importação de chaves com POST /license_keys funciona de forma diferente: ela não notifica o cliente.

Ativação, validação e desativação

Seu software gerencia uma chave em tempo de execução por meio de três endpoints. A ativação registra um dispositivo ou instalação na chave, a validação verifica se a chave pode ser usada e a desativação libera uma ativação.
Endpoints públicos: os endpoints de licença para ativar, desativar e validar são públicos e não exigem uma chave de API. Chame-os diretamente de softwares para desktop, CLIs ou clientes baseados em navegador sem expor suas credenciais de API. Os construtores do SDK ainda exigem um valor de token bearer, portanto os exemplos do SDK passam um placeholder.

Ativar uma licença

A ativação cria uma instância de ativação para a chave e a retorna com um ID lki_. Armazene esse ID, pois você precisará dele para desativar a instância. A solicitação retorna 403 se a chave não estiver ativa, 404 se a chave não existir e 422 se a chave tiver atingido seu limite de ativação.

Validar uma licença

A validação retorna valid: true quando o status da chave é active e a chave não expirou. Para verificar também se uma instância de ativação específica ainda existe, envie seu license_key_instance_id.

Desativar uma instância de ativação

A desativação remove uma instância de ativação e libera uma ativação na chave. Envie a chave e o ID da instância retornado pela ativação. A solicitação retorna 403 se a instância não pertencer à chave e 404 se a chave não existir.

Gerenciar chaves

Para ver as chaves emitidas, abra o entitlement License Key em Entitlements. A lista de concessões mostra uma linha por chave de cliente, com o cliente, a data de acesso, o status e uma ação Revoke. Para ver a expiração, a quantidade de ativações e o limite de ativação de uma chave, abra-a em Sales → License Keys. Para listar concessões programaticamente, chame List Grants. Em cada concessão de chave de licença, o objeto license_key contém a chave, o status, a expiração, as ativações usadas e o limite de ativações. O objeto é null em uma concessão no modo manual que ainda está Pending.

Importar chaves de licença existentes pela API

Para migrar chaves de licença de outro sistema, importe-as usando a API Create License Key. Seus clientes continuam ativando, validando e desativando as mesmas strings de chave, portanto você não precisa emitir novas chaves.
Chaves de licença criadas ou atualizadas pela API não acionam notificações por email aos clientes. Para informar os clientes sobre uma chave importada, notifique-os pelo seu próprio aplicativo.
A solicitação exige key, customer_id e product_id. Omita activations_limit para ativações ilimitadas e omita expires_at para uma chave que nunca expira. Importar uma string de chave que já existe retorna 409.

Como as chaves diferem por origem

O campo source registra como cada chave de licença foi criada: Use source para diferenciar chaves migradas e atendidas manualmente das chaves geradas pela Dodo Payments, por exemplo, ao reconciliar ou auditar chaves. O campo está nos registros de chave de licença, como na resposta POST /license_keys. O objeto license_key nas concessões de List Grants não o inclui. O endpoint legado GET /license_keys, que retorna source e aceita um filtro source, foi descontinuado.
Migrando do Polar.sh ou do Lemon Squeezy? A CLI dodo-migrate importa produtos, clientes, descontos e chaves de licença em massa com um único comando e mapeia IDs externos para IDs da Dodo Payments.

Chaves de licença na URL de retorno

Quando um cliente compra um produto com um entitlement License Key, Dodo Payments anexa a chave gerada ao seu return_url como o parâmetro de consulta license_key. Sua página de sucesso pode mostrar a chave sem uma chamada de API adicional:
Se a compra gerar mais de uma chave (quantidade acima de 1), o parâmetro conterá uma lista separada por vírgulas. A vírgula é codificada na URL como %2C, portanto leia o parâmetro com um parser de URL, que o decodifica, antes de dividi-lo:
Para assinaturas, a URL contém subscription_id e o status da assinatura em vez de payment_id:
Leia o parâmetro license_key na sua página de retorno para mostrar a chave logo após a compra.

Gerenciamento da API

A ativação, a desativação e a validação são públicas e não exigem uma chave de API.

Activate License

Crie uma instância de ativação para uma chave de licença.

Deactivate License

Remova uma instância de ativação para liberar capacidade.

Validate License

Verifique se uma chave está ativa e não expirou antes de conceder acesso.
Crie, liste, recupere e atualize registros individuais de chaves de licença. Use esses endpoints para importar chaves existentes ou ler detalhes de uso.
GET /license_keys, GET /license_keys/{id} e PATCH /license_keys/{id} foram descontinuados. Para leituras, use os endpoints de concessão de entitlement (List Grants, List Customer Grants). POST /license_keys continua disponível para importar chaves existentes.

Create License Key

Crie uma chave de licença ou importe uma existente.

List License Keys

Navegue por todas as chaves com detalhes de status e uso.

Get License Key

Recupere uma chave específica e seus metadados.

Update License Key

Altere a expiração ou o limite de ativação, ou ative ou desative uma chave.
Gerencie o próprio entitlement License Key: seu limite de ativação, duração da licença e mensagem de ativação.

Create Entitlement

Crie um entitlement License Key.

Update Entitlement

Atualize a configuração do entitlement.

List Grants

Liste as chaves emitidas para um entitlement.

Revoke Grant

Revogue manualmente a chave de um cliente.

Webhooks

A entrega e a revogação de chaves de licença enviam os quatro eventos de webhook entitlement_grant.*. Para concessões de chaves de licença, o payload inclui um objeto license_key com a chave, o status, a expiração, as ativações usadas e o limite de ativações. O evento legado license_key.created ainda é acionado quando um registro de chave de licença é criado. Consulte a página do payload de webhook de License Key.
Para novas integrações, trate os eventos de concessão de entitlement em vez de license_key.created. Uma chave atendida automaticamente chega como entitlement_grant.created com status: "Delivered", e nenhum evento entitlement_grant.delivered separado é seguido. Uma chave atendida manualmente aciona entitlement_grant.delivered quando você a fornece. Os mesmos eventos abrangem todos os entitlements do produto, não apenas a chave de licença.

Chaves de licença legadas

Produtos criados com o sinalizador license_key_enabled antigo foram migrados automaticamente para um entitlement License Key. A migração é transparente: as chaves dos clientes existentes continuam funcionando, os endpoints públicos /licenses/activate, /licenses/validate e /licenses/deactivate continuam funcionando, e os endpoints da API /license_keys/* leem e gravam no mesmo armazenamento de chaves.A seção independente Sales → License Keys do dashboard continua disponível como uma lista simples de todas as chaves emitidas, para auditoria e pesquisa. Para alterar limites de ativação, duração da licença ou mensagem de ativação, edite o entitlement License Key migrado em Entitlements.

Práticas recomendadas

  • Escolha limites de ativação claros: selecione padrões como 1 para aplicativos de usuário único ou 3–5 para licenças de equipe e documente-os para seus clientes.
  • Escreva mensagens de ativação precisas: os clientes as copiam do email da chave de licença, portanto caminhos e comandos exatos evitam chamados ao suporte.
  • Valide as chaves usando a API: para produtos conectados à rede, chame /licenses/validate em vez de depender de uma ativação armazenada localmente em cache.
  • Use webhooks para revogação: trate entitlement_grant.revoked para desativar recursos no aplicativo quando um cliente cancelar ou receber um reembolso.
  • Teste assinaturas e compras avulsas: o comportamento das chaves de licença é diferente entre os dois casos; por exemplo, chaves de assinatura não expiram. Teste ambos antes de entrar em produção.
Última modificação em 26 de setembro de 2026