Skip to main content

Quick Start Guide

Get your first checkout session running in under 5 minutes

API Reference & Live Testing

Explore the full API documentation and interactively test Checkout Session requests and responses.

Preview Checkout

Calculate pricing, taxes, and totals before creating a session.
Session Validity: Checkout sessions are valid for 24 hours by default. If you pass confirm=true in your request, the session will only be valid for 15 minutes.
Single-Use Links: The checkout_url returned by the API is not reusable and expires within 24 hours (or 15 minutes when confirm=true). It is intended for a single customer to complete one payment. Generate a fresh checkout session for each customer and each payment attempt rather than sharing or reusing a link.

Prerequisites

1

Dodo Payments Account

You’ll need an active Dodo Payments merchant account with API access.
2

API Credentials

Generate your API credentials from the Dodo Payments dashboard:
3

Products Setup

Create your products in the Dodo Payments dashboard before implementing checkout sessions.

Creating Your First Checkout Session

API Response

All methods above return the same response structure:
Nur session_id ist garantiert vorhanden. In zwei Fällen werden zusätzliche oder weniger Felder zurückgegeben:
  • payment_method_id wurde angegeben — die Zahlung wird sofort verarbeitet und checkout_url ist null. Verwende stattdessen das zurückgegebene payment_id.
  • confirm: true hat die Zahlung zum Zeitpunkt der Sitzungserstellung erstellt — die Antwort enthält außerdem payment_id, client_secret und publishable_key zur Verwendung mit dem Dodo Payments Checkout SDK.
Das generierte checkout_url kann nur einmal verwendet werden und läuft innerhalb von 24 Stunden ab. Speichere es nicht zwischen und verwende es nicht für andere Kunden oder Zahlungsversuche erneut — erstelle jedes Mal eine neue Checkout-Sitzung, wenn du einen neuen Link benötigst.
1

Get the checkout URL

Extrahiere checkout_url aus der API-Antwort.
2

Redirect your customer

Leite deinen Kunden zur Checkout-URL weiter, um den Kauf abzuschließen.
Alternative Integrationsoptionen: Anstatt weiterzuleiten, kannst du den Checkout mit Overlay Checkout (modal als Overlay) oder Inline Checkout (vollständig eingebettet) direkt in deine Seite einbetten. Übergebe in einer nativen mobilen App dieselbe URL an die Mobile Checkout SDKs für Android, iOS, React Native oder Flutter. Alle diese Optionen verwenden dieselbe Checkout-Sitzungs-URL.
3

Handle the return

Nach der Zahlung werden Kunden zu deiner return_url weitergeleitet. Die Query-Parameter enthalten unter anderem die Zahlungs-/Abonnement-ID, den Status, die E-Mail-Adresse des Kunden und alle Lizenzschlüssel. Eine vollständige Liste findest du in der Dokumentation zu den return_url-Parametern.

Request Body

Required Fields

Für jede Checkout-Sitzung erforderliche Pflichtfelder

Optional Fields

Zusätzliche Konfiguration zur Anpassung deines Checkout-Erlebnisses

Erforderliche Felder

array
erforderlich
Array der Produkte, die in die Checkout-Sitzung aufgenommen werden sollen. Jedes Produkt muss über eine gültige product_id aus deinem Dodo Payments-Dashboard verfügen.
Gemischter Checkout: Du kannst Einmalzahlungsprodukte und Abonnementprodukte in derselben Checkout-Sitzung kombinieren. Dadurch werden leistungsstarke Anwendungsfälle wie Einrichtungsgebühren mit Abonnements, Hardwarepakete mit SaaS und vieles mehr ermöglicht.
Produkt-IDs finden: Produkt-IDs findest du in deinem Dodo Payments-Dashboard unter Products → View Details oder über die List Products API.

Optionale Felder

