Zum Hauptinhalt springen
Abonnements ermöglichen es Ihnen, fortlaufenden Zugang mit automatischen Erneuerungen zu verkaufen. Verwenden Sie flexible Abrechnungszyklen, kostenlose Testversionen, Planänderungen und Zusatzleistungen, um die Preise für jeden Kunden anzupassen.

Was sind Abonnements?

Abonnements sind wiederkehrende Produkte, die Kunden nach einem Zeitplan erwerben. Sie sind ideal für:
  • SaaS-Lizenzen: Apps, APIs oder Plattformzugang
  • Mitgliedschaften: Gemeinschaften, Programme oder Clubs
  • Digitale Inhalte: Kurse, Medien oder Premium-Inhalte
  • Supportpläne: SLAs, Erfolgspakete oder Wartung

Wichtige Vorteile

  • Vorhersehbare Einnahmen: Wiederkehrende Abrechnung mit automatischen Erneuerungen
  • Flexible Zyklen: Monatlich, jährlich, benutzerdefinierte Intervalle und Testversionen
  • Planagilität: Anteilige Abrechnung für Upgrades und Downgrades
  • Zusatzleistungen und Plätze: Fügen Sie optionale, quantifizierbare Upgrades hinzu
  • Nahtloser Checkout: Gehosteter Checkout und Kundenportal
  • Entwicklerfreundlich: Klare APIs für Erstellung, Änderungen und Nutzungstracking

Abonnements erstellen

Erstellen Sie Abonnementprodukte in Ihrem Dodo Payments-Dashboard und verkaufen Sie diese dann über den Checkout oder Ihre API. Die Trennung von Produkten und aktiven Abonnements ermöglicht es Ihnen, die Preisgestaltung zu versionieren, Zusatzleistungen anzuhängen und die Leistung unabhängig zu verfolgen.

Erstellung von Abonnementprodukten

Konfigurieren Sie die Felder im Dashboard, um zu definieren, wie Ihr Abonnement verkauft, erneuert und abgerechnet wird. Die folgenden Abschnitte entsprechen direkt dem, was Sie im Erstellungsformular sehen.

Produktdetails

  • Produktname (erforderlich): Der Anzeigename, der im Checkout, im Kundenportal und auf Rechnungen angezeigt wird.
  • Produktbeschreibung (erforderlich): Eine klare Wertangabe, die im Checkout und auf Rechnungen erscheint.
  • Produktbild (erforderlich): PNG/JPG/WebP bis zu 3 MB. Wird im Checkout und auf Rechnungen verwendet.
  • Marke: Verknüpfen Sie das Produkt mit einer bestimmten Marke für das Design und E-Mails.
  • Steuerkategorie (erforderlich): Wählen Sie die Kategorie (z. B. SaaS), um die Steuerregeln zu bestimmen.
Wählen Sie die genaueste Steuerkategorie, um die korrekte Steuererhebung pro Region sicherzustellen.

Preisgestaltung

  • Preistyp: Wählen Sie Abonnement (diese Anleitung). Alternativen sind Einmalzahlung und nutzungsbasierte Abrechnung.
  • Preis (erforderlich): Basiswiederkehrender Preis mit Währung.
  • Rabatt anwendbar (%): Optionaler prozentualer Rabatt, der auf den Basispreis angewendet wird; wird im Checkout und auf Rechnungen angezeigt.
  • Wiederholte Zahlung alle (erforderlich): Intervall für Erneuerungen, z. B. alle 1 Monat. Wählen Sie die Frequenz (Monate oder Jahre) und die Menge.
  • Abonnementzeitraum (erforderlich): Gesamtlaufzeit, für die das Abonnement aktiv bleibt (z. B. 10 Jahre). Nach Ablauf dieses Zeitraums enden die Erneuerungen, es sei denn, sie werden verlängert.
  • Testzeitraum Tage (erforderlich): Legen Sie die Testlänge in Tagen fest. Verwenden Sie 0, um Testversionen zu deaktivieren. Die erste Abbuchung erfolgt automatisch, wenn die Testversion endet.
  • Zusatzleistung auswählen: Fügen Sie bis zu 3 Zusatzleistungen hinzu, die Kunden zusammen mit dem Basisplan erwerben können.
