Skip to main content
Lizenzschlüssel sind der Entitlement-Typ License Key. Erstellen Sie einmal ein License Key-Entitlement mit dem gewünschten Aktivierungslimit, Ablaufdatum und Aktivierungsnachricht und fügen Sie es anschließend jedem beliebigen Produkt hinzu. Standardmäßig generiert und sendet Dodo Payments für jede gekaufte Einheit oder jeden Abonnement-Sitz einen Schlüssel per E-Mail.

Was sind Lizenzschlüssel?

Ein Lizenzschlüssel ist ein eindeutiges Token, das den Zugriff auf Ihr Produkt autorisiert. Verwenden Sie Lizenzschlüssel für:
  • Softwarelizenzierung: Desktop-Apps, Plugins und CLIs.
  • Sitzbasierte Kontrollen: Aktivierungen pro Benutzer oder Gerät begrenzen.
  • Digitale Güter: Downloads, Updates oder Premiumfunktionen freischalten.
Dodo Payments verwaltet Lizenzschlüssel über Entitlements. Dieselben Zahlungs- und Abonnementereignisse, die Ihre anderen Entitlements steuern, bestimmen auch den Lebenszyklus jedes Schlüssels: Erstellung, Ablauf, Widerruf und erneute Gewährung.

Erstellen Sie eine License Key-Berechtigung

1

Open Entitlements

Gehen Sie im Dashboard zu Entitlements und klicken Sie auf +, um ein Entitlement zu erstellen.
2

Choose License Key

Wählen Sie License Keys, geben Sie einen Name ein und konfigurieren Sie, wie sich jeder ausgestellte Schlüssel verhalten soll:
  • Fulfillment Mode: Automatic (Standard) generiert jeden Schlüssel und sendet ihn per E-Mail. Mit Manual können Sie jeden Schlüssel selbst bereitstellen. Siehe Manual Fulfillment.
  • Activations Limit: die maximale Anzahl aktiver Aktivierungen pro Schlüssel, zum Beispiel 1 für einen einzelnen Benutzer oder 5 für eine Teamlizenz. Wählen Sie Unlimited, um kein Limit festzulegen.
  • License Length: wie lange ein Schlüssel nach seiner Ausstellung gültig bleibt, zum Beispiel 30 Tage oder 1 Jahr, oder No expiration. Wählen Sie bei Abonnementprodukten No expiration: Für ein Abonnement ausgestellte Schlüssel haben kein Ablaufdatum, und ihre Gültigkeit folgt dem Abonnementstatus.
  • Activation Message: optionale, an Kunden gerichtete Anweisungen mit bis zu 2.500 Zeichen, die in der E-Mail zum Schlüssel enthalten sind. Zum Beispiel: Paste the key in Settings → License oder Run: mycli activate <key>.
Neues Lizenzschlüsselberechtigungsformular mit Name, Erfüllungsmodus, Lizenzlänge, Aktivierungslimit und Aktivierungsnachricht
3

Save the Entitlement

Klicken Sie auf Create Entitlement. Sie können das Entitlement nun jedem beliebigen Produkt hinzufügen.

An Produke anhängen

Öffnen Sie ein Produkt, gehen Sie zum Abschnitt Entitlements und wählen Sie Ihr License Key-Entitlement aus. Ein Produkt kann bei demselben Kauf zusammen mit anderen Entitlements einen Lizenzschlüssel bereitstellen, zum Beispiel Discord-Zugriff, Dateidownloads oder Zugriff auf ein GitHub-Repository.
Produktberechtigungspanel mit ausgewähltem Lizenzschlüssel

Selecting the License Key entitlement in the product entitlements panel.


Wie Schlüssel ausgegeben werden

Die Ausstellung von Schlüsseln folgt dem standardmäßigen grant lifecycle. Jedes Ereignis wirkt sich wie folgt auf Lizenzschlüssel aus:

Verhalten bei Mengen

