Documentation Index
Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
Use this file to discover all available pages before exploring further.
Les droits transforment un paiement réussi ou un abonnement actif en accès réel : une clé de licence dans la boîte de réception de votre client, un rôle Discord, un dépôt GitHub, un modèle Notion, un lien de remix Framer, une invitation à une discussion Telegram ou un ensemble de fichiers téléchargeables. Dodo Payments émet, suit et révoque cet accès automatiquement selon l’évolution du cycle de paiement.

Qu’est-ce que les Droits ?
Un droit est une définition réutilisable de quelque chose que vous livrez à un client : une clé de licence Pro, un rôle Discord “Patrons”, l’accès à votre dépôt GitHub privé, un lot d’e-books téléchargeables. Vous attachez des droits à des produits, et Dodo Payments s’occupe du reste. Lorsqu’un client achète le produit, Dodo Payments crée une concession, une émission unique de ce droit à un client. Les concessions passent par un petit ensemble de statuts :pending pendant que la livraison est en cours, delivered une fois que le client a accès, failed si la livraison n’a pas pu être complétée, et revoked lorsque l’accès est retiré.
Intégrations Disponibles
Dodo Payments livre chaque droit via une intégration dédiée. Choisissez l’intégration qui correspond à ce que vous vendez.License Keys
Générez des clés de licence uniques avec des limites d’activation et d’expiration. Idéal pour les logiciels, les plugins et les CLIs.
Digital Files
Distribuez des fichiers téléchargeables (e-books, modèles, médias) avec des URLs de téléchargement présignées et des instructions optionnelles.
Discord
Accordez un rôle à un client sur votre serveur Discord lors de l’achat. Révoquez automatiquement en cas d’annulation.
GitHub
Ajoutez des clients en tant que collaborateurs à un dépôt privé au niveau d’autorisation que vous choisissez.
Telegram
Ajoutez des clients à une discussion ou un canal privé Telegram après l’achat.
Framer
Déverrouillez un lien de remix de modèle Framer pour les clients payants.
Notion
Dupliquez un modèle Notion dans l’espace de travail du client à l’achat.
Comment Fonctionnent les Concessions
Les concessions sont pilotées par les mêmes événements de paiement et d’abonnement que vous recevez déjà sous forme de webhooks. Vous n’avez pas besoin d’appeler l’API de concession vous-même pour les achats. Dodo Payments crée et révoque les concessions automatiquement selon le cycle de paiement sous-jacent.Cycle de Vie des Concessions
Created
Une concession est créée lorsqu’un paiement est complété ou qu’un abonnement devient actif. Les clés de licence passent directement à
delivered. Chaque autre intégration démarre en pending. Les intégrations basées sur OAuth (Discord, GitHub, Notion) incluent une oauth_url que le client doit visiter pour terminer le consentement. Les intégrations directes à la plateforme (Telegram, Framer, Fichiers Numériques) restent en pending seulement brièvement pendant que la livraison est provisionnée, puis passent à delivered.Delivered
Une fois la livraison terminée (clé de licence générée, rôle assigné, accès au dépôt accordé, liens de fichiers résolus, OAuth complété), la concession passe à
delivered et delivered_at est définie.Failed
Si l’appel d’intégration retourne une erreur non réessayable (jeton OAuth révoqué, permission refusée, fichier n’existe plus), la concession passe à
failed. Les champs error_code et error_message capturent la raison.Comportement des Concessions par Événement
| Événement | Comportement |
|---|---|
payment.succeeded (paiement unique) | Émettre une concession par droit attaché. |
payment.succeeded (paiement lié à l’abonnement) | Aucun. Les concessions sont pilotées par l’événement d’abonnement ci-dessous. |
subscription.active | Émettre des concessions pour tous les droits attachés qui n’en ont pas déjà. Rénovation de toute concession précédemment révoquée pour le même abonnement. |
subscription.renewed | Aucun. Les concessions existantes persistent à travers les renouvellements. |
subscription.on_hold | Révoquer toutes les concessions délivrées et en attente. revocation_reason: subscription_on_hold. |
subscription.cancelled | Révoquer toutes. revocation_reason: subscription_cancelled. |
subscription.expired | Révoquer toutes. revocation_reason: subscription_expired. |
subscription.plan_changed | Révoquer toutes les concessions actuelles, puis émettre des concessions pour les droits du nouveau plan. revocation_reason: plan_changed. |
refund.succeeded (paiement unique) | Révoquer les concessions pour ce paiement. revocation_reason: refund. |
| Révocation API manuelle | Révoquer avec revocation_reason: manual. Les révocations manuelles ne sont pas automatiquement réaccordées lors du renouvellement de l’abonnement. |
| Clé de licence désactivée | Pour les concessions de clé de licence, désactiver la clé sous-jacente révoque la concession avec revocation_reason: license_key_disabled. La concession est ré-activée automatiquement si la clé est réactivée. |
| Dérive de la plateforme détectée | Si le côté plateforme d’une intégration se désynchronise (un rôle Discord supprimé manuellement, l’application GitHub perdant l’accès au dépôt, ou un passage de réconciliation détectant une cible manquante), la concession est révoquée avec revocation_reason: platform_external. Non automatiquement réaccordée sur le renouvellement de l’abonnement tant que le problème de plateforme sous-jacent n’est pas résolu. |
Les concessions pilotées par l’abonnement sont idempotentes par
(entitlement, customer, subscription) ; les renouvellements et réactivations ne créent pas de concessions en double. Les concessions non récurrentes sont idempotentes par (entitlement, customer, payment).Créez votre premier droit
Open Entitlements
Accédez à Droits dans votre tableau de bord Dodo Payments et cliquez sur + pour créer un nouveau droit.
Pick an integration
Choisissez le type d’intégration: Clé de Licence, Fichiers Numériques, Discord, GitHub, Telegram, Framer, ou Notion. Pour les intégrations de plateforme, connectez d’abord votre compte si ce n’est déjà fait.
Configure delivery
Remplissez les champs spécifiques à l’intégration. Par exemple, GitHub demande un dépôt et un niveau d’autorisation ; Discord demande un serveur et un rôle optionnel ; Clé de Licence demande des limites d’activation et une expiration.

