Skip to main content

Prerequisites

To integrate the Dodo Payments API, you’ll need:
  • A Dodo Payments merchant account
  • API Credentials (API key and webhook secret key) from dashboard

Dashboard Setup

  1. Navigate to the Dodo Payments Dashboard
  2. Ein Produkt erstellen (Einmalzahlung oder Abonnement). Abonnementprodukte müssen mit mindestens $1 (oder dem entsprechenden Betrag in der von Ihnen gewählten Währung) bepreist sein; Beträge unter diesem Mindestwert werden nicht unterstützt.
  3. Generieren Sie Ihren API-Schlüssel:
    • Gehen Sie zu Entwickler > API
    • Detaillierte Anleitung
    • Kopieren Sie den API-Schlüssel aus der Umgebung mit dem Namen DODO_PAYMENTS_API_KEY
  4. Configure webhooks:
    • Go to Developer > Webhooks
    • Create a webhook URL for payment notifications
    • Copy the webhook secret key in env

Integration

Wählen Sie den Integrationspfad, der zu Ihrem Anwendungsfall passt:
  • Checkout Sessions (empfohlen): Am besten für die meisten Integrationen geeignet. Erstellen Sie eine Session auf Ihrem Server und leiten Sie Kunden zu einem sicheren, gehosteten Checkout weiter.
  • Overlay Checkout: Verwenden Sie diese Option, wenn Sie eine In-Page-Erfahrung benötigen, bei der der Checkout als modales Overlay auf Ihrer Website geöffnet wird.
  • Inline Checkout: Binden Sie den Checkout direkt in Ihr Seitenlayout ein, um vollständig integrierte, markenspezifische Checkout-Erlebnisse zu ermöglichen.
  • Static Payment Links: No-Code-URLs, die sofort geteilt werden können, zur schnellen Zahlungsannahme.
  • Dynamic Payment Links: Programmgesteuert erstellte Links. Checkout Sessions werden jedoch empfohlen und bieten mehr Flexibilität.
  • Mobile Checkout SDKs: Für native Android-, iOS-, React-Native- und Flutter-Apps. Erstellen Sie die Session wie oben beschrieben auf Ihrem Server und übergeben Sie anschließend checkout_url an das SDK.
Overlay Checkout und Inline Checkout sind ausschließlich browserbasiert – sie binden den Checkout in eine Webseite ein. Wenn Sie eine native mobile App entwickeln, erstellen Sie die Checkout-Session auf Ihrem Server und öffnen Sie sie stattdessen mit den Mobile Checkout SDKs.

1. Checkout Sessions

Verwenden Sie Checkout Sessions, um einen sicheren, gehosteten Checkout für Einmalzahlungen oder Abonnements zu erstellen. Sie erstellen eine Session auf Ihrem Server und leiten den Kunden anschließend zu dem zurückgegebenen checkout_url weiter.
Checkout-Sessions sind standardmäßig 24 Stunden gültig. Wenn Sie confirm=true übergeben, sind Sessions 15 Minuten gültig und alle erforderlichen Felder müssen angegeben werden.
1

Create a checkout session

Wählen Sie Ihr bevorzugtes SDK oder rufen Sie die REST API auf.
2

Redirect customer to checkout

Leiten Sie nach der Erstellung der Session zu checkout_url weiter, um den gehosteten Ablauf zu starten.
Bevorzugen Sie Checkout Sessions als schnellste und zuverlässigste Möglichkeit, Zahlungen anzunehmen. Informationen zu erweiterten Anpassungsmöglichkeiten finden Sie im vollständigen Leitfaden zu Checkout Sessions und in der API Reference.

2. Overlay Checkout

Für ein nahtloses Checkout-Erlebnis innerhalb der Seite können Sie unsere Integration Overlay Checkout nutzen. Kunden können damit Zahlungen abschließen, ohne Ihre Website zu verlassen.

3. Inline Checkout

Für vollständig integrierte Checkout-Erlebnisse, die direkt in Ihre Seite eingebettet werden, verwenden Sie unsere Integration Inline Checkout. Damit können Sie benutzerdefinierte Bestellübersichten erstellen und das Checkout-Layout vollständig kontrollieren, während Dodo Payments die Zahlungsannahme sicher abwickelt. Mit statischen Payment Links können Sie schnell Zahlungen annehmen, indem Sie eine einfache URL teilen. Sie können das Checkout-Erlebnis anpassen, indem Sie Query-Parameter übergeben, um Kundendaten vorauszufüllen, Formularfelder zu steuern und benutzerdefinierte Metadaten hinzuzufügen.
1