Die Anzahl der Schlüssel hängt davon ab, woher der Grant stammt. Jeder Schlüssel erhält seinen eigenen Grant.
  • Abonnementprodukte stellen einen Schlüssel pro Sitz aus (subscriptions.quantity).
  • Einmalige Produkte stellen einen Schlüssel pro Einheit des Warenkorbpostens aus (product_cart.quantity).
  • Manuelle API-Grants stellen genau einen Schlüssel aus.

Fulfillment Mode

Jedes License Key-Entitlement verfügt über ein fulfillment_mode, das steuert, wer den Schlüssel bereitstellt:
  • auto (Standard, Automatic im Dashboard): Dodo Payments generiert den Schlüssel bei Zahlung oder Abonnement und sendet ihn per E-Mail. Dies entspricht dem Verhalten in der Tabelle oben und gilt, wenn fulfillment_mode nicht angegeben wird.
  • manual (Manual im Dashboard): Für jede gekaufte Einheit wird ein Pending-Grant ohne Schlüssel erstellt, und Sie stellen jeden Schlüsselwert selbst bereit. Siehe Manual Fulfillment.

Manuelles Fulfillment

Beim manuellen Fulfillment stellen Sie jeden Lizenzschlüssel selbst bereit, anstatt ihn von Dodo Payments generieren zu lassen. Der Kauf erstellt einen Pending-Grant ohne Schlüssel, benachrichtigt Sie per Webhook und wartet darauf, dass Sie den Schlüsselwert übermitteln. Verwenden Sie dies, wenn die Schlüssel aus Ihrem eigenen System, von einem Drittanbieter oder aus einem begrenzten Pool vorgedruckter Codes stammen.
Eine schrittweise Anleitung vom Erstellen des Produkts bis zur Zustellung des Schlüssels finden Sie im Manual License Key Fulfillment Integration Guide.

Wann sollte es verwendet werden?

Automatisches Fulfillment eignet sich für die meisten Softwarelizenzen. Wählen Sie manuelles Fulfillment, wenn Dodo Payments den Schlüssel nicht selbst generieren kann:
  • Eigene Schlüssel verwenden: Ihre Anwendung, ein Desktopprodukt oder Ihr eigener Lizenzserver generiert den Schlüssel.
  • Drittanbieter: Sie verkaufen von einem vorgelagerten Anbieter ausgestellte Schlüssel weiter, zum Beispiel einen Spieleschlüssel, ein API-Credential oder eine Lizenz für eine Partnerplattform.
  • Begrenzter Bestand: Sie geben Codes aus einem vorab zugewiesenen Pool einzeln aus.
  • Manuelle Prüfung: Sie möchten einen Kauf prüfen, bevor Sie den Zugriff freigeben.

Manuelles Fulfillment aktivieren

Um manuelles Fulfillment über die API zu aktivieren, setzen Sie fulfillment_mode: "manual" im integration_config des License Key-Entitlements. Setzen Sie im Dashboard Fulfillment Mode auf Manual.
fulfillment_mode ist abwärtskompatibel. Entitlements, die vor Einführung dieser Einstellung erstellt wurden, verfügen über kein fulfillment_mode und verhalten sich wie auto. Der Wechsel zu manual betrifft nur Grants, die nach der Änderung erstellt werden. Bereits zugestellte Schlüssel ändern sich nicht.

Grants mit ausstehendem Fulfillment finden

Wenn ein Kunde ein Produkt mit einem Entitlement im manuellen Modus kauft, erstellt Dodo Payments den Grant im Status Pending ohne Schlüssel und sendet Ihnen einen entitlement_grant.created-Webhook mit integration_type: "license_key" und status: "Pending". Reagieren Sie auf diesen Webhook oder fragen Sie den Endpunkt List Customer Grants mit den Filtern integration_type und status ab:

Den Schlüssel zustellen

