pending et attend que vous fournissiez la valeur de la clé depuis votre propre système, un fournisseur tiers ou un ensemble limité de codes.
À la fin, vous aurez :
- Un produit avec un droit de clé de licence défini pour le traitement
manual. - Un écouteur de webhook qui détecte quand un client attend une clé.
- Un appel de traitement qui délivre la clé et notifie automatiquement le client.
License Keys overview
Le cycle de vie complet des clés de licence et le paramètre
fulfillment_mode.Fulfill License Key Grant API
Référence API pour l’endpoint que vous appelez pour délivrer une clé.
Fonctionnement
Le traitement manuel ne modifie que l’étape d’émission. L’activation, la validation, la désactivation, l’expiration et la révocation fonctionnent exactement comme une clé générée automatiquement une fois délivrée.Prérequis
Pour suivre ce guide, vous aurez besoin de :- Un compte marchand Dodo Payments.
- Votre clé API (
DODO_PAYMENTS_API_KEY) et la clé secrète de votre webhook depuis le tableau de bord. Consultez le guide de génération de clé API. - Un endpoint backend pouvant recevoir des webhooks.
Utilisez
https://test.dodopayments.com et des identifiants de mode test pendant la création. Passez à https://live.dodopayments.com et des clés actives lorsque vous passez en production.Étape 1 — Créer un droit de clé de licence en mode manuel
Un droit est une définition réutilisable de ce que vous livrez. Créez un droit de clé de licence et définissez sonfulfillment_mode à manual.
- Dashboard
- API
Open Entitlements
Allez dans Droits sur votre tableau de bord et cliquez sur + pour créer un nouveau droit.
Choose License Key
Sélectionnez Clé de licence comme intégration et donnez-lui un Nom. Le formulaire expose ces champs :
- Mode de traitement —
Automaticpar défaut. C’est le paramètre qui permet le traitement manuel ; vous le changez à l’étape suivante. - Durée de la licence — combien de temps chaque clé délivrée reste valable, ou Pas d’expiration.
- Limite d’activations — nombre maximum d’activations par clé, ou Illimité.
- Message d’activation — message optionnel destiné au client qui s’affiche lors de l’activation de la clé.

Set Fulfillment Mode to Manual
Ouvrez le menu déroulant Mode de traitement et changez-le de Automatique à Manuel. C’est le paramètre qui pilote tout ce guide — sans cela, les clés sont générées et envoyées automatiquement par email et aucun droit en attente n’est créé. Avec Manuel sélectionné, chaque achat crée un droit
pending que vous devez traiter. Cliquez sur Créer le droit pour enregistrer.fulfillment_mode a pour valeur par défaut auto. L’omettre, ou laisser un droit existant inchangé, maintient le comportement automatique. Seuls les droits explicitement définis à manual créent des droits en attente.Étape 2 — Attacher le droit à un produit
Ouvrez le produit que vous souhaitez vendre, développez Paramètres avancés → Droits & Crédits, et sélectionnez le droit de clé de licence que vous avez défini en Manuel à l’étape 1. Un seul produit peut délivrer cette clé de licence en plus d’autres droits sur le même achat.
Le mode de traitement est une propriété du droit, pas du produit. Parce que vous l’avez défini en Manuel à l’étape 1, chaque produit auquel ce droit est attaché crée des droits de clé de licence
pending à l’achat — il n’y a rien d’autre à configurer ici.Étape 3 — Détecter les droits en attente
Lorsqu’un client achète le produit, Dodo Payments crée un droit au statutpending sans clé attachée et déclenche un webhook entitlement_grant.created. C’est votre signal qu’un client attend une clé.
Écouter le webhook
Configurez un endpoint de webhook (Développeur → Webhooks dans le tableau de bord) et agissez sur les droits de clé de licence en attente. La mise en œuvre suit la spécification des Webhooks standard.integration_type: "license_key", vous pouvez donc reconnaître un droit de clé de licence sans une recherche supplémentaire. Consultez la référence de webhook de droit pour la charge utile complète.
Ou interroger l’API Liste des droits
Si vous préférez ne pas vous fier aux webhooks, listez les droits pour le droit et filtrez parintegration_type et status :
Étape 4 — Délivrer la clé
Obtenez la valeur de la clé depuis votre propre système, puis soumettez-la avec l’endpoint Traitement du droit de clé de licence. Cela nécessite votre clé API secrète (Permission Éditeur) ; ce n’est pas l’un des endpoints de licence publique.Champs de demande
La chaîne de clé de licence à délivrer au client. Les espaces sont coupés ; une valeur vide ou composée uniquement d’espaces est rejetée.
Limite d’activation par clé. Retombe sur la configuration du droit lorsque omise.
Expiration par clé (ISO 8601). Retombe sur la durée de configuration du droit lorsque omise. Pour les droits délivrés par abonnement, la validité reste liée à l’abonnement indépendamment.
delivered, le client reçoit automatiquement la clé (le même email qu’il recevrait en traitement automatique), et entitlement_grant.delivered est déclenché.
Le client reçoit un email avec la clé de licence, le produit, la limite d’activation, l’expiration, et vos instructions d’activation:

Vous n’avez pas besoin d’envoyer vous-même la clé par email — la livraison se fait automatiquement lorsque le droit est rempli.
Étape 5 — Gérer les erreurs et les réessais
L’endpoint valide le droit avant de délivrer quoi que ce soit. Gérez ces réponses :| Statut | Signification | Que faire |
|---|---|---|
200 | Clé délivrée, le droit est désormais delivered. | Terminé. |
400 | Pas un droit de clé de licence, ou la clé est vide/espace. | Corrigez la demande ; ne réessayez pas telle quelle. |
404 | Aucun droit avec cet ID pour votre entreprise. | Vérifiez le grant_id. |
409 | Droit non en attente de traitement (déjà délivré ou ayant déjà une clé), ou la valeur de la clé existe déjà. | Si déjà délivré, traiter comme succès. Si une clé en double, fournir une clé différente. |
422 | Le corps de la demande n’a pas passé la validation (e.g. activations_limit < 1). | Corrigez le champ et réessayez. |
Vérifier le flux
- Achetez le produit en mode test (voir les guides de check-out).
- Confirmez que votre webhook a reçu
entitlement_grant.createdavecstatus: "pending"etintegration_type: "license_key", ou que le droit apparaît dans la réponse de Liste des droits avec ces filtres. - Appelez l’endpoint de traitement avec une clé de test.
- Confirmez que la réponse montre
status: "delivered"avec unlicense_keyrempli, que le client reçoit l’email de la clé, etentitlement_grant.deliveredest déclenché.
Une fois délivrée, le client peut activer et valider la clé avec les endpoints de licence publique exactement comme une clé générée automatiquement.
Référence API associée
Create Entitlement
Créez le droit de clé de licence avec
fulfillment_mode: manual.List Grants
Filtrez par
integration_type et status pour trouver les droits en attente.Fulfill License Key Grant
Délivrez la valeur de la clé et passez le droit à livré.
Entitlement Grant Webhooks
Les événements
entitlement_grant.* qui signalent les droits en attente et délivrés.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.