Änderungen der Preisgestaltung bei einem aktiven Produkt wirken sich auf neue Käufe aus. Bestehende Abonnements folgen Ihren Planänderungs- und anteiligen Abrechnungseinstellungen.
Zusatzleistungen sind ideal für quantifizierbare Extras wie Plätze oder Speicherplatz. Sie können die erlaubten Mengen und das Verhalten der anteiligen Abrechnung steuern, wenn Kunden diese ändern.

Erweiterte Einstellungen

  • Steuerinklusivpreise: Preise anzeigen, die die anwendbaren Steuern enthalten. Die endgültige Steuerberechnung variiert weiterhin je nach Kundenstandort.
  • Lizenzschlüssel generieren: Geben Sie jedem Kunden nach dem Kauf einen eindeutigen Schlüssel. Siehe die Lizenzschlüssel-Anleitung.
  • Lieferung digitaler Produkte: Dateien oder Inhalte automatisch nach dem Kauf bereitstellen. Erfahren Sie mehr in Lieferung digitaler Produkte.
  • Metadaten: Fügen Sie benutzerdefinierte Schlüssel-Wert-Paare für interne Tagging- oder Kundenintegrationen hinzu. Siehe Metadaten.
Verwenden Sie Metadaten, um Identifikatoren aus Ihrem System (z. B. accountId) zu speichern, damit Sie Ereignisse und Rechnungen später abgleichen können.

Abonnement-Testversionen

Testversionen ermöglichen es Kunden, auf Abonnements ohne sofortige Zahlung zuzugreifen. Die erste Abbuchung erfolgt automatisch, wenn die Testversion endet.

Testversionen konfigurieren

Legen Sie Testzeitraum Tage im Abschnitt zur Preisgestaltung des Produkts fest (verwenden Sie 0, um zu deaktivieren). Sie können dies beim Erstellen von Abonnements überschreiben:
// Via subscription creation
const subscription = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_monthly',
  trial_period_days: 14  // Overrides product's trial period
});

// Via checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_monthly', quantity: 1 }],
  subscription_data: { trial_period_days: 14 }
});
Der trial_period_days Wert muss zwischen 0 und 10.000 Tagen liegen.

Teststatus erkennen

Derzeit gibt es kein direktes Feld zur Erkennung des Teststatus. Folgendes ist ein Workaround, der das Abfragen von Zahlungen erfordert, was ineffizient ist. Wir arbeiten an einer effizienteren Lösung.
Um festzustellen, ob sich ein Abonnement in der Testphase befindet, rufen Sie die Liste der Zahlungen für das Abonnement ab. Wenn es genau eine Zahlung mit dem Betrag 0 gibt, befindet sich das Abonnement in der Testphase:
const subscription = await client.subscriptions.retrieve('sub_123');
const payments = await client.payments.list({
  subscription_id: subscription.subscription_id
});

// Check if subscription is in trial
const isInTrial = payments.items.length === 1 && 
                  payments.items[0].total_amount === 0;

Testzeitraum aktualisieren

Erweitern Sie die Testversion, indem Sie next_billing_date aktualisieren:
await client.subscriptions.update('sub_123', {
  next_billing_date: '2025-02-15T00:00:00Z'  // New trial end date
});
Sie können next_billing_date nicht auf einen vergangenen Zeitpunkt setzen. Das Datum muss in der Zukunft liegen.

Änderungen an Abonnementplänen

Änderungen an Plänen ermöglichen es Ihnen, Abonnements zu upgraden oder downgraden, Mengen anzupassen oder auf andere Produkte zu migrieren. Jede Änderung löst eine sofortige Abbuchung basierend auf dem von Ihnen ausgewählten anteiligen Abrechnungsmodus aus.

Anteilsabrechnungsmodi

Wählen Sie, wie Kunden bei Planänderungen abgerechnet werden:

prorated_immediately

Berechnet den anteiligen Betrag basierend auf der verbleibenden Zeit im aktuellen Abrechnungszyklus. Am besten für faire Abrechnung, die ungenutzte Zeit berücksichtigt.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

