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
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.,
1for single-user,5for 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 → LicenseorRun: mycli activate <key>.

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.
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 unfulfillment_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 lorsquefulfillment_modeest omis.manual: L’achat crée un grantPendingsans 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 grantPending 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éfinissezfulfillment_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 statutPending, 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’étatDelivered 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.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.
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 à votrereturn_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.
subscription_id est utilisé au lieu de payment_id :
Gestion API
Lifecycle Operations (Public Endpoints)
Lifecycle Operations (Public Endpoints)
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.
License Key Management
License Key Management
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.
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é.
Entitlement Management
Entitlement Management
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 webhookentitlement_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.
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/validateplutôt que de mettre l’activation en cache localement. - Utilisez les webhooks pour la révocation : écoutez
entitlement_grant.revokedafin 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.