Pending qui attend que vous fournissiez la valeur de la clé, au lieu que Dodo Payments génère une clé lors du paiement. La clé peut provenir de votre propre système, d’un fournisseur tiers ou d’un pool limité de codes.
À la fin de ce guide, vous disposez de :
- 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
L’ensemble du cycle de vie d’une clé de licence et le paramètre
fulfillment_mode.Fulfill License Key Grant API
La référence API de l’endpoint que vous appelez pour transmettre une clé.
Fonctionnement
La séquence ci-dessous présente un achat, du checkout à la transmission de la clé : Le fulfillment manuel ne modifie que l’étape d’émission. Une fois transmise, la clé se comporte comme une clé générée automatiquement pour l’activation, la validation, la désactivation, l’expiration et la révocation. Un achat de plusieurs unités crée un grantPending par unité, et chaque grant nécessite sa propre clé.
Prérequis
Pour suivre ce guide, vous avez besoin des éléments suivants :- Un compte marchand Dodo Payments.
- Une clé API, créée sous Developer → API Keys et stockée dans
DODO_PAYMENTS_API_KEY, ainsi que le secret de signature des webhooks disponible sous Developer → Webhooks, stocké dansDODO_PAYMENTS_WEBHOOK_KEY. Consultez le guide de génération de clé API. - Un endpoint backend capable de recevoir des webhooks.
Utilisez
https://test.dodopayments.com et des identifiants de test pendant la phase de développement. Lorsque vous passez en production, utilisez https://live.dodopayments.com et des clés du mode live.Étape 1 — Créer un entitlement License Key en mode manuel
Un entitlement est une définition réutilisable de ce que vous fournissez. Créez un entitlement License Key et définissez son paramètrefulfillment_mode sur manual.
- Dashboard
- API
1
Open Entitlements
Accédez à Entitlements dans le dashboard et cliquez sur + pour créer un entitlement.
2
Choose License Key
Sélectionnez License Keys et saisissez un Name. Le formulaire contient les champs suivants :
- Fulfillment Mode : Automatic par défaut. C’est le paramètre qui active le fulfillment manuel ; vous le modifierez à l’étape suivante.
- License Length : durée de validité de chaque clé émise, ou No expiration.
- Activations Limit : nombre maximal d’activations par clé, ou Unlimited.
- Activation Message : message facultatif destiné au client, affiché lorsque celui-ci active la clé et inclus dans l’e-mail contenant la clé de licence.