difference_immediately

Berechnet den Preisunterschied sofort (Upgrade) oder fügt Guthaben für zukünftige Erneuerungen hinzu (Downgrade). Am besten für einfache Upgrade/Downgrade-Szenarien.
// Upgrade: charges $50 (difference between $30 and $80)
// Downgrade: credits remaining value, auto-applied to renewals
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});
Guthaben aus Downgrades mit difference_immediately sind abonnementspezifisch und werden automatisch auf zukünftige Erneuerungen angewendet. Sie unterscheiden sich von Kundenkrediten.

full_immediately

Berechnet den vollen Betrag des neuen Plans sofort, ignoriert die verbleibende Zeit. Am besten zum Zurücksetzen von Abrechnungszyklen.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_monthly',
  quantity: 1,
  proration_billing_mode: 'full_immediately'
});

Pläne mit Zusatzleistungen ändern

Ändern Sie Zusatzleistungen, wenn Sie Pläne ändern. Zusatzleistungen sind in die Berechnungen der anteiligen Abrechnung einbezogen:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [{ addon_id: 'addon_extra_seats', quantity: 2 }]  // Add add-ons
  // addons: []  // Empty array removes all existing add-ons
});
Änderungen an Plänen lösen sofortige Abbuchungen aus. Fehlgeschlagene Abbuchungen können das Abonnement in den on_hold Status versetzen. Verfolgen Sie Änderungen über subscription.plan_changed Webhook-Ereignisse.

Planänderungen in der Vorschau anzeigen

Bevor Sie sich für eine Planänderung entscheiden, zeigen Sie die genaue Abbuchung und das resultierende Abonnement in der Vorschau an:
const preview = await client.subscriptions.previewChangePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

// Show customer the charge before confirming
console.log('You will be charged:', preview.immediate_charge.summary);

Vorschau Planänderung API

Vorschau auf Planänderungen, bevor Sie sich dazu verpflichten.

Abonnementzustände

Abonnements können während ihres Lebenszyklus in verschiedenen Zuständen sein:
  • active: Abonnement ist aktiv und wird automatisch erneuert
  • on_hold: Abonnement ist aufgrund fehlgeschlagener Zahlung pausiert. Aktualisierung der Zahlungsmethode erforderlich, um es wieder zu aktivieren
  • cancelled: Abonnement ist storniert und wird nicht erneuert
  • expired: Abonnement hat sein Enddatum erreicht
  • pending: Abonnement wird erstellt oder verarbeitet

Auf Halt Zustand

Ein Abonnement tritt in den on_hold Zustand ein, wenn:
  • Eine Erneuerungszahlung fehlschlägt (unzureichende Mittel, abgelaufene Karte usw.)
  • Eine Planänderungsgebühr fehlschlägt
  • Die Autorisierung der Zahlungsmethode fehlschlägt
Wenn sich ein Abonnement im on_hold Zustand befindet, wird es nicht automatisch erneuert. Sie müssen die Zahlungsmethode aktualisieren, um das Abonnement wieder zu aktivieren.

Reaktivierung aus dem Auf Halt Zustand

Um ein Abonnement aus dem on_hold Zustand zu reaktivieren, aktualisieren Sie die Zahlungsmethode. Dies führt automatisch zu:
  1. Erstellung einer Abbuchung für ausstehende Beträge
  2. Erstellung einer Rechnung
  3. Verarbeitung der Zahlung mit der neuen Zahlungsmethode
  4. Reaktivierung des Abonnements in den active Zustand nach erfolgreicher Zahlung
// Reactivate subscription from on_hold
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// For on_hold subscriptions, a charge is automatically created
if (response.payment_id) {
  console.log('Charge created:', response.payment_id);
  // Redirect customer to response.payment_link to complete payment
  // Monitor webhooks for payment.succeeded and subscription.active
}
Nach erfolgreicher Aktualisierung der Zahlungsmethode für ein on_hold Abonnement erhalten Sie payment.succeeded gefolgt von subscription.active Webhook-Ereignissen.

API-Management