Konfiguriere diese Felder, um das Checkout-Erlebnis anzupassen und Geschäftslogik zu deinem Zahlungsablauf hinzuzufügen.
object
Kundeninformationen. Du kannst entweder einen bestehenden Kunden über seine ID anhängen oder während des Checkouts einen neuen Kundendatensatz erstellen.
Hänge einen bestehenden Kunden mithilfe seiner ID an die Checkout-Sitzung an.
object
Informationen zur Rechnungsadresse für eine korrekte Steuerberechnung, Betrugsprävention und Einhaltung gesetzlicher Vorschriften.
Wenn confirm auf true gesetzt ist, werden alle Felder der Rechnungsadresse für die erfolgreiche Sitzungserstellung erforderlich.
array
Steuere, welche Zahlungsmethoden Kunden während des Checkouts zur Verfügung stehen. Dies hilft, den Checkout für bestimmte Märkte oder geschäftliche Anforderungen zu optimieren.Gängige Optionen: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, ach, multibanco, bancontact_card, eps, ideal, blik, paypal. Dies ist nicht die vollständige Liste – alle akzeptierten Werte finden Sie in der API-Referenz für Create Checkout Session.
Wichtig: Gib credit und debit immer als Ausweichoptionen an, um Checkout-Fehler zu vermeiden, wenn bevorzugte Zahlungsmethoden nicht verfügbar sind.
Beispiel:
string
Überschreibe die standardmäßige Währungsauswahl mit einer festen Abrechnungswährung. Verwendet ISO-4217-Währungscodes.Unterstützte Währungen: USD, EUR, GBP, CAD, AUD, INR und weitereBeispiel: "USD" für US-Dollar, "EUR" für Euro
Dieses Feld ist nur wirksam, wenn adaptive pricing aktiviert ist. Wenn adaptive pricing deaktiviert ist, wird die Standardwährung des Produkts verwendet.
boolean
Standard:"false"
Zeige zuvor gespeicherte Zahlungsmethoden für wiederkehrende Kunden an, um Checkout-Geschwindigkeit und Benutzererlebnis zu verbessern.
string
URL, zu der Kunden nach Abschluss der Zahlung weitergeleitet werden. Dodo Payments hängt bei der Weiterleitung die folgenden Query-Parameter an deine URL an:Beispiel-Weiterleitungs-URLs:
Verwende die Query-Parameter license_key und email, um Lizenzschlüssel anzuzeigen oder sofort eine Bestätigung auf deiner Rückgabeseite zu senden, ohne einen zusätzlichen API-Aufruf zu benötigen.
string
URL, zu der Kunden weitergeleitet werden, wenn sie auf die Zurück-Schaltfläche klicken oder die Checkout-Sitzung abbrechen. Wenn sie nicht angegeben ist, wird die Zurück-Schaltfläche nicht angezeigt.
Lege eine cancel_url fest, damit Kunden eindeutig zu deiner Website zurückkehren können, ohne den Kauf abzuschließen. Dies verbessert das Checkout-Erlebnis und reduziert Reibung.
boolean
Standard:"false"
Wenn true, werden alle Sitzungsdetails sofort finalisiert. Die API gibt einen Fehler aus, wenn erforderliche Daten fehlen.
array
Wende einen oder mehrere aufeinanderfolgende Rabattcodes auf die Checkout-Sitzung an. Codes werden in Array-Reihenfolge angewendet (der erste Code reduziert den Grundpreis, der zweite den bereits rabattierten Preis usw.), bis zu maximal 20 Codes pro Sitzung.
Das einzelne Feld discount_code unten ist veraltet, wird aber weiterhin vollständig unterstützt — bestehende Integrationen funktionieren unverändert. Es kann in derselben Anfrage nicht mit discount_codes kombiniert werden. Migriere bei Gelegenheit zu discount_codes, um von der Verkettung zu profitieren.
string
veraltet
Veraltet — verwende für neue Integrationen bevorzugt discount_codes. Dieses Feld funktioniert aus Gründen der Abwärtskompatibilität weiterhin, kann aber in derselben Anfrage nicht mit discount_codes kombiniert werden.
object
Benutzerdefinierte Schlüssel-Wert-Paare zum Speichern zusätzlicher Informationen zur Sitzung.
boolean
Überschreibe das standardmäßige 3DS-Verhalten des Händlers für diese Sitzung.
boolean
Standard:"false"
Aktiviere den Modus zur Erfassung einer minimalen Adresse. Wenn aktiviert, erfasst der Checkout nur:
  • Land: Für die Steuerbestimmung immer erforderlich
  • ZIP-/Postleitzahl: Nur in Regionen, in denen sie für die Berechnung von sales tax, VAT oder GST erforderlich ist
