Skip to main content
License keys are the License Key entitlement type. Create a License Key entitlement once with the activation limit, expiry, and instructions you want, attach it to any product, and Dodo Payments generates and delivers a key per purchase or subscription seat, automatically.

What are License Keys?

License keys are unique tokens that authorize access to your product. They’re ideal for:
  • Software licensing: Desktop apps, plugins, and CLIs
  • Per-seat controls: Limit activations per user or device
  • Digital goods: Gate downloads, updates, or premium features
Inside Dodo Payments, license keys are managed through the Entitlements system, meaning the lifecycle of every key (creation, expiry, revocation, regrant) is driven by the same payment and subscription events as your other deliverables.

Create a License Key Entitlement

1

Open Entitlements

Go to Entitlements in your Dodo Payments dashboard and click + to create a new entitlement.
2

Choose License Key

Select License Key as the integration. Configure how each issued key behaves:
  • Activations Limit: Maximum concurrent activations per key (e.g., 1 for single-user, 5 for team licenses, leave blank for unlimited).
  • Duration: How long the key stays valid after issuance (e.g., 30 days, 1 year). For subscription-issued keys, leave blank; keys remain valid as long as the subscription is active.
  • Activation Instructions: Customer-facing instructions emailed with the key. Examples: Paste the key in Settings → License or Run: mycli activate <key>.
Nouveau formulaire d'agrément de clé de licence avec nom, mode de réalisation, durée de la licence, limite d'activations et message d'activation
3

Save the entitlement

Save. The entitlement is now available to attach to any product.

Attach to Products

Open a product, expand Advanced Settings → Entitlements & Credits, and select your License Key entitlement. A single product can deliver a license key alongside other entitlements (Discord access, file downloads, GitHub repo access, etc.) on the same purchase.
Product entitlements panel with License Key selected

Selecting the License Key entitlement in the product entitlements panel.


How Keys Are Issued

Key issuance follows the standard grant lifecycle:

Quantity behavior

  • Subscription products issue one key per seat (subscriptions.quantity).
  • One-time products issue one key per cart line item (product_cart.quantity).
  • Manual API grants issue exactly one key.

Mode de réalisation

Chaque agrément de clé de licence a un fulfillment_mode qui contrôle qui fournit la clé :
  • auto (par défaut) : Dodo Payments génère et envoie automatiquement la clé par e-mail lors du paiement ou de la souscription. Il s’agit du comportement décrit ci-dessus, qui s’applique lorsque fulfillment_mode est omis.
  • manual : L’achat crée un grant Pending sans clé, et vous fournissez vous-même chaque valeur de clé. Consultez la section Fulfillment manuel ci-dessous.

Réalisation manuelle

Par défaut, Dodo Payments génère et envoie par e-mail une clé de licence dès qu’un client paie. Avec le fulfillment manuel, vous fournissez vous-même la clé : l’achat crée un grant Pending sans clé, vous en informe et attend que vous lui transmettiez la valeur de la clé. Utilisez cette option lorsque les clés proviennent de votre propre système, d’un fournisseur tiers ou d’un stock limité de codes préimprimés.
Vous recherchez une construction étape par étape ? Consultez le Guide d’intégration de la réalisation manuelle des clés de licence pour une présentation complète depuis la création du produit jusqu’à la livraison de la clé.

Quand l’utiliser

La réalisation automatique est le bon choix par défaut pour la plupart des licences logicielles. Choisissez la réalisation manuelle lorsque Dodo Payments ne peut pas générer la clé elle-même :
  • Utilisation de vos propres clés : La clé est générée par votre application, un produit de bureau ou votre propre serveur de licences.
  • Fournisseurs tiers : Vous revendez des clés émises par un fournisseur en amont (une clé de jeu, une crédentielle API, une plateforme partenaire).
  • Inventaire fini : Vous distribuez des codes à partir d’un pool pré-allocé et souhaitez les attribuer un par un.
  • Examen humain : Vous souhaitez vérifier un achat avant de libérer l’accès.

Activer la réalisation manuelle