Verwenden Sie POST /subscriptions, um Abonnements programmgesteuert aus Produkten zu erstellen, mit optionalen Testversionen und Zusatzleistungen.

API-Referenz

API zum Erstellen von Abonnements anzeigen.
Verwenden Sie PATCH /subscriptions/{id}, um Mengen zu aktualisieren, am Ende der Periode zu stornieren oder Metadaten zu ändern.

API-Referenz

Erfahren Sie, wie Sie Abonnementdetails aktualisieren.
Ändern Sie das aktive Produkt und die Mengen mit anteiligen Abrechnungssteuerungen.

API-Referenz

Überprüfen Sie die Optionen zur Planänderung.
Für bedarfsabhängige Abonnements, berechnen Sie spezifische Beträge auf Anfrage.

API-Referenz

Berechnen Sie ein bedarfsabhängiges Abonnement.
Verwenden Sie GET /subscriptions, um alle Abonnements aufzulisten und GET /subscriptions/{id}, um eines abzurufen.

API-Referenz

Durchsuchen Sie die APIs zum Auflisten und Abrufen.
Rufen Sie die aufgezeichnete Nutzung für gemessene oder hybride Preismodelle ab.

API-Referenz

Siehe API für den Nutzungsverlauf.
Aktualisieren Sie die Zahlungsmethode für ein Abonnement. Für aktive Abonnements aktualisiert dies die Zahlungsmethode für zukünftige Erneuerungen. Für Abonnements im on_hold Zustand reaktiviert dies das Abonnement, indem eine Abbuchung für ausstehende Beträge erstellt wird.

API-Referenz

Erfahren Sie, wie Sie Zahlungsmethoden aktualisieren und Abonnements reaktivieren.

Häufige Anwendungsfälle

  • SaaS und APIs: Gestaffelter Zugang mit Zusatzleistungen für Plätze oder Nutzung
  • Inhalte und Medien: Monatlicher Zugang mit Einführungstestversionen
  • B2B-Supportpläne: Jährliche Verträge mit Premium-Support-Zusatzleistungen
  • Tools und Plugins: Lizenzschlüssel und versionierte Veröffentlichungen

Integrationsbeispiele

Checkout-Sitzungen (Abonnements)

Beim Erstellen von Checkout-Sitzungen fügen Sie Ihr Abonnementprodukt und optionale Zusatzleistungen hinzu:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_subscription',
      quantity: 1
    }
  ]
});

Planänderungen mit anteiliger Abrechnung

Upgrade oder Downgrade eines Abonnements und Steuerung des anteiligen Abrechnungsverhaltens:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});

Am Ende der Periode stornieren

Planen Sie eine Stornierung, ohne den Zugang sofort zu beenden:
await client.subscriptions.update('sub_123', {
  cancel_at_period_end: true
});

Bedarfsabhängige Abonnements

Erstellen Sie ein bedarfsabhängiges Abonnement und berechnen Sie später nach Bedarf:
const onDemand = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_on_demand',
  on_demand: true
});

await client.subscriptions.createCharge(onDemand.id, {
  amount: 4900,
  currency: 'USD',
  description: 'Extra usage for September'
});

Zahlungsmethode für aktives Abonnement aktualisieren

Aktualisieren Sie die Zahlungsmethode für ein aktives Abonnement:
// Update with new payment method
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// Or use existing payment method
await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'existing',
  payment_method_id: 'pm_abc123'
});

Abonnement aus dem Auf Halt Zustand reaktivieren

Reaktivieren Sie ein Abonnement, das aufgrund fehlgeschlagener Zahlung auf Halt gesetzt wurde:
// Update payment method - automatically creates charge for remaining dues
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

if (response.payment_id) {
  // Charge created for remaining dues
  // Redirect customer to response.payment_link
  // Monitor webhooks: payment.succeeded → subscription.active
}

Abonnements mit RBI-konformen Mandaten

UPI- und indische Kartenabonnements unterliegen den Vorschriften der RBI (Reserve Bank of India) mit spezifischen Anforderungen an Mandate:

Mandatsgrenzen