Attacher des Droits aux Produits
Ouvrez un produit, développez Paramètres Avancés → Droits & Crédits, et sélectionnez les droits qui doivent être livrés lorsque le produit est acheté. Un seul produit peut livrer plusieurs droits à la fois. Par exemple, un plan Pro peut inclure une clé de licence, un accès GitHub, et un rôle Discord.
Expérience Client
Email et portail client
Les clients reçoivent un email de livraison après l’achat contenant la clé de licence, les liens de téléchargement, les liens d’invitation OAuth, ou l’invitation à la plateforme, selon les droits sur le produit. Les mêmes détails restent disponibles indéfiniment depuis le Portail Clients sous leur historique de commandes.Livraison basée sur OAuth
L’accès des abonnés Discord, GitHub, et Notion nécessite que le client autorise Dodo Payments à leur accorder l’accès. Ces concessions restent en statutpending jusqu’à ce que le client complète le flux OAuth en utilisant le lien de leur email ou portail client. Une fois autorisé, la concession passe à delivered et l’accès à la plateforme est immédiatement provisionné.
Révocation
Les concessions révoquées sont supprimées au niveau de la plateforme : le rôle Discord est supprimé, le collaborateur GitHub est supprimé, la clé de licence est désactivée. Les clients voient le changement reflété dans le portail client.Gérer les Concessions
Ouvrez n’importe quel droit depuis le tableau de bord pour voir ses concessions. Le panneau de détail des concessions montre le total des concessions, les filtres de statut, les informations client, les dates de livraison, et une action de révocation. Vous pouvez également gérer les concessions par programme :Gestion API
Create Entitlement
Créez un nouveau droit de tout type d’intégration.
List Entitlements
Listez les droits avec filtrage par type d’intégration.
Get Entitlement
Récupérez un droit et sa configuration résolue.
Update Entitlement
Mettez à jour le nom, la description, ou la configuration d’intégration.
Delete Entitlement
Supprimez temporairement un droit ; les concessions existantes ne sont pas affectées.
Upload File
Téléchargez un fichier sur un droit de Fichiers Numériques (jusqu’à 100 Mo).
List Grants
Listez toutes les concessions pour un droit avec des filtres de statut et de client.
Revoke Grant
Révoquez manuellement une concession unique.
Webhooks
Dodo Payments déclenche quatre événements webhook pour le cycle de vie des concessions. Abonnez-vous à ces événements pour garder votre application synchronisée avec ce à quoi chaque client peut accéder.| Événement | Déclenche lorsque |
|---|---|
entitlement_grant.created | Une nouvelle concession est créée. Les concessions de clé de licence arrivent delivered; chaque autre intégration arrive pending et passe à delivered une fois l’appel à la plateforme réussi (ou, pour les intégrations basées sur OAuth, une fois le client autorisé). |
entitlement_grant.delivered | La concession passe à livrée. Le client a maintenant accès. |
entitlement_grant.failed | La concession n’a pas pu être livrée. Inspectez error_code et error_message. |
entitlement_grant.revoked | L’accès a été retiré. Inspectez revocation_reason. |
Entitlement Grant Webhook Payloads
Voir le schéma complet de la charge utile, des événements d’exemple, et la référence
revocation_reason.Meilleures Pratiques
- Utilisez un droit par canal de livraison. Ne partagez pas un seul droit Discord entre des produits avec des intentions de rôle différentes; créez un par rôle pour une révocation propre.
- Testez d’abord en mode test. Créez le droit, attachez-le à un produit de test, effectuez un passage à la caisse, et observez la transition de la concession à travers
pending → delivered. Confirmez que l’annulation de l’abonnement de test révoque la concession. - Écoutez
entitlement_grant.delivered, paspayment.succeeded. Un paiement peut réussir avant que l’accomplissement ne soit terminé (surtout pour les flux OAuth). Attendez l’événement livré avant de débloquer des fonctionnalités dépendantes dans vos propres systèmes. - Traitez
entitlement_grant.failedcomme exploitable. Une concession échouée signifie qu’un client a payé mais n’a pas eu accès. Faites-les remonter à votre équipe de support ou déclenchez une nouvelle concession. - Mappez
revocation_reasonà vos flux de rétention. Une révocationsubscription_on_holdest récupérable (le client peut mettre à jour sa carte). Une révocationmanualest intentionnelle. Traitez-les différemment dans vos communications clients.