Définissez fulfillment_mode: "manual" dans la configuration d’intégration de l’agrément de clé de licence :
fulfillment_mode est rétrocompatible. Les agréments créés avant que ce paramètre n’existe n’ont pas fulfillment_mode et continuent de se comporter comme auto. Passer à manual n’affecte que les subventions créées après le changement ; les clés déjà livrées restent inchangées.

Trouver les subventions en attente de réalisation

Lorsqu’un client achète un produit en mode manuel, le grant est créé avec le statut Pending, sans clé, et un webhook entitlement_grant.created est déclenché avec integration_type: "license_key" et status: "Pending". Vous pouvez réagir à ce webhook ou interroger le endpoint Lister les grants client avec les filtres integration_type et status :

Livrer la clé

Envoyez la clé avec le endpoint Fulfill License Key Grant. Le grant passe à l’état Delivered et la clé est automatiquement envoyée au client — dans le même e-mail que celui qu’il aurait reçu avec le fulfillment automatique.
cURL
activations_limit et expires_at sont facultatifs et se réfèrent à la configuration de l’agrément lorsqu’ils sont omis. Chaque subvention peut être réalisée une fois ; réessayer une subvention déjà réalisée retourne 409 au lieu d’émettre une seconde clé.
Il n’est pas nécessaire d’envoyer la clé par e-mail vous-même - la livraison se fait automatiquement lorsque la subvention est réalisée. Cela diffère de l’importation de clés via POST /license_keys, qui n’informe intentionnellement pas le client.

Activation, Validation, Désactivation

Les points de terminaison d’activation/validation/désactivation API sont publics et ne nécessitent pas de clé API. Utilisez-les directement depuis les logiciels de bureau, les CLI ou les clients basés sur le navigateur pour vérifier les clés à l’exécution.
Points de terminaison publics : Les points de terminaison pour activer, désactiver et valider les licences sont publics et ne nécessitent pas de clé API. Appelez-les directement depuis vos applications clientes sans exposer vos identifiants API.

Activer une licence

Valider une licence

Désactiver une instance d’activation


Gérer les clés

Ouvrez l’agrément de clé de licence depuis votre tableau de bord pour voir chaque subvention (une ligne par clé client) avec la date de livraison, le nombre d’activations et une action de révocation. Chaque détail de subvention affiche la clé de licence sous-jacente, l’expiration, les activations utilisées et la limite d’activations. Vous pouvez également lister les subventions de manière programmatique :

Importer des clés de licence existantes via l’API

Avez-vous déjà des clés de licence dans un autre système ? Utilisez l’API Create License Key pour les importer dans Dodo Payments. Cela vous permet de migrer les clés existantes sans perturber vos clients - ils continuent d’activer, de valider et de désactiver avec les mêmes chaînes de clés sans réémission.
Les clés de licence créées ou mises à jour via l’API ne déclenchent pas de notifications par e-mail aux clients. Si vous devez informer les clients d’une clé importée, gérez cela séparément dans votre application.

Comment les clés diffèrent selon la source

Utilisez le champ source des enregistrements de clés de licence pour distinguer, lors du rapprochement ou de l’audit, les stocks migrés et les clés attribuées manuellement des clés émises de manière organique. Lisez-le depuis l’objet license_key des octrois renvoyés par List Grants ; l’endpoint hérité GET /license_keys est obsolète.
Vous migrez depuis Polar.sh ou Lemon Squeezy ? Le CLI dodo-migrate automatise les importations en masse de produits, clients, réductions, et clés de licence en une seule commande et associe automatiquement les IDs externes aux IDs Dodo.

Clés de licence dans l’URL de retour

Lorsqu’un client finalise un achat pour un produit avec un agrément de clé de licence, la clé générée est automatiquement ajoutée à votre return_url en tant que paramètre de requête. Cela vous permet d’afficher la clé immédiatement sur votre page de réussite sans effectuer un appel d’API supplémentaire.
Si l’achat génère plusieurs clés (quantité > 1), elles sont séparées par des virgules :
Pour les abonnements, subscription_id est utilisé au lieu de payment_id :
Analysez le paramètre license_key sur votre page de retour pour afficher immédiatement la clé, améliorant ainsi l’expérience post-achat.

