Subscriptions let you sell ongoing access with automated renewals. Use flexible billing cycles, free trials, plan changes, and add‑ons to tailor pricing for each customer.
Upgrade & Downgrade
Control plan changes with proration and quantity updates.
On‑Demand Subscriptions
Authorize a mandate now and charge later with custom amounts.
Customer Portal
Let customers manage plans, billing, and cancellations.
Subscription Webhooks
React to lifecycle events like created, renewed, and canceled.
What Are Subscriptions?
Subscriptions are recurring products customers purchase on a schedule. They’re ideal for:- SaaS licenses: Apps, APIs, or platform access
- Memberships: Communities, programs, or clubs
- Digital content: Courses, media, or premium content
- Support plans: SLAs, success packages, or maintenance
Key Benefits
- Predictable revenue: Recurring billing with automated renewals
- Flexible cycles: Monthly, annual, custom intervals, and trials
- Plan agility: Proration for upgrades and downgrades
- Add‑ons and seats: Attach optional, quantifiable upgrades
- Seamless checkout: Hosted checkout and customer portal
- Developer-first: Clear APIs for creation, changes, and usage tracking
Creating Subscriptions
Create subscription products in your Dodo Payments dashboard, then sell them through checkout or your API. Separating products from active subscriptions lets you version pricing, attach add‑ons, and track performance independently.Subscription product creation
Configure the fields in the dashboard to define how your subscription sells, renews, and bills. The sections below map directly to what you see in the creation form.Product details
- Product Name (required): The display name shown in checkout, customer portal, and invoices.
- Product Description (required): A clear value statement that appears in checkout and invoices.
- Product Image (required): PNG/JPG/WebP up to 3 MB. Used on checkout and invoices.
- Brand: Associate the product with a specific brand for theming and emails.
- Tax Category (required): Choose the category (for example, SaaS) to determine tax rules.
Pricing
- Preistyp: Wähle Subscription (dieser Leitfaden). Alternativen sind Einzelzahlung und nutzungsbasierte Abrechnung.
- Preis (erforderlich): Wiederkehrender Grundpreis mit Währung. Der Preis muss mindestens $1 (oder dem Gegenwert in der gewählten Währung) entsprechen. Beträge unter diesem Mindestwert werden nicht unterstützt, und die Subscription funktioniert nicht.
- Rabatt anwendbar (%): Optionaler prozentualer Rabatt auf den Grundpreis; wird im Checkout und auf Rechnungen berücksichtigt.
- Zahlung wiederholen alle (erforderlich): Intervall für Verlängerungen, z. B. jeden Monat. Wähle den Turnus (Monate oder Jahre) und die Anzahl.
- Subscription-Zeitraum (erforderlich): Gesamtlaufzeit, während der die Subscription aktiv bleibt (z. B. 10 Jahre). Nach Ablauf dieses Zeitraums werden keine Verlängerungen mehr durchgeführt, sofern der Zeitraum nicht erweitert wird.
- Tage des Testzeitraums (erforderlich): Lege die Länge des Testzeitraums in Tagen fest. Verwende 0, um Testzeiträume zu deaktivieren. Die erste Abbuchung erfolgt automatisch nach Ende des Testzeitraums.
- Testbetrag: Optionale Vorauszahlung für einen kostenpflichtigen Testzeitraum. Lass das Feld leer für einen kostenlosen Testzeitraum. Siehe Kostenpflichtige Testzeiträume.
- Add-on auswählen: Füge bis zu 10 Add-ons hinzu, die Kunden zusammen mit dem Basistarif erwerben können.
Add‑ons are ideal for quantifiable extras such as seats or storage. You can control allowed quantities and proration behavior when customers change them.
Advanced settings
- Tax Inclusive Pricing: Display prices inclusive of applicable taxes. Final tax calculation still varies by customer location.
- Generate license keys: Issue a unique key to each customer after purchase. See the License Keys guide.
- Digital Product Delivery: Deliver files or content automatically after purchase. Learn more in Digital Product Delivery.
- Metadata: Attach custom key–value pairs for internal tagging or client integrations. See Metadata.
Subscription Trials
Testzeiträume ermöglichen es Kunden, eine Subscription zu prüfen, bevor sie den vollständigen wiederkehrenden Preis bezahlen. Ein Testzeitraum kann kostenlos sein, wobei bis zu seinem Ende nichts berechnet wird, oder kostenpflichtig, wobei vorab ein reduzierter Betrag berechnet wird. In beiden Fällen beginnt die Berechnung des vollständigen Preises mit der ersten Verlängerung nach Ende des Testzeitraums.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Kostenpflichtige Testzeiträume
Testzeiträume müssen nicht kostenlos sein. Lege beim wiederkehrenden Preis eines Subscription-Produkts einen Testbetrag fest, um für das Testfenster eine reduzierte Vorauszahlung zu berechnen. Der vollständige wiederkehrende Preis wird dann mit der ersten Verlängerung berechnet.
trial_amount und trial_period_days zurück, damit du den heute fälligen Betrag anzeigen kannst, bevor die Subscription erstellt wird.
Kostenlose Testzeiträume bleiben unverändert. Wenn du Testbetrag nicht festlegst, bleibt das bestehende Verhalten erhalten: Die erste Abbuchung beträgt
0 und der vollständige Preis wird nach Ende des Testzeitraums berechnet.Verhindern des Missbrauchs von Testzeiträumen
Missbrauch von Testzeiträumen verhindern verhindert, dass Kunden wiederholt Testzeiträume für dasselbe Unternehmen beanspruchen. Wenn diese Option aktiviert ist, wird ein Kunde, der bereits einen Testzeitraum eingelöst hat, automatisch zu einem kostenpflichtigen Kauf ohne Testzeitraum herabgestuft, anstatt einen neuen Testzeitraum zu erhalten.
- Kunden werden anhand der normalisierten E-Mail-Adresse abgeglichen. Dabei werden Plus-Aliase entfernt, sodass
user+trial@example.comunduser@example.comals dieselbe Person gelten. - Einlösungen werden bei der Aktivierung des Testzeitraums erfasst. Ein Kunde, der noch am selben Tag kündigt, hat seinen Testzeitraum daher trotzdem verbraucht.
- Bestehende Kunden werden anhand ihrer früheren Testzeiträume per E-Mail nachgetragen, sodass frühere Nutzer von Testzeiträumen sofort erkannt werden.
Die Einstellung ist standardmäßig deaktiviert. Eine vollständige Liste der Subscription-Steuerungen auf Unternehmensebene findest du unter Subscription Settings.
Erkennen des Testzeitraumstatus
Um festzustellen, ob sich eine Subscription mit einem kostenlosen Testzeitraum im Testzeitraum befindet, rufe die Liste der Zahlungen für die Subscription ab. Gibt es genau eine Zahlung mit dem Betrag 0, befindet sich die Subscription im Testzeitraum:Testzeitraum aktualisieren
Verlängere den Testzeitraum, indem dunext_billing_date aktualisierst:
Änderungen an Subscription-Tarifen
Tarifänderungen ermöglichen Upgrades oder Downgrades von Subscriptions, die Anpassung von Mengen oder die Migration zu anderen Produkten. Je nach ausgewähltem Proration-Modus kann eine Änderung eine sofortige Belastung auslösen, ein Guthaben erstellen oder keine Anpassung der Abrechnung vornehmen.Product Collections
Gruppiere verwandte Produkte in Collections, um nahtlose Upgrade-/Downgrade-Pfade im Customer Portal zu ermöglichen.
Proration-Modi
Wähle aus, wie Kunden bei Tarifänderungen abgerechnet werden:Kurzer Vergleich der vier Proration-Modi:
prorated_immediately
Berechnet einen anteiligen Betrag auf Grundlage der verbleibenden Zeit im aktuellen Abrechnungszyklus. Geeignet für eine faire Abrechnung, die ungenutzte Zeit berücksichtigt.
difference_immediately
Berechnet die Preisdifferenz sofort (Upgrade) oder fügt Guthaben für zukünftige Verlängerungen hinzu (Downgrade). Geeignet für einfache Upgrade-/Downgrade-Szenarien.
Guthaben aus Downgrades mit
difference_immediately ist auf die Subscription beschränkt und wird automatisch auf zukünftige Verlängerungen angewendet. Es unterscheidet sich von den Berechtigungen der Credit-Based Billing.difference_immediately downgradet, wird der ungenutzte Wert zu einem auf die Subscription beschränkten Guthaben, das zukünftige Verlängerungen automatisch verrechnet:
full_immediately
Berechnet sofort den vollständigen Betrag des neuen Tarifs und ignoriert die verbleibende Zeit. Geeignet zum Zurücksetzen von Abrechnungszyklen.
do_not_bill
Wechselt ohne Anpassung der Abrechnung zum neuen Tarif. Es gibt weder Proration-Belastungen noch Guthaben – der Kunde wechselt einfach zum neuen Tarif. Geeignet für Kulanzmigrationen, kostenlose Tarifwechsel oder Situationen, in denen du die Kostendifferenz übernehmen möchtest.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Szenario: Ein Kunde im Basic-Tarif (80/Monat) durch.Die nächste Verlängerung erfolgt am 15. Februar (16. Januar + 30 Tage): $80.00/Monat.
Example: Downgrade credit calculation
Example: Downgrade credit calculation
Szenario: Ein Kunde im Pro-Tarif (20/Monat).Das Guthaben von $60 wird automatisch auf zukünftige Verlängerungen angewendet:
- Verlängerung 1: 20 (Guthaben) = **40)
- Verlängerung 2: 20 (Guthaben) = **20)
- Verlängerung 3: 20 (Guthaben) = $0.00 (Guthaben aufgebraucht)
- Verlängerung 4: $20.00 (vollständiger Preis)
Mehr darüber, wie Guthaben verwaltet wird, erfährst du im Upgrade-&-Downgrade-Leitfaden.
Tarifänderungen mit Add-ons
Ändere Add-ons bei Tarifänderungen. Add-ons werden in die Proration-Berechnungen einbezogen:Tarifänderungen lösen sofortige Belastungen aus. Fehlgeschlagene Belastungen können die Subscription in den Status
on_hold versetzen. Verfolge Änderungen über subscription.plan_changed-Webhook-Events.Tarifänderungen anzeigen
Zeige vor der Bestätigung einer Tarifänderung die genaue Belastung und die daraus resultierende Subscription an:Preview Change Plan API
Zeige Tarifänderungen an, bevor du sie bestätigst.
Subscription-Status
Eine Subscription durchläuft während ihrer Laufzeit eine festgelegte Reihe von Status. Diese Tabelle dient als Referenz für jeden Status, seine Ursache und die Möglichkeit bzw. Vorgehensweise zur Wiederherstellung.Zustandsautomat
Status „On Hold“
Eine Subscription wechselt in den Statuson_hold, wenn:
- Eine Zahlung für die Verlängerung fehlschlägt (unzureichendes Guthaben, abgelaufene Karte usw.)
- Eine Belastung für eine Tarifänderung fehlschlägt
- Die Autorisierung der Zahlungsmethode fehlschlägt
Aus „On Hold“ reaktivieren
Um eine Subscription aus dem Statuson_hold zu reaktivieren, aktualisiere die Zahlungsmethode. Dadurch wird automatisch:
- eine Belastung für die offenen Beträge erstellt
- eine Rechnung erzeugt
- die Zahlung über die neue Zahlungsmethode verarbeitet
- die Subscription nach erfolgreicher Zahlung in den Status
activereaktiviert
Nach der erfolgreichen Aktualisierung der Zahlungsmethode für eine Subscription im Status
on_hold erhältst du die Webhook-Events payment.succeeded gefolgt von subscription.active.Webhook-Events nach Übergang
Jeder Übergang erzeugt einen Webhook, sodass du die Logik für Berechtigungen ohne Polling steuern kannst:Subscription Webhook Payloads
Sieh dir das vollständige Payload-Schema für Subscription-Lifecycle-Events an.
API-Verwaltung
Create subscriptions
Create subscriptions
Verwende
POST /subscriptions, um Subscriptions programmgesteuert aus Produkten mit optionalen Testzeiträumen und Add-ons zu erstellen.API Reference
Sieh dir die API zum Erstellen einer Subscription an.
Update subscriptions
Update subscriptions
Verwende
PATCH /subscriptions/{id}, um Mengen zu aktualisieren, die Kündigung zum nächsten Abrechnungsdatum festzulegen oder Metadaten zu ändern.API Reference
Erfahre, wie du Subscription-Details aktualisierst.
Change plans (proration)
Change plans (proration)
Ändere das aktive Produkt und die Mengen mit Proration-Steuerungen.
API Reference
Sieh dir die Optionen für Tarifänderungen an.
On‑demand charges
On‑demand charges
Bei On-Demand-Subscriptions kannst du bestimmte Beträge nach Bedarf berechnen.
API Reference
Eine On-Demand-Subscription belasten.
List and retrieve
List and retrieve
Verwende
GET /subscriptions, um alle Subscriptions aufzulisten, und GET /subscriptions/{id}, um eine einzelne abzurufen.API Reference
Sieh dir die APIs zum Auflisten und Abrufen an.
Usage history
Usage history
Rufe erfasste Nutzung für nutzungsbasierte oder hybride Preismodelle ab.
API Reference
Siehe die API für die Nutzungshistorie.
Update payment method
Update payment method
Aktualisiere die Zahlungsmethode für eine Subscription. Bei aktiven Subscriptions wird die Zahlungsmethode für zukünftige Verlängerungen aktualisiert. Bei Subscriptions im Status
on_hold wird die Subscription reaktiviert, indem eine Belastung für die offenen Beträge erstellt wird.Beim Erstellen eines neuen Links für Zahlungsmethoden (dem Anfragetyp New) kannst du allowed_payment_method_types übergeben, um einzuschränken, welche Zahlungsmethoden der Kunde auf dieser Seite sieht. Kunden sehen niemals eine Methode, die nicht in der Liste enthalten ist. Die Aufnahme einer Methode garantiert jedoch nicht, dass sie angezeigt wird, da ihre Verfügbarkeit weiterhin von Faktoren wie dem Standort des Kunden und deinen Unternehmenseinstellungen abhängt.API Reference
Erfahre, wie du Zahlungsmethoden aktualisierst und Subscriptions reaktivierst.
Häufige Anwendungsfälle
- SaaS und APIs: Gestufter Zugriff mit Add-ons für Sitze oder Nutzung
- Inhalte und Medien: Monatlicher Zugriff mit einführenden Testzeiträumen
- B2B-Supporttarife: Jahresverträge mit Premium-Support-Add-ons
- Tools und Plugins: Lizenzschlüssel und versionierte Releases
Integrationsbeispiele
Checkout-Sessions (Subscriptions)
Füge beim Erstellen von Checkout-Sessions dein Subscription-Produkt und optionale Add-ons hinzu:Tarifänderungen mit Proration
Upgrade oder downgrade eine Subscription und steuere das Proration-Verhalten:Kündigung zum nächsten Abrechnungsdatum
Plane eine Kündigung, die am Ende des aktuellen Abrechnungszeitraums wirksam wird:Subscription-Zeitraum verlängern
Verlängere die Laufzeit einer Subscription, indem du einen neuensubscription_period_count und subscription_period_interval an PATCH /subscriptions/{id} übergibst. Das Ablaufdatum der Subscription wird anhand der neuen Anzahl und des neuen Intervalls neu berechnet – zum Beispiel, um einem Kunden zusätzliche Zeit in seinem aktuellen Tarif zu gewähren:
Der Zeitraum einer Subscription kann nur verlängert, niemals verkürzt werden.
On-Demand-Subscriptions
Erstelle eine On-Demand-Subscription und berechne Gebühren später nach Bedarf:Zahlungsmethode für aktive Subscription aktualisieren
Aktualisiere die Zahlungsmethode für eine aktive Subscription:Subscription aus „on_hold“ reaktivieren
Reaktiviere eine Subscription, die aufgrund einer fehlgeschlagenen Zahlung pausiert wurde:Subscriptions mit RBI-konformen Mandaten
UPI- und indische Karten-Subscriptions unterliegen den Bestimmungen der RBI (Reserve Bank of India) und bestimmten Mandatsanforderungen:Mandatslimits
Typ und Betrag des Mandats hängen von der wiederkehrenden Belastung deiner Subscription ab:- Belastungen unterhalb des Mandatsgrenzwerts (standardmäßig ₹15,000): Wir erstellen ein On-Demand-Mandat über den Grenzwert. Der Subscription-Betrag wird entsprechend der Subscription-Frequenz regelmäßig bis zur Höhe des Mandatslimits berechnet.
- Belastungen in Höhe des Mandatsgrenzwerts oder darüber: Wir erstellen ein Subscription-Mandat (oder On-Demand-Mandat) über den genauen Subscription-Betrag.
mandate_min_amount_inr_paise (INR-Paise) konfiguriert werden. Der bei der Bank registrierte Betrag ist max(mandate_floor, billing_amount) – dadurch wird der Grenzwert effektiv zur kundenseitigen Autorisierungsobergrenze, sobald die Abrechnung niedriger ist.
Ausführliche Informationen zu RBI-konformen Mandaten und dem konfigurierbaren Mandatsgrenzwert für indische Zahlungsmethoden findest du auf der Seite India Payment Methods.
Hinweise zu Upgrades und Downgrades
Wichtig: Berücksichtige bei Upgrades oder Downgrades von Subscriptions sorgfältig die Mandatslimits:- Wenn ein Upgrade oder Downgrade zu einem Belastungsbetrag von mehr als Rs 15,000 führt und das bestehende On-Demand-Zahlungslimit überschreitet, kann die Transaktionsbelastung fehlschlagen.
- In solchen Fällen muss der Kunde möglicherweise seine Zahlungsmethode aktualisieren oder die Subscription erneut ändern, um ein neues Mandat mit dem korrekten Limit einzurichten.
Autorisierung hoher Belastungen
Für Subscription-Belastungen von Rs 15,000 oder mehr gilt:- Die Bank fordert den Kunden zur Autorisierung der Transaktion auf.
- Wenn der Kunde die Transaktion nicht autorisiert, schlägt sie fehl und die Subscription wird pausiert.
48-stündige Verarbeitungsverzögerung
Verarbeitungszeitplan: Wiederkehrende Belastungen bei indischen Karten und UPI-Subscriptions folgen einem besonderen Verarbeitungsmuster:- Belastungen werden am geplanten Datum entsprechend der Subscription-Frequenz initiiert.
- Die tatsächliche Abbuchung vom Konto des Kunden erfolgt erst 48 Stunden nach Initiierung der Zahlung.
- Dieses 48-Stunden-Fenster kann sich je nach Antworten der Bank-API um weitere 2–3 Stunden verlängern.
Zeitraum für die Mandatskündigung
Während des 48-stündigen Verarbeitungsfensters gilt:- Kunden können das Mandat über ihre Banking-Apps kündigen.
- Wenn ein Kunde das Mandat in diesem Zeitraum kündigt, bleibt die Subscription aktiv (dies ist ein Sonderfall, der nur bei indischen Karten- und UPI-AutoPay-Subscriptions auftritt).
- Die tatsächliche Abbuchung kann jedoch fehlschlagen. In diesem Fall versetzen wir die Subscription in den Status On Hold.
- Die Aktivierung von Vorteilen bis zur Zahlungsbestätigung zu verzögern
- Kulanzzeiträume oder vorübergehenden Zugriff zu implementieren
- den Subscription-Status auf Mandatskündigungen zu überwachen
- pausierte Subscription-Status in der Anwendungslogik zu behandeln
Best Practices
- Beginne mit klaren Tarifstufen: 2–3 Tarife mit deutlichen Unterschieden
- Kommuniziere die Preisgestaltung: Zeige Summen, Proration und die nächste Verlängerung
- Setze Testzeiträume gezielt ein: Konvertiere mit Onboarding, nicht nur mit Zeit
- Nutze Add-ons: Halte Basistarife einfach und biete zusätzliche Funktionen als Upsell an
- Teste Änderungen: Validiere Tarifänderungen und Proration im Testmodus
Subscriptions sind eine flexible Grundlage für wiederkehrende Umsätze. Beginne einfach, teste gründlich und passe dein Angebot anhand von Kennzahlen zu Akzeptanz, Abwanderung und Expansion iterativ an.