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. Generate your API key:
    • Go to Developer > API
    • Detailed Guide
    • Copy the API key the in env named 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 Abrechnungslandes verwendet.
  • boolean
    Standard:"true"
    Währungswähler ein- oder ausblenden.
  • integer
    Betrag in Cent (nur für Pay-What-You-Want-Preise).
  • string
    Benutzerdefinierte Metadatenfelder (z. B. metadata_orderId=123).
6

Share the link

Senden Sie den fertigen Payment Link an Ihren Kunden. Beim Aufruf werden alle Query-Parameter erfasst und mit einer Session-ID gespeichert. Anschließend wird die URL vereinfacht und enthält nur noch den Session-Parameter (z. B. ?session=sess_1a2b3c4d). Die gespeicherten Informationen bleiben bei Seitenaktualisierungen erhalten und sind während des gesamten Checkout-Prozesses zugänglich.
Das Checkout-Erlebnis des Kunden ist nun anhand Ihrer Parameter optimiert und personalisiert.
Bevorzugen Sie Checkout Sessions für die meisten Anwendungsfälle, da sie mehr Flexibilität und Kontrolle bieten.
Wird über einen API-Aufruf oder unser SDK mit Kundendaten erstellt. Hier ist ein Beispiel: Es gibt zwei APIs zum Erstellen dynamischer Payment Links: Der folgende Leitfaden beschreibt die Erstellung eines Payment Links für eine Einmalzahlung. Ausführliche Anweisungen zur Integration von Abonnements finden Sie in diesem Leitfaden zur Abonnementintegration.
Stellen Sie sicher, dass Sie payment_link = true übergeben, um den Payment Link zu erhalten
Leiten Sie Ihre Kunden nach der Erstellung des Payment Links weiter, damit sie ihre Zahlung abschließen können.

Webhooks implementieren

Richten Sie 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 finden Sie in unserem Leitfaden zu Webhook-Ereignissen.

Ereignisse, auf die Sie hören sollten

Aktivieren Sie payload.type und verarbeiten Sie die für einen Einmalzahlungsablauf relevanten Ereignisse. Hören Sie mindestens auf:
Erfüllen Sie die Bestellung immer bei payment.succeeded aus dem Webhook, nicht beim Browser-Redirect – der Redirect kann verpasst werden, wenn der Kunde den Tab schließt, während der Webhook bis zur Bestätigung erneut gesendet wird.
Wenn Sie digitale Produkte mit Lizenzschlüsseln verkaufen, verarbeiten Sie außerdem license_key.created. Die vollständige Liste der Ereignisse – einschließlich Abonnement-, Berechtigungs-, Guthaben-, Wiederherstellungs- und Mahnverfahren-Ereignissen – finden Sie im Leitfaden zu Webhook-Ereignissen. Sie können dieses Projekt mit einer Demo-Implementierung auf GitHub unter Verwendung von Next.js und TypeScript verwenden. Die Live-Implementierung können Sie hier aufrufen.

Wichtige Informationen zu Checkout und Währung

Dynamische (Pay-What-You-Want-)Beträge werden in der Basiswährung des Produkts angegeben – nicht in einer beliebigen lokalen Währung. 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, können Sie ihn nicht direkt übergeben: Verwenden Sie Adaptive Pricing (konvertiert Ihren Basisbetrag anhand des aktuellen Wechselkurses) oder Localized Pricing (fester Preis pro Währung, jedoch nicht mit Pay-What-You-Want kompatibel).
Legen Sie die Währung ausdrücklich fest. Übergeben Sie 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 Sie berechnen möchten.
Checkout-Sessions laufen nach 24 Stunden ab (nach 15 Minuten, wenn confirm: true), und jedes checkout_url ist nur einmal verwendbar. Erstellen Sie für jeden Kunden und jeden Zahlungsversuch eine neue Session, anstatt einen Link wiederzuverwenden.
Wiederholter Kauf mit einem Klick. Übergeben Sie bei einem wiederkehrenden Kunden mit einer gespeicherten Zahlungsmethode payment_method_id zusammen mit confirm: true, um die Zahlung sofort einzuziehen und die Auswahl der Zahlungsmethode vollständig zu überspringen.

Zugehörige API Reference

Create Checkout Session

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

Create Payment Link

API-Referenz zum programmgesteuerten Erstellen dynamischer Payment Links
Zuletzt geändert am 31. Juli 2026