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
- Pricing Type: Choose Subscription (this guide). Alternatives are Single Payment and Usage Based Billing.
- Price (required): Base recurring price with currency.
- Discount Applicable (%): Optional percentage discount applied to the base price; reflected in checkout and invoices.
- Repeat payment every (required): Interval for renewals, e.g., every 1 Month. Select the cadence (months or years) and quantity.
- Subscription Period (required): Total term for which the subscription remains active (e.g., 10 Years). After this period ends, renewals stop unless extended.
- Trial Period Days (required): Set trial length in days. Use 0 to disable trials. The first charge occurs automatically when the trial ends.
- Select add‑on: Attach up to 10 add‑ons that customers can purchase alongside the base plan.
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
Trials let customers access subscriptions without immediate payment. The first charge occurs automatically when the trial ends.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Detecting Trial Status
To determine if a subscription is in trial, retrieve the list of payments for the subscription. If there is exactly one payment with amount 0, the subscription is in trial period:Updating Trial Period
Extend the trial by updatingnext_billing_date:
Subscription Plan Changes
Plan changes let you upgrade or downgrade subscriptions, adjust quantities, or migrate to different products. Depending on the proration mode you select, a change may trigger an immediate charge, create credit, or apply no billing adjustment.Product Collections
Group related products into collections to enable seamless upgrade/downgrade paths in the Customer Portal.
Proration Modes
Choose how customers are billed when changing plans:Quick comparison of the four proration modes:
prorated_immediately | difference_immediately | full_immediately | do_not_bill | |
|---|---|---|---|---|
| Upgrade | Anteile des Restgeldes für verbleibende Tage | Preisunterschied vollständig berechnet | Voller Preis des neuen Plans berechnet | Keine Berechnung — sofort wechseln |
| Downgrade | Anteile als Gutschrift für verbleibende Tage | Preisunterschied vollständig als Gutschrift | Keine Gutschrift, voller Preis berechnet | Keine Gutschrift — sofort wechseln |
| Abrechnungszyklus | Wird auf heute zurückgesetzt | Wird auf heute zurückgesetzt | Wird auf heute zurückgesetzt | Bleibt gleich |
| Am besten für | Faire zeitbasierte Abrechnung | Einfache Tarifänderungen | Abrechnungszyklus-Resets | Kostenlose Migrationen oder Kulanzwechsel |
prorated_immediately
Charges prorated amount based on remaining time in the current billing cycle. Best for fair billing that accounts for unused time.
difference_immediately
Charges the price difference immediately (upgrade) or adds credit for future renewals (downgrade). Best for simple upgrade/downgrade scenarios.
Credits from downgrades using
difference_immediately are subscription-scoped and auto-applied to future renewals. They’re distinct from Credit-Based Billing entitlements.difference_immediately, the unused value becomes a subscription-scoped credit that automatically offsets future renewals:
full_immediately
Charges full new plan amount immediately, ignoring remaining time. Best for resetting billing cycles.
do_not_bill
Switches to the new plan without any billing adjustment. No proration charges, no credits — the customer simply moves to the new plan. Best for courtesy migrations, free plan switches, or scenarios where you want to absorb the cost difference.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Scenario: Customer on Basic (80/month) on day 16 of a 30-day cycle using Nächste Verlängerung am 15. Februar (16. Januar + 30 Tage): 80,00 $/Monat.
prorated_immediately.Example: Downgrade credit calculation
Example: Downgrade credit calculation
Scenario: Customer on Pro (20/month) using The $60 credit auto-applies to future renewals:
difference_immediately.- Renewal 1: 20 (credit) = **40 credit remaining)
- Renewal 2: 20 (credit) = **20 credit remaining)
- Renewal 3: 20 (credit) = $0.00 (credit exhausted)
- Renewal 4: $20.00 (full price)
Learn more about how credits are managed in the Upgrade & Downgrade Guide.
Changing Plans with Add-ons
Modify add-ons when changing plans. Add-ons are included in proration calculations:Plan changes trigger immediate charges. Failed charges may move the subscription to
on_hold status. Track changes via subscription.plan_changed webhook events.Previewing Plan Changes
Before committing to a plan change, preview the exact charge and resulting subscription:Preview Change Plan API
Preview plan changes before committing to them.
Subscription States
Ein Abonnement bewegt sich im Laufe seines Lebens durch eine definierte Reihe von Status. Diese Tabelle dient als Referenz für jeden Status, was ihn verursacht und wie (oder ob) Sie ihn wiederherstellen können.| Status | Was es bedeutet | Wiederherstellbar? | Wiederherstellungspfad / nächster Schritt |
|---|---|---|---|
pending | Das Abonnement wird erstellt oder verarbeitet | — | Warten auf subscription.active (oder subscription.failed) |
active | Das Abonnement ist aktiv und wird automatisch verlängert | — | Keine Aktion erforderlich |
on_hold | Eine Verlängerungszahlung (oder Planänderung) ist fehlgeschlagen; das Abonnement ist pausiert | Ja | Aktualisieren Sie die Zahlungsmethode, um die Reaktivierung automatisch über Payment Retries und Dunning oder manuell über die Update Payment Method API vorzunehmen. |
cancelled | Das Abonnement wurde gekündigt und wird nicht erneuert | Nur Neubestellung | Der Kunde muss ein neues Abonnement starten; Dunning kann eine Neubestellung anregen |
failed | Abonnement Erstellung ist fehlgeschlagen (das erste Mandat oder die Zahlung war nicht erfolgreich) | Nein — terminal | Der Kunde muss ein neues Abonnement mit einer funktionierenden Zahlungsmethode erstellen |
expired | Das Abonnement hat das Ende seines Zeitraums erreicht | — | Der Kunde muss ein neues Abonnement starten, falls gewünscht |
Zustandsdiagramm
On-Hold-Zustand
Ein Abonnement wechselt in den Zustandon_hold, wenn:
- Eine Verlängerungszahlung fehlschlägt (unzureichende Mittel, abgelaufene Karte usw.)
- Eine Planänderungsgebühr fehlschlägt
- Die Autorisierung der Zahlungsmethode fehlschlägt
Reaktivieren aus dem On-Hold-Zustand
Um ein Abonnement aus dem Zustandon_hold zu reaktivieren, aktualisieren Sie die Zahlungsmethode. Dies führt automatisch zu:
- Erstellung einer Gebühr für ausstehende Beträge
- Erstellung einer Rechnung
- Bearbeitung der Zahlung mit der neuen Zahlungsmethode
- Reaktivierung des Abonnements in den Zustand
activenach erfolgreicher Zahlung
Nach erfolgreicher Aktualisierung der Zahlungsmethode für ein Abonnement im Zustand
on_hold erhalten Sie payment.succeeded gefolgt von subscription.active Webhook-Ereignissen.Webhook-Ereignisse nach Transition
Jeder Übergang löst einen Webhook aus, damit Sie Berechtigungslogik ohne Abfragen steuern können:| Transition | Ereignis |
|---|---|
| Abonnement aktiviert | subscription.active |
| Verlängerung erfolgreich | subscription.renewed |
| Verlängerung fehlgeschlagen → pausiert | subscription.on_hold |
| Erstellung fehlgeschlagen | subscription.failed |
| Plan aufgewertet/abgestuft | subscription.plan_changed |
| Gekündigt | subscription.cancelled |
| Zeitraum beendet | subscription.expired |
| Jegliche Feldänderungen | subscription.updated |
Subscription Webhook Payloads
Sehen Sie das vollständige Payload-Schema für Abonnement-Lebenszyklusereignisse ein.
API-Verwaltung
Create subscriptions
Create subscriptions
Verwenden Sie
POST /subscriptions, um Abonnements programmgesteuert aus Produkten zu erstellen, mit optionalen Testversionen und Add-ons.API Reference
Siehe die API zur Erstellung von Abonnements.
Update subscriptions
Update subscriptions
Verwenden Sie
PATCH /subscriptions/{id}, um Mengen zu aktualisieren, zum nächsten Abrechnungsdatum zu kündigen oder Metadaten zu ändern.API Reference
Erfahren Sie, wie Sie Abonnementdetails aktualisieren können.
Change plans (proration)
Change plans (proration)
Ändern Sie das aktive Produkt und die Mengen mit Prorationskontrollen.
API Reference
Überprüfen Sie die Optionen zur Planänderung.
On‑demand charges
On‑demand charges
Für bedarfsgerechte Abonnements, berechnen Sie spezifische Beträge auf Abruf.
API Reference
Belasten Sie ein bedarfsgerechtes Abonnement.
List and retrieve
List and retrieve
Verwenden Sie
GET /subscriptions, um alle Abonnements aufzulisten, und GET /subscriptions/{id}, um ein einzelnes abzurufen.API Reference
Durchsuchen Sie die APIs zum Auflisten und Abrufen.
Usage history
Usage history
Abruf der aufgezeichneten Nutzung für gemessene oder hybride Preismodelle.
API Reference
Siehe die Nutzungsverlauf-API.
Update payment method
Update payment method
Aktualisieren Sie die Zahlungsmethode für ein Abonnement. Für aktive Abonnements wird die Zahlungsmethode für zukünftige Verlängerungen aktualisiert. Für Abonnements im Zustand
on_hold reaktiviert dies das Abonnement, indem eine Gebühr für ausstehende Beträge erstellt wird.Beim Generieren eines neuen Links zur Zahlungsmethode (dem Anforderungstyp New) können Sie allowed_payment_method_types übergeben, um einzuschränken, welche Zahlungsmethoden der Kunde auf dieser Seite sieht. Kunden werden niemals eine Methode sehen, die nicht in der Liste enthalten ist, obwohl das Hinzufügen einer Methode nicht garantiert, dass sie angezeigt wird (die Verfügbarkeit hängt immer noch von Faktoren wie dem Standort des Kunden und Ihren Geschäftseinstellungen ab).API Reference
Erfahren Sie, wie Sie Zahlungsmethoden aktualisieren und Abonnements reaktivieren können.
Häufige Anwendungsfälle
- SaaS und APIs: Stufenweiser Zugriff mit Zusatzoptionen für Plätze oder Nutzung
- Inhalt und Medien: Monatlicher Zugriff mit Einführungstests
- B2B-Supportpläne: Jahresverträge mit Premium-Support-Zusätzen
- Tools und Plugins: Lizenzschlüssel und versionierte Releases
Integrationsbeispiele
Checkout-Sessions (Abonnements)
Wenn Sie Checkout-Sessions erstellen, fügen Sie Ihr Abonnementprodukt und optionale Add-ons hinzu:Planänderungen mit Proratio
Ein Abonnement aufwerten oder abwerten und das Prorationsverhalten steuern:Kündigung mit dem nächsten Abrechnungstermin
Planen Sie eine Kündigung, die am Ende des aktuellen Abrechnungszeitraums wirksam wird:On-Demand-Abonnements
Erstellen Sie ein On-Demand-Abonnement und berechnen Sie später bei Bedarf:Zahlungsmethode für aktives Abonnement aktualisieren
Aktualisieren Sie die Zahlungsmethode für ein aktives Abonnement:Reaktivieren des Abonnements aus der on-hold
Reaktivieren Sie ein Abonnement, das aufgrund einer fehlgeschlagenen Zahlung in den On-Hold-Zustand versetzt wurde:Abonnements mit RBI-konformen Mandaten
UPI- und indische Kartenabonnements unterliegen den Vorschriften der RBI (Reserve Bank of India) mit spezifischen Mandatsanforderungen:Mandatsgrenzen
Der Mandatstyp und der Betrag hängen von der wiederkehrenden Belastung Ihres Abonnements ab:- Belastungen unterhalb der Mandatsuntergrenze (Standard ₹15,000): Wir erstellen ein On-Demand-Mandat für den Mindestbetrag. Der Abonnementbetrag wird je nach Abonnementhäufigkeit periodisch bis zur Mandatsgrenze berechnet.
- Belastungen bei oder über der Mandatsuntergrenze: Wir erstellen ein Abonnementmandat (oder On-Demand-Mandat) für den genauen Abonnementbetrag.
mandate_min_amount_inr_paise (INR paise) konfigurierbar. Der bei der Bank registrierte Betrag ist max(mandate_floor, billing_amount) — daher wird die Untergrenze effektiv zur kundenorientierten Autorisierungsobergrenze, wann immer die Abrechnung niedriger ist.
Detaillierte Informationen über RBI-konforme Mandate und die konfigurierbare Mandatsuntergrenze für indische Zahlungsmethoden finden Sie auf der Seite Indische Zahlungsmethoden.
Überlegungen zu Upgrades und Downgrades
Wichtig: Wenn Sie Abonnements upgraden oder downgraden, berücksichtigen Sie sorgfältig die Mandatsgrenzen:- Wenn ein Upgrade/Downgrade zu einem Belastungsbetrag führt, der Rs 15.000 übersteigt und das bestehende On-Demand-Zahlungslimit überschreitet, kann die Transaktionsbelastung fehlschlagen.
- In solchen Fällen muss der Kunde möglicherweise seine Zahlungsmethode aktualisieren oder das Abonnement erneut ändern, um ein neues Mandat mit dem richtigen Grenzwert zu erstellen.
Autorisierung für hochpreisige Belastungen
Für Abonnementbelastungen von Rs 15.000 oder mehr:- Der Kunde wird von seiner Bank aufgefordert, die Transaktion zu autorisieren.
- Wenn der Kunde die Transaktion nicht autorisiert, schlägt die Transaktion fehl und das Abonnement wird auf Eis gelegt.
48-Stunden-Verarbeitungsverzögerung
Bearbeitungszeitlinie: Wiederkehrende Belastungen auf indischen Karten und UPI-Abonnements folgen einem einzigartigen Verarbeitungsmuster:- Belastungen werden initiiert am geplanten Datum gemäß Ihrer Abonnementfrequenz.
- Der tatsächliche Abzug vom Konto des Kunden erfolgt erst nach 48 Stunden ab Zahlungsauslösung.
- Dieses 48-Stunden-Fenster kann sich je nach Bank-API-Antworten um 2-3 zusätzliche Stunden verlängern.
Widerrufsfenster des Mandats
Während des 48-Stunden-Verarbeitungsfensters:- Kunden können das Mandat über ihre Banking-Apps widerrufen.
- Wenn ein Kunde das Mandat während dieser Zeit widerruft, bleibt das Abonnement aktiv (dies ist ein Randfall, der speziell für indische Karten- und UPI-AutoPay-Abonnements gilt).
- Der tatsächliche Abzug kann jedoch fehlschlagen und in diesem Fall wird das Abonnement pausiert.
- Verzögerung der Nutzenaktivierung bis zur Zahlungsbestätigung
- Implementierung von Kulanzzeiträumen oder temporärem Zugriff
- Überwachung des Abonnementstatus auf Mandatswiderrufe
- Umgang mit pausierten Abonnementzuständen in Ihrer Anwendungslogik
Best Practices
- Starten Sie mit klaren Stufen: 2–3 Pläne mit offensichtlichen Unterschieden
- Preise kommunizieren: Zeigen Sie Gesamtsummen, Proration und die nächste Verlängerung an
- Tests sinnvoll einsetzen: Konvertieren Sie mit Onboarding, nicht nur durch Zeit
- Add-Ons nutzen: Halten Sie die Basispläne einfach und verkaufen Sie Zusätze
- Änderungen testen: Validieren Sie Planänderungen und Proration im Testmodus
Abonnements sind eine flexible Grundlage für wiederkehrende Einnahmen. Starten Sie einfach, testen Sie gründlich und iterieren Sie basierend auf Annahme, Abwanderung und Expansionsmetriken.