Um einen Schlüssel zuzustellen, senden Sie ihn an den Endpunkt Fulfill License Key Grant. Der Grant wechselt zu Delivered, und Dodo Payments sendet den Schlüssel per E-Mail an den Kunden. Es handelt sich um dieselbe E-Mail, die der Kunde beim automatischen Fulfillment erhält.
cURL
activations_limit und expires_at sind optional. Wenn Sie sie weglassen, verwendet Dodo Payments die Konfiguration des Entitlements. Jeder Grant kann nur einmal erfüllt werden: Beim erneuten Versuch, einen bereits erfüllten Grant zu erfüllen, wird 409 zurückgegeben, anstatt einen zweiten Schlüssel auszustellen.
Sie müssen den Schlüssel nicht selbst per E-Mail senden. Dodo Payments stellt ihn bereit, sobald der Grant erfüllt wurde. Importing keys mit POST /license_keys funktioniert anders: Der Kunde wird dabei nicht benachrichtigt.

Aktivierung, Validierung und Deaktivierung

Ihre Software verwaltet einen Schlüssel zur Laufzeit über drei Endpunkte. Die Aktivierung registriert ein Gerät oder eine Installation für den Schlüssel, die Validierung prüft, ob der Schlüssel verwendet werden kann, und die Deaktivierung gibt eine Aktivierung frei.
Public Endpoints: Die Endpunkte zum Aktivieren, Deaktivieren und Validieren von Lizenzen sind öffentlich und erfordern keinen API-Schlüssel. Rufen Sie sie direkt aus Desktopsoftware, CLIs oder browserbasierten Clients auf, ohne Ihre API-Credentials offenzulegen. Die SDK-Konstruktoren erfordern weiterhin einen Bearer-Token-Wert, daher verwenden die SDK-Beispiele einen Platzhalter.

Eine Lizenz aktivieren

Die Aktivierung erstellt eine Aktivierungsinstanz für den Schlüssel und gibt sie mit einer lki_-ID zurück. Speichern Sie diese ID, da Sie sie benötigen, um die Instanz zu deaktivieren. Die Anfrage gibt 403 zurück, wenn der Schlüssel nicht aktiv ist, 404, wenn der Schlüssel nicht existiert, und 422, wenn der Schlüssel sein Aktivierungslimit erreicht hat.

Eine Lizenz validieren

Die Validierung gibt valid: true zurück, wenn der Status des Schlüssels active ist und der Schlüssel noch nicht abgelaufen ist. Um zusätzlich zu prüfen, ob eine bestimmte Aktivierungsinstanz noch existiert, übergeben Sie deren license_key_instance_id.

Eine Aktivierungsinstanz deaktivieren

Die Deaktivierung entfernt eine Aktivierungsinstanz und gibt eine Aktivierung des Schlüssels frei. Übergeben Sie den Schlüssel und die Instanz-ID, die von der Aktivierung zurückgegeben wurde. Die Anfrage gibt 403 zurück, wenn die Instanz nicht zum Schlüssel gehört, und 404, wenn der Schlüssel nicht existiert.

Schlüssel verwalten

Um ausgestellte Schlüssel anzuzeigen, öffnen Sie das License Key-Entitlement unter Entitlements. Die Grant-Liste zeigt eine Zeile pro Kundenschlüssel mit dem Kunden, dem Zugriffsdatum, dem Status und einer Revoke-Aktion. Um Ablaufdatum, Aktivierungsanzahl und Aktivierungslimit eines Schlüssels anzuzeigen, öffnen Sie ihn unter Sales → License Keys. Um Grants programmgesteuert aufzulisten, rufen Sie List Grants auf. Bei jedem License-Key-Grant enthält das license_key-Objekt den Schlüssel, den Status, das Ablaufdatum, die verwendeten Aktivierungen und das Aktivierungslimit. Bei einem Grant im manuellen Modus, der sich noch im Status Pending befindet, ist das Objekt null.

Vorhandene Lizenzschlüssel über die API importieren