Construct your payment link

Beginnen Sie mit der Basis-URL und hängen Sie Ihre Produkt-ID an:
2

Add core parameters

Fügen Sie wichtige Query-Parameter hinzu:
  • integer
    Standard:"1"
    Anzahl der zu kaufenden Artikel.
  • string
    erforderlich
    URL, zu der nach Abschluss der Zahlung weitergeleitet wird.
Die Redirect-URL enthält Zahlungsdetails als Query-Parameter, zum Beispiel:
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.com

Wenn für das Produkt Lizenzschlüssel aktiviert sind, wird außerdem ein license_key-Parameter angehängt (bei mehreren Schlüsseln durch Kommas getrennt):
https://example.com/?payment_id=pay_xxx&status=succeeded&license_key=LK-001&email=customer%40example.com
3

Pre-fill customer information (optional)

Fügen Sie Kunden- oder Abrechnungsfelder als Query-Parameter hinzu, um den Checkout zu vereinfachen.
  • string
    Vollständiger Name des Kunden (wird ignoriert, wenn firstName oder lastName angegeben ist).
  • string
    Vorname des Kunden.
  • string
    Nachname des Kunden.
  • string
    E-Mail-Adresse des Kunden.
  • string
    Land des Kunden.
  • string
    Straßenadresse.
  • string
    Stadt.
  • string
    Bundesstaat oder Provinz.
  • string
    Postleitzahl/ZIP-Code.
  • boolean
    true oder false
4

Control form fields (optional)

Sie können bestimmte Felder deaktivieren, damit sie für den Kunden schreibgeschützt sind. Dies ist nützlich, wenn Ihnen die Kundendaten bereits vorliegen (z. B. bei angemeldeten Benutzern).
Um ein Feld zu deaktivieren, geben Sie seinen Wert an und setzen Sie das entsprechende disable…-Flag auf true:
Die Deaktivierung von Feldern verhindert versehentliche Änderungen und gewährleistet die Datenkonsistenz.
Durch Setzen von showDiscounts=false wird der Rabattbereich im Checkout-Formular deaktiviert und ausgeblendet. Verwenden Sie diese Option, wenn Sie verhindern möchten, dass Kunden während des Checkouts Gutschein- oder Aktionscodes eingeben.
5

Add advanced controls (optional)

  • string
    Gibt die Zahlungswährung an. Standardmäßig wird die Währung des Abrechnungslands verwendet.
  • boolean
    Standard:"true"
    Währungsauswahl ein- oder ausblenden.
  • number
    Legt den berechneten Betrag in Haupteinheiten der Währung fest (z. B. 12.5 für 12,50 $). Nur für Pay What You Want-Produkte. Der Wert wird ignoriert, wenn er unter dem Mindestpreis des Produkts liegt.
  • string
    Benutzerdefinierte Metadatenfelder (z. B. metadata_orderId=123).
paymentAmount in einem Zahlungslink ist nicht dieselbe Einheit wie das Feld amount in der Checkout Sessions API. Der Link-Parameter verwendet Haupteinheiten der Währung (12.5 = 12,50 ),wa¨hrendproductcart[].amountderAPIdiekleinsteWa¨hrungseinheitverwendet(1250=12,50), während `product_cart[].amount` der API die kleinste Währungseinheit verwendet (`1250` = 12,50 ). Informationen zum API-Feld findest du unter Dynamic Pricing.
6

Share the link