Gestion API

Activation, désactivation et validation sont publiques ; aucune clé API requise.

Activate License

Créez ou enregistrez une instance d’activation pour une clé de licence.

Deactivate License

Révoquez une activation précédente pour libérer de la capacité.

Validate License

Vérifiez l’authenticité, le statut et les contraintes avant d’accorder l’accès.
Créez, listez, récupérez et mettez à jour les enregistrements individuels de clés de licence. Utilisez-les pour importer des clés existantes ou récupérer des détails d’utilisation.
GET /license_keys, GET /license_keys/{id} et PATCH /license_keys/{id} sont obsolètes. Utilisez les endpoints d’octroi d’entitlement (List Grants, List Customer Grants) pour les lectures. POST /license_keys reste pris en charge pour importer des clés existantes.

Create License Key

Créez une nouvelle clé de licence ou importez-en une existante.

List License Keys

Parcourez toutes les clés avec leurs détails d’état et d’utilisation.

Get License Key

Récupérez une clé spécifique et ses métadonnées.

Update License Key

Modifiez l’expiration, les limites d’activation ou activez/désactivez une clé.
Gérez l’entitlement License Key lui-même : sa limite d’activation, sa durée et ses instructions.

Create Entitlement

Créez un entitlement License Key.

Update Entitlement

Mettez à jour la configuration de l’entitlement.

List Grants

Répertoriez les clés émises pour un entitlement.

Revoke Grant

Révoquez manuellement la clé d’un client.

Webhooks

La distribution et la révocation des clés de licence déclenchent les quatre événements webhook entitlement_grant.*. La charge utile de l’octroi contient un objet license_key renseigné avec la clé, l’expiration, le nombre d’activations utilisées et la limite. Les événements hérités license_key.* (license_key.created) continuent de se déclencher pour le cycle de vie de l’enregistrement de clé de licence sous-jacent ; consultez la page de la charge utile webhook des clés de licence.
Pour les nouvelles intégrations, écoutez entitlement_grant.delivered plutôt que license_key.created. L’événement d’entitlement vous indique que la distribution est terminée pour toutes les intégrations du produit, et pas uniquement pour la clé de licence.

Clés de licence héritées

Les produits créés avec l’ancien indicateur license_key_enabled ont été automatiquement migrés vers un entitlement License Key. La migration est transparente : les clés des clients existants continuent de fonctionner sans modification, les endpoints publics /licenses/activate, /licenses/validate et /licenses/deactivate continuent de fonctionner, et les endpoints API /license_keys/* continuent de lire et d’écrire dans le même stockage de clés.La section autonome License Keys du tableau de bord reste disponible sous forme de liste de toutes les clés émises, ce qui est utile pour l’audit et la recherche. Toute nouvelle configuration (modification des limites d’activation, des durées ou des instructions) doit être effectuée en modifiant l’entitlement License Key migré sous Entitlements.

Bonnes pratiques

  • Définissez clairement les limites d’activation : choisissez des valeurs par défaut adaptées (1 pour les applications mono-utilisateur, 3 à 5 pour les licences d’équipe) et documentez-les.
  • Fournissez des instructions d’activation précises : les clients les copient depuis leur e-mail ; des chemins et des commandes exacts réduisent les demandes d’assistance.
  • Validez les clés côté serveur : pour les produits connectés au réseau, validez-les via /licenses/validate plutôt que de mettre l’activation en cache localement.
  • Utilisez les webhooks pour la révocation : écoutez entitlement_grant.revoked afin de désactiver immédiatement les fonctionnalités de l’application lorsqu’un client annule ou demande un remboursement.
  • Testez avec des abonnements et des achats ponctuels : le comportement des clés de licence diffère subtilement entre ces deux cas ; testez-les donc tous les deux avant la mise en production.
Dernière modification le 21 août 2026