Skip to main content
Bei der manuellen Erfüllung von Lizenzschlüsseln erstellt jeder Kauf einen 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 manual fulfillment.
  • 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 ein Pending-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_KEY gespeichert wird, sowie das Webhook-Signaturgeheimnis aus Developer → Webhooks, gespeichert in DODO_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 dessen fulfillment_mode auf manual.
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.
Formular für ein neues License Key-Entitlement mit Name, Fulfillment Mode, License Length, Activations Limit und Activation Message
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.
Produktbereich für Entitlements mit ausgewähltem License Key

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 Status Pending, 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 Bibliothek standardwebhooks überprüfen kannst:
Die Grant-Nutzlast enthält 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 nach status. 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 als client.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.
Bei Erfolg wechselt der Grant zu 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:
E-Mail mit dem Lizenzschlüssel für den Kunden, einschließlich Schlüssel, Produkt, Aktivierungslimit, Ablaufdatum und 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:
Die Erfüllung kann bei vorübergehenden Fehlern wie Timeouts und 5xx-Antworten sicher wiederholt werden. Jeder Grant kann nur einmal erfüllt werden. Ein erneuter Versuch nach einem erfolgreichen, aber nicht bestätigten Aufruf gibt daher 409 zurück, anstatt einen zweiten Schlüssel auszustellen oder eine doppelte E-Mail zu senden. Verwende id des Grants als Idempotency Key.

Ablauf überprüfen

So testest du den Ablauf vollständig:
  1. Kaufe das Produkt im Testmodus. Siehe die Checkout-Leitfäden.
  2. Bestätige, dass dein Webhook entitlement_grant.created mit status: "Pending" und integration_type: "license_key" empfangen hat oder dass der Grant in der List Grants-Antwort erscheint, gefiltert nach status=Pending.
  3. Rufe den Fulfill-Endpoint mit einem Testschlüssel auf.
  4. Bestätige, dass die Antwort status: "Delivered" mit einem ausgefüllten license_key anzeigt, dass der Kunde die E-Mail mit dem Schlüssel erhält und dass entitlement_grant.delivered ausgelö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.
Zuletzt geändert am 26. September 2026