Prerequisites
To integrate the Dodo Payments API, you’ll need:- A Dodo Payments merchant account
- API credentials (API key and webhook secret key) from the dashboard
API Integration
Checkout Sessions
Use Checkout Sessions to sell subscription products with a secure, hosted checkout. Pass your subscription product inproduct_cart and redirect customers to the returned checkout_url.
- Node.js SDK
- Python SDK
- REST API
API Response
The following is an example of the response:checkout_url.
Webhooks
Bei der Integration von Abonnements erhalten Sie Webhooks, um den Lebenszyklus der Abonnements zu verfolgen. Diese Webhooks helfen Ihnen, den Abonnementstatus und Zahlungsszenarien effektiv zu verwalten. Um Ihren Webhook-Endpunkt einzurichten, folgen Sie bitte unserem Detaillierten Integrationshandbuch.Abonnement-Ereignistypen
Die folgenden Webhook-Ereignisse verfolgen Änderungen des Abonnementstatus:subscription.active- Abonnement wurde erfolgreich aktiviert.subscription.updated- Abonnementobjekt wurde aktualisiert (wird bei jeder Feldänderung ausgelöst).subscription.on_hold- Abonnement wird wegen fehlgeschlagener Verlängerung pausiert.subscription.failed- Abonnementerstellung schlug bei der Erstellung des Mandats fehl.subscription.renewed- Abonnement wird für den nächsten Abrechnungszeitraum erneuert.
Zahlungsszenarien
Erfolgreicher Zahlungsablauf Die Webhooks, die Sie empfangen, und deren Zeitpunkt hängen davon ab, ob das Produkt eine Testphase hat. Sofortige Abrechnung (0 Testtage):subscription.active: Das Mandat wird autorisiert und das Abonnement aktiviert.payment.succeeded: Bestätigt die erste Abbuchung. Dies wird innerhalb von 2–10 Minuten nach dem Checkout erwartet.
- Zu Beginn der Testphase (Checkout):
subscription.activewird ausgelöst, sobald die Zahlungsmethode autorisiert wurde. Es wird noch keine wiederkehrende Abbuchung vorgenommen. Die erste tatsächliche Abbuchung erfolgt erst nach Ende der Testphase. - Am Ende der Testphase: Der wiederkehrende Betrag wird abgebucht, und Sie erhalten
payment.succeededzusammen mitsubscription.renewed.
subscription.renewed: Wird bei jedem Abrechnungszyklus ausgelöst, wenn die Zahlung für die Verlängerung abgebucht wird, immer zusammen mitpayment.succeeded. Enthält außerdem den aktualisierten Wertnext_billing_date.
Immer wenn Geld für ein Abonnementprodukt tatsächlich abgebucht wird, erhalten Sie
subscription.renewed und payment.succeeded. Verwenden Sie subscription.renewed (statt allein payment.succeeded) als Signal, um den Zugriff für den nächsten Zyklus zu verlängern.- Fehler beim Abonnement
subscription.failed– Die Erstellung des Abonnements ist fehlgeschlagen, weil kein Mandat erstellt werden konnte.payment.failed– Zeigt eine fehlgeschlagene Zahlung an.
- Abonnement pausiert
subscription.on_hold– Das Abonnement wird aufgrund einer fehlgeschlagenen Zahlung für die Verlängerung oder einer fehlgeschlagenen Abbuchung bei einer Planänderung pausiert.- Wenn ein Abonnement pausiert wird, verlängert es sich nicht automatisch, bis die Zahlungsmethode aktualisiert wurde.
Best Practice: Um die Implementierung zu vereinfachen, empfehlen wir, hauptsächlich Abonnementereignisse zur Verwaltung des Abonnementlebenszyklus zu verfolgen.
subscription.failed vs. subscription.on_hold
Diese beiden Ereignisse werden leicht verwechselt, erfordern jedoch eine sehr unterschiedliche Behandlung:
Umgang mit pausierten Abonnements
Wenn ein Abonnement in den Statuson_hold wechselt, müssen Sie die Zahlungsmethode aktualisieren, um es zu reaktivieren. Dieser Abschnitt erklärt, wann Abonnements pausiert werden und wie Sie damit umgehen.
Wann Abonnements pausiert werden
Ein Abonnement wird pausiert, wenn:- Die Zahlung für die Verlängerung fehlschlägt: Die automatische Abbuchung für die Verlängerung schlägt aufgrund unzureichender Deckung, einer abgelaufenen Karte oder einer Ablehnung durch die Bank fehl
- Die Abbuchung bei einer Planänderung fehlschlägt: Eine sofortige Abbuchung während eines Upgrades oder Downgrades des Plans schlägt fehl
- Die Autorisierung der Zahlungsmethode fehlschlägt: Die Zahlungsmethode kann für wiederkehrende Abbuchungen nicht autorisiert werden
Abonnements aus dem pausierten Status reaktivieren
Um ein Abonnement aus dem Statuson_hold zu reaktivieren, verwenden Sie die Update Payment Method API. Dadurch werden automatisch folgende Schritte ausgeführt:
- Eine Abbuchung für ausstehende Beträge erstellen
- Eine Rechnung für die Abbuchung generieren
- Die Zahlung mit der neuen Zahlungsmethode verarbeiten
- Das Abonnement nach erfolgreicher Zahlung in den Status
activereaktivieren
1
Handle subscription.on_hold webhook
Wenn Sie einen
subscription.on_hold-Webhook erhalten, aktualisieren Sie den Status Ihrer Anwendung und benachrichtigen Sie den Kunden:2
Update payment method
Wenn der Kunde bereit ist, seine Zahlungsmethode zu aktualisieren, rufen Sie die Update Payment Method API auf:
Sie können auch die ID einer vorhandenen Zahlungsmethode verwenden, wenn der Kunde Zahlungsmethoden gespeichert hat:
3
Monitor webhook events
Überwachen Sie nach der Aktualisierung der Zahlungsmethode die folgenden Webhook-Ereignisse:
payment.succeeded– Die Abbuchung für ausstehende Beträge war erfolgreichsubscription.active– Das Abonnement wurde reaktiviert
Beispiel für eine Abonnementereignisnutzlast
Abonnementpläne ändern
Sie können einen Abonnementplan über den API-Endpunkt zum Ändern des Plans upgraden oder downgraden. Damit können Sie das Produkt, die Menge und die anteilige Abrechnung des Abonnements ändern.Change Plan API Reference
Ausführliche Informationen zum Ändern von Abonnementplänen finden Sie in unserer Dokumentation zur Change Plan API.
Optionen für die anteilige Abrechnung
Beim Ändern von Abonnementplänen haben Sie zwei Optionen für den Umgang mit der sofortigen Abbuchung:1. prorated_immediately
- Berechnet den anteiligen Betrag basierend auf der verbleibenden Zeit im aktuellen Abrechnungszyklus
- Belastet den Kunden nur mit der Differenz zwischen dem alten und dem neuen Plan
- Während einer Testphase wird der Benutzer sofort auf den neuen Plan umgestellt und der Kunde umgehend belastet
2. full_immediately
- Belastet den Kunden mit dem vollständigen Abonnementbetrag des neuen Plans
- Ignoriert die verbleibende Zeit und Gutschriften des vorherigen Plans
- Nützlich, wenn Sie den Abrechnungszyklus zurücksetzen oder unabhängig von der anteiligen Abrechnung den vollständigen Betrag berechnen möchten
3. difference_immediately
- Beim Upgrade wird dem Kunden sofort die Differenz zwischen den beiden Planbeträgen berechnet.
- Wenn der aktuelle Plan beispielsweise 30 Dollar kostet und der Kunde auf einen Plan für 80 Dollar upgradet, werden ihm sofort $50 berechnet.
- Beim Downgrade wird der nicht genutzte Betrag des aktuellen Plans als internes Guthaben hinzugefügt und automatisch auf zukünftige Verlängerungen des Abonnements angerechnet.
- Wenn der aktuelle Plan beispielsweise 50 Dollar kostet und der Kunde zu einem Plan für 20 Dollar wechselt, werden die verbleibenden $30 gutgeschrieben und auf den nächsten Abrechnungszyklus angerechnet.
4. do_not_bill
- Wendet die Planänderung sofort an, ohne zum Zeitpunkt der Änderung eine Abbuchung vorzunehmen.
- Der aktualisierte Plan (einschließlich Menge/Add-ons) wird bei der nächsten planmäßigen Verlängerung abgerechnet, und das ursprüngliche Abrechnungsdatum bleibt erhalten.
Verhalten
- Wenn Sie diese API aufrufen, leitet Dodo Payments sofort eine Abbuchung basierend auf der von Ihnen gewählten Option für die anteilige Abrechnung ein
- Wenn die Planänderung ein Downgrade ist und Sie
prorated_immediatelyverwenden, werden Gutschriften automatisch berechnet und dem Guthaben des Abonnements hinzugefügt. Diese Gutschriften gelten nur für dieses Abonnement und werden ausschließlich zum Ausgleich zukünftiger wiederkehrender Zahlungen desselben Abonnements verwendet - Die Option
full_immediatelyumgeht die Gutschriftenberechnung und berechnet den vollständigen Betrag des neuen Plans
Verarbeitung der Abbuchung
- Die bei der Planänderung eingeleitete sofortige Abbuchung wird normalerweise in weniger als 2 Minuten verarbeitet
- Wenn diese sofortige Abbuchung aus irgendeinem Grund fehlschlägt, wird das Abonnement automatisch pausiert, bis das Problem behoben ist
On-Demand-Abonnements
Mit On-Demand-Abonnements können Sie Kunden flexibel belasten, nicht nur nach einem festen Zeitplan. Diese Funktion ist für alle Konten verfügbar.
on_demand in den Request-Body ein. Damit können Sie eine Zahlungsmethode ohne sofortige Abbuchung autorisieren oder einen benutzerdefinierten Anfangspreis festlegen.
So belasten Sie ein On-Demand-Abonnement:
Verwenden Sie für nachfolgende Abbuchungen den Endpunkt POST /subscriptions//charge und geben Sie den Betrag an, den Sie dem Kunden für diese Transaktion berechnen möchten.
Eine vollständige Schritt-für-Schritt-Anleitung (einschließlich Request-/Response-Beispielen, sicheren Richtlinien für erneute Versuche und der Verarbeitung von Webhooks) finden Sie im Leitfaden zu On-Demand-Abonnements.
Wichtige Informationen zur Abonnementabrechnung
Testphasen lösen eine Autorisierung über $0 aus, keine Abbuchung. Wenn ein Abonnement eine Testphase hat, wird zu deren Beginn eine Mandatsautorisierung über $0 erstellt, um die Karte zu speichern; die erste tatsächliche Abbuchung erfolgt nach Ende der Testphase. In der Zahlungsliste wird ein Abonnement in der Testphase mit genau einer Zahlung mit
amount: 0 angezeigt.Lebenszyklus des Abonnements:
on_hold = eine Verlängerung ist fehlgeschlagen (wiederherstellbar: Fordern Sie den Kunden auf, seine Zahlungsmethode zu aktualisieren; Dunning-Wiederholungen werden angewendet). expired = die Laufzeit ist ohne Verlängerung abgelaufen und kann nicht reaktiviert werden. Der Kunde muss sich erneut anmelden. cancelled = vom Kunden oder Händler beendet. Die meisten Fehler bei Verlängerungen sind Ablehnungen auf Seiten des Kartenherausgebers (unzureichende Deckung, abgelehnte Karte) und kein Dodo-Fehler.Zugehörige API-Referenz
Create Subscription
API-Referenz zum Erstellen von Abonnementprodukten und Verwalten des Abonnementlebenszyklus
Change Subscription Plan
API-Referenz zum Upgraden, Downgraden oder Ändern von Abonnementplänen mit Optionen für die anteilige Abrechnung
Update Payment Method
API-Referenz zum Aktualisieren von Zahlungsmethoden und Reaktivieren pausierter Abonnements
Patch Subscription
API-Referenz zum Aktualisieren von Abonnementdetails und Konfiguration