Um Lizenzschlüssel aus einem anderen System zu migrieren, importieren Sie sie über die API Create License Key. Ihre Kunden können weiterhin dieselben Schlüsselzeichenfolgen aktivieren, validieren und deaktivieren, sodass Sie keine neuen Schlüssel ausstellen müssen.
Über die API erstellte oder aktualisierte Lizenzschlüssel lösen keine E-Mail-Benachrichtigungen für Kunden aus. Um Kunden über einen importierten Schlüssel zu informieren, benachrichtigen Sie sie über Ihre eigene Anwendung.
Die Anfrage erfordert key, customer_id und product_id. Lassen Sie activations_limit für unbegrenzte Aktivierungen weg und expires_at für einen Schlüssel, der niemals abläuft. Der Import einer Schlüsselzeichenfolge, die bereits existiert, gibt 409 zurück.

Unterschiede zwischen den Schlüsselquellen

Das Feld source zeichnet auf, wie jeder Lizenzschlüssel erstellt wurde: Verwenden Sie source, um migrierte und manuell erfüllte Schlüssel von durch Dodo Payments generierten Schlüsseln zu unterscheiden, etwa beim Abgleich oder bei der Prüfung von Schlüsseln. Das Feld befindet sich in Lizenzschlüssel-Datensätzen, zum Beispiel in der Antwort von POST /license_keys. Das license_key-Objekt in Grants von List Grants enthält es nicht. Der veraltete Endpunkt GET /license_keys, der source zurückgibt und einen source-Filter akzeptiert, ist deprecated.
Migrieren Sie von Polar.sh oder Lemon Squeezy? Die dodo-migrate CLI importiert Produkte, Kunden, Rabatte und Lizenzschlüssel gesammelt mit einem einzigen Befehl und ordnet externe IDs den Dodo Payments IDs zu.

Lizenzschlüssel in der Return URL

Wenn ein Kunde ein Produkt mit einem License Key-Entitlement kauft, hängt Dodo Payments den generierten Schlüssel als license_key-Queryparameter an Ihre return_url an. Ihre Erfolgsseite kann den Schlüssel ohne zusätzlichen API-Aufruf anzeigen:
Wenn der Kauf mehr als einen Schlüssel generiert (Menge größer als 1), enthält der Parameter eine durch Kommas getrennte Liste. Das Komma wird als %2C URL-kodiert. Lesen Sie den Parameter daher mit einem URL-Parser aus, der ihn dekodiert, bevor Sie ihn aufteilen:
Bei Abonnements enthält die URL subscription_id und den Abonnementstatus anstelle von payment_id:
Lesen Sie den license_key-Parameter auf Ihrer Rückgabeseite aus, um den Schlüssel direkt nach dem Kauf anzuzeigen.

API-Verwaltung

Aktivierung, Deaktivierung und Validierung sind öffentlich und erfordern keinen API-Schlüssel.

Activate License

Erstellt eine Aktivierungsinstanz für einen Lizenzschlüssel.

Deactivate License

Entfernt eine Aktivierungsinstanz, um Kapazität freizugeben.

Validate License

Prüft, ob ein Schlüssel aktiv und noch nicht abgelaufen ist, bevor Sie Zugriff gewähren.
Erstellt, listet, ruft ab und aktualisiert einzelne Lizenzschlüssel-Datensätze. Verwenden Sie diese Endpunkte, um vorhandene Schlüssel zu importieren oder Nutzungsdetails auszulesen.
GET /license_keys, GET /license_keys/{id} und PATCH /license_keys/{id} sind deprecated. Verwenden Sie zum Lesen die Entitlement-Grant-Endpunkte (List Grants, List Customer Grants). POST /license_keys wird weiterhin für den Import vorhandener Schlüssel unterstützt.

Create License Key

Erstellt einen Lizenzschlüssel oder importiert einen vorhandenen.

List License Keys