3
Set Fulfillment Mode to Manual
Ouvrez la liste déroulante Fulfillment Mode et remplacez Automatic par Manual. Le reste de ce guide dépend de ce paramètre : sans lui, Dodo Payments génère et envoie automatiquement les clés par e-mail et ne crée aucun grant en attente. Lorsque Manual est sélectionné, chaque achat crée un grant
Pending que vous devez traiter. Cliquez sur Create Entitlement pour enregistrer.fulfillment_mode prend par défaut la valeur auto. Si vous ne le fournissez pas ou laissez un entitlement existant inchangé, celui-ci conserve le fulfillment automatique. Seuls les entitlements explicitement définis sur manual créent des grants en attente.Étape 2 — Associer l’entitlement à un produit
Ouvrez le produit que vous souhaitez vendre, accédez à sa section Entitlements, puis sélectionnez l’entitlement License Key que vous avez défini sur Manual à l’étape 1. Un produit peut fournir cette clé de licence avec d’autres entitlements lors du même achat. Si vous n’avez pas encore de produit, créez d’abord un produit à paiement unique ou un produit d’abonnement. Pour le vendre via le checkout, consultez le guide d’intégration.
Selecting the License Key entitlement in the product entitlements panel.
Le mode de fulfillment est une propriété de l’entitlement, et non du produit. Comme vous l’avez défini sur Manual à l’étape 1, chaque produit auquel cet entitlement est associé crée des grants de clé de licence
Pending lors de l’achat. Vous n’avez rien d’autre à configurer sur le produit.Étape 3 — Détecter les grants en attente
Lorsqu’un client achète le produit, Dodo Payments crée un grant avec le statutPending, sans clé associée, et envoie un webhook entitlement_grant.created. Cet événement vous indique qu’un client attend une clé.
Écouter le webhook
Ajoutez un endpoint webhook sous Developer → Webhooks dans le dashboard, puis traitez les grants de clé de licence en attente. Les webhooks suivent la spécification Standard Webhooks, ce qui vous permet de les vérifier avec la bibliothèquestandardwebhooks :
integration_type: "license_key", ce qui vous permet d’identifier un grant de clé de licence sans effectuer de recherche supplémentaire. Les livraisons de webhooks peuvent se répéter ; ignorez donc les événements dont l’en-tête webhook-id a déjà été traité. Consultez la référence du webhook Entitlement Grant pour connaître le payload complet.
Ou interroger la List Grants API
Si vous préférez ne pas dépendre des webhooks, listez les grants associés à votre entitlement License Key et filtrez surstatus. Chaque grant d’un entitlement License Key est un grant de clé de licence ; vous n’avez donc pas besoin d’un filtre integration_type :
Étape 4 — Transmettre la clé
Récupérez la valeur de la clé dans votre propre système, puis envoyez-la à l’endpoint Fulfill License Key Grant. L’appel nécessite votre clé API secrète avec l’autorisation Editor. Il ne s’agit pas de l’un des endpoints publics de licence. Les SDK exposent également cet endpoint, par exemple sous le nomclient.entitlements.grants.fulfillLicenseKey() en TypeScript et client.entitlements.grants.fulfill_license_key() en Python.
Champs de la requête
string
requis
Chaîne de la clé de licence à transmettre au client, de 255 caractères maximum. Les espaces environnants sont supprimés et une valeur vide ou composée uniquement d’espaces est rejetée.
integer
Limite d’activations par clé, au moins égale à 1. Si elle est omise, la Activations Limit de l’entitlement s’applique.
string
Date d’expiration par clé (ISO 8601). Si elle est omise, la clé d’un grant à paiement unique expire selon la License Length de l’entitlement, tandis que la clé d’un grant d’abonnement n’a pas de date d’expiration ; sa validité suit donc celle de l’abonnement.
Delivered, Dodo Payments envoie la clé par e-mail au client (le même e-mail que celui envoyé avec le fulfillment automatique), et les événements webhook license_key.created et entitlement_grant.delivered sont déclenchés.
L’e-mail contient la clé de licence, le produit, la limite d’activations, la date d’expiration et vos instructions d’activation :

The license key email the customer receives once you fulfill the grant.
Vous n’avez pas besoin d’envoyer vous-même la clé par e-mail. La livraison a lieu automatiquement lorsque le grant est traité.
Étape 5 — Gérer les erreurs et les nouvelles tentatives
L’endpoint valide le grant avant toute livraison. Gérez les réponses suivantes :Vérifier le flux
Pour tester le flux de bout en bout :- Achetez le produit en mode test. Consultez les guides de checkout.
- Vérifiez que votre webhook a reçu
entitlement_grant.createdavecstatus: "Pending"etintegration_type: "license_key", ou que le grant apparaît dans la réponse List Grants filtrée parstatus=Pending. - Appelez l’endpoint de fulfillment avec une clé de test.
- Vérifiez que la réponse affiche
status: "Delivered"avec unlicense_keyrenseigné, que le client reçoit l’e-mail contenant la clé et queentitlement_grant.deliveredest déclenché.
Une fois la clé transmise, le client peut l’activer et la valider via les endpoints publics de licence, comme avec une clé générée automatiquement.
Référence API associée
Create Entitlement
Créez l’entitlement License Key avec
fulfillment_mode: manual.List Grants
Filtrez par
status et customer_id pour trouver les grants en attente.Fulfill License Key Grant
Transmettez la valeur de la clé et faites passer le grant à
Delivered.Entitlement Grant Webhooks
Les événements
entitlement_grant.* qui signalent les grants en attente et livrés.