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
When integrating subscriptions, you’ll receive webhooks to track the subscription lifecycle. These webhooks help you manage subscription states and payment scenarios effectively. To set up your webhook endpoint, please follow our Detailed Integration Guide.Subscription Event Types
The following webhook events track subscription status changes:subscription.active- Subscription is successfully activated.subscription.updated- Subscription object was updated (fires on any field change).subscription.on_hold- Subscription is put on hold due to failed renewal.subscription.failed- Subscription creation failed during mandate creation.subscription.renewed- Subscription is renewed for the next billing period.
Payment Scenarios
Successful Payment Flow When a payment succeeds, you’ll receive the following webhooks:subscription.active- Indicates subscription activationpayment.succeeded- Confirms the initial payment:- For immediate billing (0 trial days): Expect within 2-10 minutes
- For trial days: whenever that ends
subscription.renewed- Indicates payment deduction and renewal for next cycle. (Basically, whenever payment gets deducted for subscription products, you will getsubscription.renewedwebhook along withpayment.succeeded)
- Subscription Failure
subscription.failed- Subscription creation failed due to failure to create a mandate.payment.failed- Indicates failed payment.
- Subscription On Hold
subscription.on_hold- Subscription is put on hold due to failed renewal payment or failed plan change charge.- When a subscription goes on hold, it will not renew automatically until the payment method is updated.
Best Practice: To simplify implementation, we recommend primarily tracking subscription events for managing the subscription lifecycle.
subscription.failed vs. subscription.on_hold
Diese beiden Ereignisse sind leicht zu verwechseln, erfordern jedoch sehr unterschiedliche Handhabung:
| Ereignis | Wann es ausgelöst wird | Status | Wiederherstellbar? | Was zu tun ist |
|---|---|---|---|---|
subscription.failed | Das initiale Mandat konnte bei der Erstellung des Abonnements nicht erstellt werden | failed | Nein — terminal | Kein Zugriff gewähren. Bitten Sie den Kunden, ein neues Abonnement mit einer anderen Zahlungsmethode zu starten. |
subscription.on_hold | Eine Erneuerungszahlung (oder Tarifänderungsgebühr) ist bei einem bereits aktiven Abonnement fehlgeschlagen | on_hold | Ja | Wiederherstellen durch Aktualisieren der Zahlungsmethode; siehe Behandlung von Abonnements im Wartezustand unten. |
Behandlung von Abonnements im Wartezustand
Wenn ein Abonnement den Zustandon_hold erreicht, müssen Sie die Zahlungsmethode aktualisieren, um es zu reaktivieren. Dieser Abschnitt erklärt, wann Abonnements in den Wartezustand versetzt werden und wie man damit umgeht.
Wann Abonnements in den Wartezustand versetzt werden
Ein Abonnement wird in den Wartezustand versetzt, wenn:- Erneuerungszahlung fehlschlägt: Die automatische Erneuerungsgebühr schlägt aufgrund unzureichender Mittel, abgelaufener Karte oder Bankenabweisung fehl
- Tarifänderungsgebühr fehlschlägt: Eine sofortige Gebühr während eines Upgrades/Downgrades des Tarifplans schlägt fehl
- Autorisierung der Zahlungsmethode fehlschlägt: Die Zahlungsmethode kann nicht für wiederkehrende Belastungen autorisiert werden
Reaktivierung von Abonnements im Wartezustand
Um ein Abonnement aus dem Zustandon_hold zu reaktivieren, verwenden Sie die Aktualisieren der Zahlungsmethode API. Dies erstellt automatisch:
- Eine Gebühr für ausstehende Beträge
- Eine Rechnung für die Gebühr
- Verarbeitet die Zahlung mit der neuen Zahlungsmethode
- Reaktiviert das Abonnement in den Zustand
activenach erfolgreicher Zahlung
Handle subscription.on_hold webhook
Wenn Sie einen
subscription.on_hold Webhook erhalten, aktualisieren Sie den Anwendungszustand und benachrichtigen Sie den Kunden:Update payment method
Wenn der Kunde bereit ist, seine Zahlungsmethode zu aktualisieren, rufen Sie die Update Payment Method API auf:
Sie können auch eine vorhandene Zahlungsmethoden-ID verwenden, wenn der Kunde gespeicherte Zahlungsmethoden hat:
Beispiel-Event-Payload für Abonnements
| Eigenschaft | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
business_id | string | Ja | Die eindeutige Kennung für das Unternehmen |
timestamp | string | Ja | Der Zeitstempel, wann das Ereignis aufgetreten ist (nicht unbedingt derselbe wie bei der Zustellung) |
type | string | Ja | Der Ereignistyp. Siehe Ereignistypen |
data | object | Ja | Die Hauptdaten-Payload. Siehe Datenobjekt |
Ändern von Abonnementsplänen
Sie können einen Abonnementplan mit dem API-Endpunkt zur Planänderung upgraden oder downgraden. Damit können Sie das Produkt des Abonnements, die Menge und die Handhabung der anteiligen Verrechnung ändern.Change Plan API Reference
Für detaillierte Informationen zur Änderung von Abonnementplänen lesen Sie bitte unsere Dokumentation zur Planänderung API.
Optionen zur Verrechnung
Beim Ändern von Abonnementsplänen haben Sie zwei Optionen zur Handhabung der sofortigen Gebühr:1. prorated_immediately
- Berechnet den anteiligen Betrag basierend auf der verbleibenden Zeit im aktuellen Abrechnungszyklus
- Belastet den Kunden nur für den Unterschied zwischen dem alten und dem neuen Plan
- Während eines Testzeitraums wird der Benutzer sofort auf den neuen Plan umgestellt und der Kunde sofort belastet
2. full_immediately
- Belastet den Kunden den vollen Abonnementbetrag für den neuen Plan
- Ignoriert verbleibende Zeit oder Guthaben aus dem vorherigen Plan
- Nützlich, wenn Sie den Abrechnungszyklus zurücksetzen oder den vollen Betrag unabhängig von der Verrechnung berechnen möchten
3. difference_immediately
- Beim Upgrade wird der Kunde sofort mit dem Unterschied zwischen den beiden Plänen belastet.
- Beispiel: Wenn der aktuelle Plan 30 Dollar kostet und der Kunde zu einem 80-Dollar-Plan wechselt, werden ihm sofort 50 Dollar berechnet.
- Beim Downgrade wird der nicht genutzte Betrag des aktuellen Plans als internes Guthaben hinzugefügt und automatisch auf zukünftige Abonnementverlängerungen angerechnet.
- Beispiel: Wenn der aktuelle Plan 50 Dollar kostet und der Kunde zu einem 20-Dollar-Plan wechselt, werden die verbleibenden 30 Dollar gutgeschrieben und für den nächsten Abrechnungszyklus verwendet.
Verhalten
- Wenn Sie diese API aufrufen, initiiert Dodo Payments sofort eine Gebühr basierend auf Ihrer gewählten Verrechnungsoption
- Wenn die Planänderung ein Downgrade ist und Sie
prorated_immediatelyverwenden, werden Credits automatisch berechnet und dem Guthabensaldo des Abonnements hinzugefügt. Diese Guthaben sind spezifisch für dieses Abonnement und werden nur zur Verrechnung zukünftiger wiederkehrender Zahlungen desselben Abonnements verwendet - Die Option
full_immediatelyumgeht die Guthabenberechnung und berechnet den vollen neuen Planbetrag
Gebührenbearbeitung
- Die sofortige Gebühr, die bei der Planänderung initiiert wird, wird in der Regel in weniger als 2 Minuten bearbeitet
- Wenn diese sofortige Gebühr aus irgendeinem Grund fehlschlägt, wird das Abonnement automatisch in den Wartezustand versetzt, bis das Problem gelöst ist
On-Demand-Abonnements
On-Demand-Abonnements ermöglichen es Ihnen, Kunden flexibel zu belasten, nicht nur nach einem festen Zeitplan. Diese Funktion ist für alle Konten verfügbar.
on_demand in Ihren Anfragekörper ein. Dadurch können Sie eine Zahlungsmethode ohne sofortige Belastung autorisieren oder einen benutzerdefinierten Startpreis festlegen.
So berechnen Sie ein On-Demand-Abonnement:
Für nachfolgende Belastungen verwenden Sie den POST /subscriptions//charge Endpunkt und geben Sie den Betrag an, den Sie dem Kunden für diese Transaktion berechnen möchten.
Für eine vollständige Schritt-für-Schritt-Anleitung — einschließlich Anforderungs-/Antwortbeispiele, sicherer Wiederholungsrichtlinien und Webhook-Verarbeitung — siehe den On-Demand-Abonnements-Leitfaden.
Verwandte API-Referenz
Create Subscription
API-Referenz zur Erstellung von Abonnementprodukten und Verwaltung des Abonnementlebenszyklus
Change Subscription Plan
API-Referenz zum Upgrade, Downgrade oder zur Änderung von Abonnementplänen mit Verrechnungsoptionen
Update Payment Method
API-Referenz zur Aktualisierung von Zahlungsmethoden und zur Reaktivierung von Abonnements im Wartezustand
Patch Subscription
API-Referenz zur Aktualisierung von Abonnementdetails und Konfiguration