Sende den vollständigen Zahlungslink an deinen Kunden. Beim Aufrufen werden alle Query-Parameter erfasst und zusammen mit einer Sitzungs-ID gespeichert. Die URL wird anschließend vereinfacht und enthält nur noch den Sitzungsparameter (z. B. ?session=sess_1a2b3c4d). Die gespeicherten Informationen bleiben über Seitenaktualisierungen hinweg erhalten und sind während des gesamten Checkout-Prozesses zugänglich.
Das Checkout-Erlebnis des Kunden ist nun auf Grundlage deiner Parameter optimiert und personalisiert.
Verwende für die meisten Anwendungsfälle Checkout Sessions, da sie mehr Flexibilität und Kontrolle bieten.
Über einen API-Aufruf oder unser SDK mit Kundendaten erstellt. Hier ist ein Beispiel: Es gibt zwei APIs zum Erstellen dynamischer Zahlungslinks:
Beide Endpunkte zum Erstellen von Links sind veraltet. POST /payments und POST /subscriptions funktionieren für bestehende Integrationen weiterhin, für neue Integrationen solltest du jedoch stattdessen Checkout Sessions (POST /checkouts) verwenden.
Die folgende Anleitung beschreibt das Erstellen eines einmaligen Zahlungslinks. Ausführliche Anweisungen zur Integration von Abonnements findest du in diesem Leitfaden zur Abonnementintegration.
Stelle sicher, dass du payment_link = true übergibst, um den Zahlungslink zu erhalten
Leite deine Kunden nach dem Erstellen des Zahlungslinks weiter, damit sie ihre Zahlung abschließen können.

Webhooks implementieren

Richte einen API-Endpunkt ein, der Zahlungsbenachrichtigungen empfängt. Hier ist ein Beispiel mit Next.js:
Unsere Webhook-Implementierung folgt der Spezifikation Standard Webhooks. Definitionen der Webhook-Typen findest du in unserem Leitfaden zu Webhook-Ereignissen.

Ereignisse, auf die du hören solltest

Aktiviere payload.type und verarbeite die für einen einmaligen Zahlungsablauf relevanten Ereignisse. Höre mindestens auf:
Erfülle die Bestellung immer bei payment.succeeded aus dem Webhook**, nicht bei der Browser-Weiterleitung — die Weiterleitung kann verpasst werden, wenn der Kunde den Tab schließt, während der Webhook bis zur Bestätigung erneut gesendet wird.
Wenn du digitale Produkte mit Lizenzschlüsseln verkaufst, verarbeite auch license_key.created. Die vollständige Liste der Ereignisse — einschließlich Ereignissen zu Abonnements, Berechtigungen, Guthaben, Wiederherstellung und Zahlungserinnerungen — findest du im Leitfaden zu Webhook-Ereignissen. Du kannst dieses Projekt mit einer Demo-Implementierung auf GitHub unter Verwendung von Next.js und TypeScript heranziehen. Die Live-Implementierung findest du hier.

Wichtige Informationen zu Checkout und Währung

Dynamische Beträge (Pay-What-You-Want) werden in der Basiswährung des Produkts angegeben — nicht in einer beliebigen lokalen Währung — und die Basiswährung ist auf USD, INR, GBP und EUR beschränkt. Um einen festen Betrag in einer anderen Währung (z. B. PHP) einzuziehen, kannst du ihn nicht direkt übergeben: Verwende Adaptive Pricing (wandelt deinen Basisbetrag zum aktuellen Wechselkurs um) oder Localized Pricing (fester Preis pro Währung, jedoch nicht mit Pay-What-You-Want kompatibel).
Lege die Währung ausdrücklich fest. Übergib billing_currency und billing_address.country in der Checkout-Session. Wenn diese Angaben fehlen, werden Währung und Land anhand der IP-Adresse des Kunden erkannt (Adaptive Currency) und stimmen möglicherweise nicht mit dem überein, was du berechnen möchtest.
Checkout-Sessions laufen nach 24 Stunden ab (nach 15 Minuten, wenn confirm: true), und jede checkout_url ist nur einmal verwendbar — erstelle für jeden Kunden und jeden Zahlungsversuch eine neue Session, anstatt einen Link wiederzuverwenden.
Erneuter Kauf mit einem Klick. Übergib bei einem wiederkehrenden Kunden mit einer gespeicherten Zahlungsmethode payment_method_id zusammen mit confirm: true, um die Zahlung sofort auszuführen und die Auswahl der Zahlungsmethode vollständig zu überspringen.

Zugehörige API-Referenz

Create Checkout Session

API-Referenz zum Erstellen sicherer, gehosteter Checkout-Sessions für einmalige Zahlungen und Abonnements

Create Payment Link

API-Referenz zum programmgesteuerten Erstellen dynamischer Zahlungslinks
Zuletzt geändert am 21. August 2026