Dies reduziert Reibung beim Checkout erheblich, da unnötige Formularfelder entfallen.
Aktiviere die minimale Adresse für einen schnelleren Checkout-Abschluss. Die vollständige Adresserfassung bleibt für Unternehmen verfügbar, die vollständige Rechnungsdaten benötigen.
string
Eine gespeicherte Zahlungsmethode des angehängten Kunden. Erfordert confirm: true und eine vorhandene customer.customer_id. Wenn gesetzt, wird die Zahlung sofort verarbeitet und checkout_url als null zurückgegeben — verwende stattdessen das zurückgegebene payment_id.
Wenn true, wird eine verkürzte Checkout-URL anstelle der vollständigen Sitzungs-URL zurückgegeben.
string
Produktkollektions-ID für den sammlungsbasierten Checkout-Ablauf.
string
Steuer-ID des Kunden (z. B. eine Umsatzsteuer-ID). Erfordert billing_address mit einer country.
string
Optionaler geschäftlicher oder rechtlicher Name, der mit der Steuer-ID verknüpft ist. Zusammen mit einer gültigen tax_id wird er auf der Rechnung anstelle des persönlichen Namens des Kunden angezeigt.
integer
Überschreibe den Mandatsmindestbetrag auf Händlerebene (in INR-Paise) für INR-E-Mandate auf indischen Karten.
object
Passe das Erscheinungsbild und Verhalten der Checkout-Oberfläche an.
object
Konfiguriere bestimmte Funktionen und Verhaltensweisen für die Checkout-Sitzung.
array
Erfasse während des Checkouts mithilfe benutzerdefinierter Formularfelder zusätzliche Informationen von Kunden. Du kannst bis zu 5 benutzerdefinierte Felder pro Checkout-Sitzung definieren. Kundenantworten sind in Webhook-Payloads enthalten und über die API verfügbar.
Kundenantworten auf benutzerdefinierte Felder sind enthalten in:
  • Webhooks: payment.succeeded, subscription.active und andere relevante Event-Payloads enthalten das Array custom_field_responses
  • API-Antworten: Zahlungs- und Abonnementobjekte enthalten custom_field_responses
object
Zusätzliche Konfiguration für Checkout-Sitzungen mit Abonnementprodukten.

Anwendungsbeispiele

Hier sind 10 umfassende Beispiele für verschiedene Checkout-Sitzungskonfigurationen in unterschiedlichen Geschäftsszenarien:

1. Einfacher Checkout mit einem Produkt

2. Warenkorb mit mehreren Produkten

3. Abonnement mit Testzeitraum

4. Vorbestätigter Checkout

Wenn confirm auf true gesetzt ist, wird der Kunde direkt zur Checkout-Seite weitergeleitet und alle Bestätigungsschritte werden übersprungen.

5. Checkout mit Währungsüberschreibung

Die Überschreibung billing_currency wird nur wirksam, wenn adaptive currency in deinen Kontoeinstellungen aktiviert ist. Wenn adaptive currency deaktiviert ist, hat dieser Parameter keine Wirkung.

6. Gespeicherte Zahlungsmethoden für wiederkehrende Kunden

7. B2B-Checkout mit Erfassung der Steuer-ID

8. Checkout mit dunklem Theme und verketteten Rabattcodes

9. Regionale Zahlungsmethoden (UPI für Indien)

Ausführliche Informationen zur Konfiguration und zum Testen von UPI findest du auf der Seite India Payment Methods.

10. BNPL-Checkout (Jetzt kaufen, später bezahlen)

Ausführliche Informationen zur Konfiguration und zum Testen von BNPL findest du auf der Seite Buy Now Pay Later (BNPL).

11. Vorhandene Zahlungsmethoden für einen sofortigen Checkout verwenden

Verwende die gespeicherte Zahlungsmethode eines Kunden, um eine Checkout-Sitzung zu erstellen, die sofort verarbeitet wird und die Erfassung der Zahlungsmethode überspringt:
Bei Verwendung von payment_method_id muss confirm auf true gesetzt und eine vorhandene customer_id angegeben werden. Die Zahlungsmethode wird auf ihre Eignung für die Währung der Zahlung geprüft. Da die Zahlung sofort verarbeitet wird, wird checkout_url als null zurückgegeben — verwende stattdessen das zurückgegebene payment_id.
Die Zahlungsmethode muss dem Kunden gehören und mit der Zahlungswährung kompatibel sein. Dadurch werden Käufe mit einem Klick für wiederkehrende Kunden ermöglicht.
Erstelle verkürzte, teilbare Zahlungslinks mit benutzerdefinierten Slugs:
Kurzlinks eignen sich ideal zum Teilen per SMS, E-Mail oder sozialen Medien. Sie sind leichter zu merken und schaffen mehr Vertrauen bei Kunden als lange URLs.

13. Zahlungsbestätigungsseite überspringen und sofort weiterleiten

Leite Kunden unmittelbar nach Abschluss der Zahlung weiter und überspringe die standardmäßige Bestätigungsseite:
Verwende redirect_immediately: true, wenn du eine benutzerdefinierte Bestätigungsseite mit einer besseren Benutzererfahrung als die standardmäßige Zahlungsbestätigungsseite hast. Dies ist besonders für mobile Apps und eingebettete Checkout-Abläufe nützlich.
Wenn redirect_immediately aktiviert ist, werden Kunden unmittelbar nach Abschluss der Zahlung zu deiner return_url weitergeleitet und die standardmäßige Bestätigungsseite vollständig übersprungen.

14. Sprache erzwingen

