Pending-Grant, der darauf wartet, dass du den Schlüsselwert bereitstellst, anstatt dass Dodo Payments beim Zahlungsvorgang einen Schlüssel generiert. Der Schlüssel kann aus deinem eigenen System, von einem Drittanbieter oder aus einem begrenzten Code-Pool stammen.
Nach Abschluss dieses Leitfadens hast du:
- A product with a License Key entitlement set to
manualfulfillment. - A webhook listener that detects when a customer is waiting for a key.
- A fulfillment call that delivers the key and notifies the customer automatically.
License Keys Overview
Den vollständigen Lebenszyklus eines Lizenzschlüssels und die Einstellung
fulfillment_mode.Fulfill License Key Grant API
API-Referenz für den Endpoint, den du zum Bereitstellen eines Schlüssels aufrufst.
How It Works
Die folgende Abfolge zeigt einen Kauf – vom Checkout bis zur Bereitstellung des Schlüssels: Die manuelle Erfüllung ändert nur den Schritt der Ausstellung. Nach der Bereitstellung verhält sich der Schlüssel bei Aktivierung, Validierung, Deaktivierung, Ablauf und Widerruf wie ein automatisch generierter Schlüssel. Beim Kauf mehrerer Einheiten wird pro Einheit einPending-Grant erstellt, und jeder Grant benötigt einen eigenen Schlüssel.
Voraussetzungen
Für diesen Leitfaden benötigst du:- Ein Händlerkonto bei Dodo Payments.
- Einen API-Schlüssel, der unter Developer → API Keys erstellt und in
DODO_PAYMENTS_API_KEYgespeichert wird, sowie das Webhook-Signaturgeheimnis aus Developer → Webhooks, gespeichert inDODO_PAYMENTS_WEBHOOK_KEY. Siehe den Leitfaden zur API-Schlüsselerstellung. - Einen Backend-Endpoint, der Webhooks empfangen kann.
Verwende beim Erstellen
https://test.dodopayments.com und Zugangsdaten für den Testmodus. Wenn du in die Produktion gehst, wechsle zu https://live.dodopayments.com und Schlüsseln für den Livemodus.Schritt 1 — Ein License Key-Entitlement im manuellen Modus erstellen
Ein Entitlement ist eine wiederverwendbare Definition dessen, was du bereitstellst. Erstelle ein License Key-Entitlement und setze dessenfulfillment_mode auf manual.
- Dashboard
- API
1
Open Entitlements
Gehe im Dashboard zu Entitlements und klicke auf +, um ein Entitlement zu erstellen.
2
Choose License Key
Wähle License Keys aus und gib einen Name ein. Das Formular enthält folgende Felder:
- Fulfillment Mode: Standardmäßig Automatic. Diese Einstellung aktiviert die manuelle Erfüllung und wird im nächsten Schritt geändert.
- License Length: Wie lange jeder ausgestellte Schlüssel gültig bleibt, oder No expiration.
- Activations Limit: Die maximale Anzahl von Aktivierungen pro Schlüssel, oder Unlimited.
- Activation Message: Eine optionale kundenorientierte Nachricht, die bei der Aktivierung des Schlüssels angezeigt und in die E-Mail mit dem Lizenzschlüssel aufgenommen wird.