Listet alle Schlüssel mit Status- und Nutzungsdetails auf.

Get License Key

Ruft einen bestimmten Schlüssel und seine Metadaten ab.

Update License Key

Ändert das Ablaufdatum oder Aktivierungslimit oder aktiviert bzw. deaktiviert einen Schlüssel.
Verwaltet das License Key-Entitlement selbst: sein Aktivierungslimit, seine Lizenzdauer und seine Aktivierungsnachricht.

Create Entitlement

Erstellt ein License Key-Entitlement.

Update Entitlement

Aktualisiert die Konfiguration des Entitlements.

List Grants

Listet die für ein Entitlement ausgestellten Schlüssel auf.

Revoke Grant

Widerruft den Schlüssel eines Kunden manuell.

Webhooks

Die Zustellung und der Widerruf von Lizenzschlüsseln senden die vier entitlement_grant.* Webhook-Ereignisse. Bei License-Key-Grants enthält die Payload ein license_key-Objekt mit Schlüssel, Status, Ablaufdatum, verwendeten Aktivierungen und Aktivierungslimit. Das Legacy-Ereignis license_key.created wird weiterhin ausgelöst, wenn ein Lizenzschlüssel-Datensatz erstellt wird. Siehe die Payload-Seite für License Key-Webhooks.
Verwenden Sie bei neuen Integrationen Entitlement-Grant-Ereignisse anstelle von license_key.created. Ein automatisch erfüllter Schlüssel wird als entitlement_grant.created mit status: "Delivered" empfangen; es folgt kein separates entitlement_grant.delivered-Ereignis. Bei einem manuell erfüllten Schlüssel wird entitlement_grant.delivered ausgelöst, sobald Sie ihn bereitstellen. Dieselben Ereignisse decken jedes Entitlement des Produkts ab, nicht nur den Lizenzschlüssel.

Legacy-Lizenzschlüssel

Produkte, die mit dem älteren license_key_enabled-Flag erstellt wurden, wurden automatisch migriert zu einem License Key-Entitlement. Die Migration ist transparent: Die Schlüssel bestehender Kunden funktionieren weiterhin, die öffentlichen Endpunkte /licenses/activate, /licenses/validate und /licenses/deactivate funktionieren weiterhin, und die API-Endpunkte /license_keys/* lesen und schreiben denselben Schlüsselspeicher.Der eigenständige Dashboard-Bereich Sales → License Keys bleibt als flache Liste aller ausgestellten Schlüssel für Prüfung und Suche verfügbar. Um Aktivierungslimits, Lizenzdauer oder Aktivierungsnachricht zu ändern, bearbeiten Sie das migrierte License Key-Entitlement unter Entitlements.

Best Practices

  • Wählen Sie klare Aktivierungslimits: Verwenden Sie Standardwerte wie 1 für Einzelbenutzer-Apps oder 3–5 für Teamlizenzen und dokumentieren Sie diese für Ihre Kunden.
  • Formulieren Sie präzise Aktivierungsnachrichten: Kunden kopieren sie aus der Lizenzschlüssel-E-Mail. Genaue Pfade und Befehle vermeiden Supportanfragen.
  • Validieren Sie Schlüssel über die API: Rufen Sie bei netzwerkverbundenen Produkten /licenses/validate auf, anstatt sich auf eine lokal zwischengespeicherte Aktivierung zu verlassen.
  • Verwenden Sie Webhooks für Widerrufe: Verarbeiten Sie entitlement_grant.revoked, um In-App-Funktionen zu deaktivieren, wenn ein Kunde kündigt oder eine Rückerstattung erhält.
  • Testen Sie Abonnements und einmalige Käufe: Das Verhalten von Lizenzschlüsseln unterscheidet sich zwischen beiden, beispielsweise laufen Abonnementschlüssel nicht ab. Testen Sie daher beide Varianten, bevor Sie live gehen.
Zuletzt geändert am 26. September 2026