Erzwinge die Anzeige des Checkouts in einer bestimmten Sprache und überschreibe damit die Spracherkennung des Kundenbrowsers:
Verwende force_language, wenn du die bevorzugte Sprache deines Kunden kennst (z. B. aus den Kontoeinstellungen) oder bestimmte regionale Märkte ansprichst.
Unterstützte Sprachen: Arabisch (ar), Katalanisch (ca), Chinesisch (zh), Niederländisch (nl), Englisch (en), Französisch (fr), Deutsch (de), Hebräisch (he), Indonesisch (id), Italienisch (it), Japanisch (ja), Koreanisch (ko), Malaiisch (ms), Polnisch (pl), Portugiesisch (pt), Rumänisch (ro), Russisch (ru), Spanisch (es), Schwedisch (sv), Thailändisch (th), Türkisch (tr)

15. Benutzerdefinierte Felder erfassen

Erfasse während des Checkouts mithilfe benutzerdefinierter Felder zusätzliche Informationen von Kunden:
Antworten auf benutzerdefinierte Felder werden automatisch in Webhook-Payloads (payment.succeeded, subscription.active usw.) aufgenommen und können über die API abgerufen werden. Verwende sie, um dein CRM anzureichern, Onboarding-Abläufe auszulösen oder das Kundenerlebnis anzupassen.
Verfügbare Feldtypen: text, number, email, url, date, dropdown, boolean

Checkout-Sitzungen in der Vorschau anzeigen

Vor dem Erstellen einer Checkout-Sitzung kannst du die Preisaufschlüsselung einschließlich Steuern, Rabatten und Gesamtsummen in einer Vorschau anzeigen. Dies ist nützlich, um Kunden genaue Preise anzuzeigen, bevor sie zum Checkout fortfahren.
Wenn der Warenkorb ein Abonnementprodukt enthält, gibt die Vorschauantwort außerdem eine next_billing_date zurück — eine Vorschau des bevorstehenden Abrechnungsdatums, damit du es vor der Erstellung des Abonnements anzeigen kannst. Sie wird relativ zum aktuellen Zeitpunkt berechnet: now + trial period, wenn ein Testzeitraum gilt, andernfalls now + one payment frequency. Bei Warenkörben, die nur Einmalprodukte enthalten, wird das Feld weggelassen. Es handelt sich um eine auf den Vorschauzeitpunkt bezogene Schätzung; die maßgebliche next_billing_date wird beim Aktivieren des Abonnements festgelegt.
Die Vorschau gibt außerdem trial_period_days (die effektive Dauer des kostenlosen oder kostenpflichtigen Testzeitraums) und trial_amount (die Testgebühr pro Einheit nach Rabatten in den kleinsten Einheiten der Preiswährung) zurück. trial_amount ist nur bei einem kostenpflichtigen Testzeitraum vorhanden und bei einem kostenlosen oder fehlenden Testzeitraum null. Verwende current_breakup für die tatsächlich heute fällige, versteuerte Gesamtsumme.

Preview API Reference

Vollständige Dokumentation des Vorschau-Endpunkts anzeigen.

Wesentliche Unterschiede

Bisher musstest du beim Erstellen eines Zahlungslinks mit Dynamic Links die vollständige Rechnungsadresse des Kunden angeben. Mit Checkout-Sitzungen ist das nicht mehr erforderlich. Du kannst einfach alle Informationen übergeben, die dir vorliegen, und wir kümmern uns um den Rest. Zum Beispiel:
  • Wenn du nur das Rechnungsland des Kunden kennst, gib einfach dieses an.
  • Der Checkout-Ablauf erfasst die fehlenden Daten automatisch, bevor der Kunde zur Zahlungsseite weitergeleitet wird.
  • Wenn du hingegen bereits alle erforderlichen Informationen hast und direkt zur Zahlungsseite wechseln möchtest, kannst du den vollständigen Datensatz übergeben und confirm=true in deinen Request Body aufnehmen.

Migrationsprozess

Die Migration von Dynamic Links zu Checkout-Sitzungen ist unkompliziert:
1

Update your integration

Aktualisiere deine Integration, damit sie die neue API- oder SDK-Methode verwendet.
2

Adjust request payload

Passe die Request-Payload an das Format der Checkout-Sitzungen an.
3

That's it!

Ja. Auf deiner Seite sind keine zusätzlichen Maßnahmen oder besonderen Migrationsschritte erforderlich.

Verwandte API-Referenz

Create Checkout Session

Vollständige API-Referenz zum Erstellen von Checkout-Sitzungen mit allen verfügbaren Parametern und Optionen

Preview Checkout Session

API-Referenz zur Vorschau von Preisen, Steuern und Gesamtsummen vor dem Erstellen einer Sitzung
Zuletzt geändert am 17. August 2026