Der Mandatstyp und der Betrag hängen von der wiederkehrenden Gebühr Ihres Abonnements ab:
  • Gebühren unter ₹15.000: Wir erstellen ein bedarfsabhängiges Mandat für ₹15.000 INR. Der Abonnementbetrag wird periodisch gemäß Ihrer Abonnementfrequenz bis zur Mandatsgrenze berechnet.
  • Gebühren von ₹15.000 oder mehr: Wir erstellen ein Abonnementmandat (oder bedarfsabhängiges Mandat) für den genauen Abonnementbetrag.

Überlegungen zu Upgrade und Downgrade

Wichtig: Bei Upgrades oder Downgrades von Abonnements sollten Sie die Mandatsgrenzen sorgfältig berücksichtigen:
  • Wenn ein Upgrade/Downgrade zu einem Betrag führt, der ₹15.000 übersteigt und über die bestehende bedarfsabhängige Zahlungsgrenze hinausgeht, kann die Transaktionsgebühr fehlschlagen.
  • In solchen Fällen muss der Kunde möglicherweise seine Zahlungsmethode aktualisieren oder das Abonnement erneut ändern, um ein neues Mandat mit der richtigen Grenze zu erstellen.

Autorisierung für hochpreisige Gebühren

Für Abonnementgebühren von ₹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 Halt gesetzt.

48-Stunden-Verzögerung bei der Verarbeitung

Verarbeitungszeitrahmen: Wiederkehrende Gebühren auf indischen Karten und UPI-Abonnements folgen einem einzigartigen Verarbeitungsmuster:
  • Gebühren werden initiiert am geplanten Datum gemäß Ihrer Abonnementfrequenz.
  • Der tatsächliche Abzug vom Konto des Kunden erfolgt erst nach 48 Stunden nach der Zahlungsinitiierung.
  • Dieses 48-Stunden-Fenster kann sich um bis zu 2-3 zusätzliche Stunden je nach Bank-API-Antworten verlängern.

Stornierungsfenster für Mandate

Während des 48-Stunden-Verarbeitungsfensters:
  • Kunden können das Mandat über ihre Banking-Apps stornieren.
  • Wenn ein Kunde das Mandat während dieses Zeitraums storniert, bleibt das Abonnement aktiv (dies ist ein Randfall, der spezifisch für indische Karten und UPI-AutoPay-Abonnements ist).
  • Der tatsächliche Abzug kann jedoch fehlschlagen, und in diesem Fall setzen wir das Abonnement auf Halt.
Randfallbehandlung: Wenn Sie Kunden sofort nach der Zahlungsinitiierung Vorteile, Guthaben oder Abonnementnutzung gewähren, müssen Sie dieses 48-Stunden-Fenster in Ihrer Anwendung angemessen behandeln. Berücksichtigen Sie:
  • Aktivierung von Vorteilen bis zur Zahlungsbestätigung verzögern
  • Implementierung von Karenzzeiten oder vorübergehendem Zugang
  • Überwachung des Abonnementstatus auf Mandatsstornierungen
  • Behandlung von Abonnement-Halt-Zuständen in Ihrer Anwendungslogik
Überwachen Sie Abonnement-Webhooks, um Änderungen des Zahlungsstatus zu verfolgen und Randfälle zu behandeln, in denen Mandate während des 48-Stunden-Fensters storniert werden.

Best Practices

  • Beginnen Sie mit klaren Stufen: 2–3 Pläne mit offensichtlichen Unterschieden
  • Kommunizieren Sie die Preisgestaltung: Zeigen Sie Gesamtsummen, anteilige Abrechnung und nächste Erneuerung an
  • Nutzen Sie Testversionen durchdacht: Konvertieren Sie mit Onboarding, nicht nur mit Zeit
  • Nutzen Sie Zusatzleistungen: Halten Sie Basispläne einfach und verkaufen Sie Extras
  • Testen Sie Änderungen: Validieren Sie Planänderungen und anteilige Abrechnung im Testmodus
Abonnements sind eine flexible Grundlage für wiederkehrende Einnahmen. Beginnen Sie einfach, testen Sie gründlich und iterieren Sie basierend auf Annahme-, Abwanderungs- und Expansionsmetriken.