3
Set Fulfillment Mode to Manual
Öffne das Dropdown Fulfillment Mode und ändere den Wert von Automatic zu Manual. Der restliche Leitfaden hängt von dieser Einstellung ab: Ohne sie generiert Dodo Payments automatisch Schlüssel, versendet sie per E-Mail und erstellt keinen ausstehenden Grant. Wenn Manual ausgewählt ist, erstellt jeder Kauf einen
Pending-Grant, den du erfüllen musst. Klicke zum Speichern auf Create Entitlement.fulfillment_mode ist standardmäßig auf auto gesetzt. Wenn du den Wert weglässt oder ein bestehendes Entitlement unverändert lässt, behält das Entitlement die automatische Erfüllung bei. Nur Entitlements, die ausdrücklich auf manual gesetzt sind, erstellen ausstehende Grants.Schritt 2 — Das Entitlement einem Produkt zuweisen
Öffne das Produkt, das du verkaufen möchtest, gehe zum Abschnitt Entitlements und wähle das License Key-Entitlement aus, das du in Schritt 1 auf Manual gesetzt hast. Ein Produkt kann diesen Lizenzschlüssel zusammen mit weiteren Entitlements im selben Kauf bereitstellen. Wenn du noch kein Produkt hast, erstelle zunächst ein Einmalzahlungs- oder Abonnementprodukt. Informationen zum Verkauf über den Checkout findest du im Integration Guide.
Selecting the License Key entitlement in the product entitlements panel.
Der Erfüllungsmodus ist eine Eigenschaft des Entitlements, nicht des Produkts. Da du ihn in Schritt 1 auf Manual gesetzt hast, erstellt jedes Produkt, dem dieses Entitlement zugewiesen ist, beim Kauf
Pending-Lizenzschlüssel-Grants. Du musst am Produkt nichts weiter konfigurieren.Schritt 3 — Ausstehende Grants erkennen
Wenn ein Kunde das Produkt kauft, erstellt Dodo Payments einen Grant mit dem StatusPending, ohne zugewiesenen Schlüssel, und sendet einen entitlement_grant.created-Webhook. Dieses Ereignis signalisiert dir, dass ein Kunde auf einen Schlüssel wartet.
Auf den Webhook hören
Füge im Dashboard unter Developer → Webhooks einen Webhook-Endpoint hinzu und reagiere anschließend auf ausstehende Lizenzschlüssel-Grants. Die Webhooks folgen der Spezifikation von Standard Webhooks, sodass du sie mit der Bibliothekstandardwebhooks überprüfen kannst:
integration_type: "license_key". Dadurch kannst du einen Lizenzschlüssel-Grant ohne zusätzliche Abfrage erkennen. Webhook-Zustellungen können wiederholt werden. Überspringe daher Ereignisse, deren webhook-id-Header du bereits verarbeitet hast. Die vollständige Nutzlast findest du in der Referenz zum Entitlement Grant-Webhook.
Oder die List Grants API abfragen
Wenn du dich lieber nicht auf Webhooks verlassen möchtest, liste die Grants für dein License Key-Entitlement auf und filtere nachstatus. Jeder Grant eines License Key-Entitlements ist ein Lizenzschlüssel-Grant. Daher benötigst du keinen integration_type-Filter:
Schritt 4 — Den Schlüssel bereitstellen
Rufe den Schlüsselwert aus deinem eigenen System ab und übermittle ihn anschließend an den Endpoint Fulfill License Key Grant. Der Aufruf erfordert deinen geheimen API-Schlüssel mit Editor-Berechtigung. Er ist keiner der öffentlichen Lizenz-Endpoints. Die SDKs stellen ihn ebenfalls bereit, beispielsweise alsclient.entitlements.grants.fulfillLicenseKey() in TypeScript und client.entitlements.grants.fulfill_license_key() in Python.
Request-Felder
string
erforderlich
Die Lizenzschlüssel-Zeichenfolge, die dem Kunden bereitgestellt werden soll, mit bis zu 255 Zeichen. Leerzeichen am Anfang und Ende werden entfernt; ein leerer Wert oder ein Wert, der nur aus Leerzeichen besteht, wird abgelehnt.
integer
Aktivierungslimit pro Schlüssel, mindestens 1. Wenn dieser Wert nicht angegeben wird, gilt das Activations Limit des Entitlements.
string
Ablaufdatum pro Schlüssel (ISO 8601). Wenn dieser Wert nicht angegeben wird, läuft der Schlüssel eines Einmalzahlungs-Grants gemäß License Length des Entitlements ab. Der Schlüssel eines Abonnement-Grants hat kein Ablaufdatum; seine Gültigkeit richtet sich nach dem Abonnement.
Delivered, Dodo Payments sendet den Schlüssel per E-Mail an den Kunden (an dieselbe E-Mail-Adresse wie bei der automatischen Erfüllung), und die Webhook-Ereignisse license_key.created und entitlement_grant.delivered werden ausgelöst.
Die E-Mail enthält den Lizenzschlüssel, das Produkt, das Aktivierungslimit, das Ablaufdatum und deine Aktivierungsanweisungen:

The license key email the customer receives once you fulfill the grant.
Du musst den Schlüssel nicht selbst per E-Mail versenden. Die Zustellung erfolgt automatisch, sobald der Grant erfüllt wurde.
Schritt 5 — Fehler und Wiederholungen behandeln
Der Endpoint validiert den Grant, bevor er etwas bereitstellt. Behandle folgende Antworten:Ablauf überprüfen
So testest du den Ablauf vollständig:- Kaufe das Produkt im Testmodus. Siehe die Checkout-Leitfäden.
- Bestätige, dass dein Webhook
entitlement_grant.createdmitstatus: "Pending"undintegration_type: "license_key"empfangen hat oder dass der Grant in der List Grants-Antwort erscheint, gefiltert nachstatus=Pending. - Rufe den Fulfill-Endpoint mit einem Testschlüssel auf.
- Bestätige, dass die Antwort
status: "Delivered"mit einem ausgefülltenlicense_keyanzeigt, dass der Kunde die E-Mail mit dem Schlüssel erhält und dassentitlement_grant.deliveredausgelöst wird.
Sobald der Schlüssel bereitgestellt wurde, kann der Kunde ihn wie einen automatisch generierten Schlüssel über die öffentlichen Lizenz-Endpoints aktivieren und validieren.
Verwandte API-Referenz
Create Entitlement
Erstelle das License Key-Entitlement mit
fulfillment_mode: manual.List Grants
Filtere nach
status und customer_id, um ausstehende Grants zu finden.Fulfill License Key Grant
Stelle den Schlüsselwert bereit und versetze den Grant in den Status
Delivered.Entitlement Grant Webhooks
Die
entitlement_grant.*-Ereignisse, die ausstehende und bereitgestellte Grants signalisieren.