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

  • Preismodell: Wählen Sie Abonnement (diese Anleitung). Alternativen sind Einmalzahlung und nutzungsbasierte Abrechnung.
  • Preis (erforderlich): Basis wiederkehrender Preis mit Währung.
  • Anwendbarer Rabatt (%): Optionaler prozentualer Rabatt, der auf den Basispreis angewendet wird; wird im Checkout und auf Rechnungen angezeigt.
  • Wiederholungszahlung 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 in Tagen (erforderlich): Legen Sie die Testdauer in Tagen fest. Verwenden Sie 0, um Tests zu deaktivieren. Die erste Abbuchung erfolgt automatisch, wenn der Testzeitraum endet.
  • Zusatzoption auswählen: Fügen Sie bis zu 10 Zusatzoptionen 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

Setze Testzeitraum Tage im Abschnitt zur Produktpreisgestaltung (verwende 0, um zu deaktivieren). Du kannst 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

Verlängere die Testphase, indem du next_billing_date aktualisierst:
await client.subscriptions.update('sub_123', {
  next_billing_date: '2025-02-15T00:00:00Z'  // New trial end date
});
Du kannst next_billing_date nicht auf eine vergangene Zeit 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.
Sie können Abonnementspläne ändern und das nächste Abrechnungsdatum direkt im Dodo Payments-Dashboard aktualisieren. Dies bietet eine schnelle Möglichkeit, Abonnements für Kundenanfragen, Werbe-Upgrades oder Planmigrationen anzupassen, ohne API-Aufrufe tätigen zu müssen.

Produktkollektionen

Gruppiere verwandte Produkte in Kollektionen, um nahtlose Upgrade-/Downgrade-Pfade im Kundenportal zu ermöglichen.

Berechnungsmodi

Wähle, wie Kunden beim Wechsel der Pläne abgerechnet werden:

prorated_immediately

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

difference_immediately

Berechnet die Preisänderung sofort (Upgrade) oder fügt Guthaben für zukünftige Erneuerungen hinzu (Downgrade). Am besten geeignet 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'
});
Gutschriften aus Downgrades unter Verwendung von difference_immediately sind abonnementsbezogen und werden automatisch auf zukünftige Erneuerungen angewendet. Sie unterscheiden sich von Kundenkrediten.

full_immediately

Berechnet sofort den vollen Betrag des neuen Plans, ohne die verbleibende Zeit zu berücksichtigen. Am besten geeignet für das Zurücksetzen von Abrechnungszyklen.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_monthly',
  quantity: 1,
  proration_billing_mode: 'full_immediately'
});

Pläne mit Add-ons ändern

Ändere Add-ons, wenn du die Pläne änderst. Add-ons sind in die Berechnungen zur 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
});
Planänderungen lösen sofortige Gebühren aus. Fehlgeschlagene Zahlungen können das Abonnement in den on_hold Status versetzen. Verfolge Änderungen über subscription.plan_changed Webhook-Ereignisse.

Vorschau auf Planänderungen

Bevor du dich für eine Planänderung entscheidest, sieh dir die genaue Gebühr und das daraus resultierende Abonnement 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änderungs-API

Vorschau auf Planänderungen, bevor du dich dazu verpflichtest.

Abonnementzustände

Abonnements können während ihres Lebenszyklus in verschiedenen Zuständen sein:
  • active: Abonnement ist aktiv und wird automatisch verlängert
  • on_hold: Abonnement ist wegen fehlgeschlagener Zahlung pausiert. Aktualisierung der Zahlungsmethode erforderlich, um es reaktivieren zu können
  • cancelled: Abonnement ist gekündigt und wird nicht verlängert
  • expired: Abonnement hat sein Enddatum erreicht
  • pending: Abonnement wird erstellt oder verarbeitet

Auf Hold-Zustand

Ein Abonnement tritt in den on_hold Zustand ein, wenn:
  • Eine Erneuerungszahlung fehlgeschlagen ist (unzureichende Mittel, abgelaufene Karte usw.)
  • Eine Gebührenänderung fehlgeschlagen ist
  • Die Autorisierung der Zahlungsmethode fehlgeschlagen ist
Wenn sich ein Abonnement im on_hold Zustand befindet, wird es nicht automatisch erneuert. Du musst die Zahlungsmethode aktualisieren, um das Abonnement reaktivieren zu können.

Reaktivierung aus dem Hold

Um ein Abonnement aus dem on_hold Zustand zu reaktivieren, aktualisiere die Zahlungsmethode. Dies bewirkt automatisch:
  1. Erstellung einer Gebühr für die ausstehenden Beträge
  2. Erstellung einer Rechnung
  3. Verarbeitung der Zahlung mit der neuen Zahlungsmethode
  4. Reaktivierung des Abonnements zum 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 erhältst du payment.succeeded gefolgt von subscription.active Webhook-Ereignissen.

API-Verwaltung

Verwende POST /subscriptions zum programmatischen Erstellen von Abonnements aus Produkten, mit optionalen Testphasen und Add-ons.

API-Referenz

Sieh dir die Create Subscription-API an.
Verwende PATCH /subscriptions/{id} zum Aktualisieren von Mengen, zur Stornierung am Ende der Periode oder zur Änderung von Metadaten.

API-Referenz

Erfahre, wie du die Einzelheiten eines Abonnements aktualisierst.
Ändere das aktive Produkt und die Mengen mit Prorationskontrollen.

API-Referenz

Überprüfe die Optionen zur Planänderung.
Für On-Demand-Abonnements Gebühren in Höhe bestimmter Beträge auf Abruf erheben.

API-Referenz

Erhebe Gebühren für ein On-Demand-Abonnement.
Verwende GET /subscriptions um alle Abonnements aufzulisten und GET /subscriptions/{id} um eines abzurufen.

API-Referenz

Durchsuche die Auflistungs- und Abruf-APIs.
Rufe die aufgezeichnete Nutzung für gemessene oder hybride Preismodelle ab.

API-Referenz

Siehe die Nutzungsverlauf-API.
Aktualisiere 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 Gebühr für die ausstehenden Beträge erstellt wird.

API-Referenz

Erfahre, wie du Zahlungsmethoden aktualisierst und Abonnements reaktivierst.

Häufige Anwendungsfälle

  • SaaS und APIs: Gestaffelter Zugriff mit Add-ons für Sitze oder Nutzung
  • Inhalte und Medien: Monatlicher Zugang mit Einführungsphasen
  • B2B-Supportpläne: Jährliche Verträge mit Premium-Support-Add-ons
  • Werkzeuge und Plugins: Lizenzschlüssel und versionierte Veröffentlichungen

Integrationsbeispiele

Checkout-Sitzungen (Abonnements)

Beim Erstellen von Checkout-Sitzungen die Produkt- und optionalen Add-ons für das Abonnement hinzufügen:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_subscription',
      quantity: 1
    }
  ]
});

Planänderungen mit Proration

Ändere ein Abonnement und steuere das Prorationsverhalten:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});

Stornierung am Ende der Periode

Plane eine Stornierung ohne sofortige Beendigung des Zugangs:
await client.subscriptions.update('sub_123', {
  cancel_at_period_end: true
});

On-Demand-Abonnements

Erstelle ein On-Demand-Abonnement und berechne 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

Aktualisiere 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 Hold reaktivieren

Reaktiviere ein Abonnement, das aufgrund fehlgeschlagener Zahlung auf Hold 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 speziellen Mandatsanforderungen:

Mandatsgrenzen

Der Mandatstyp und der Betrag hängen von der wiederkehrenden Gebühr deines Abonnements ab:
  • Gebühren unter Rs 15.000: Wir erstellen ein On-Demand-Mandat für Rs 15.000 INR. Der Abonnementbetrag wird gemäß deiner Abonnementfrequenz periodisch bis zur Mandatsgrenze belastet.
  • Gebühren in Höhe von Rs 15.000 oder mehr: Wir erstellen ein Abonnementmandat (oder On-Demand-Mandat) für den genauen Abonnementbetrag.
Für detaillierte Informationen zu RBI-konformen Mandaten für indische Zahlungsmethoden siehe die Seite zu indischen Zahlungsmethoden.

Überlegungen zu Upgrade und Downgrade

Wichtig: Bei Upgrades oder Downgrades von Abonnements die Mandatsgrenzen sorgfältig berücksichtigen:
  • Wenn ein Upgrade/Downgrade zu einem Gebührenbetrag führt, der Rs 15.000 übersteigt und über die bestehende On-Demand-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 korrekten Grenze zu erstellen.

Autorisierung für hohe Beträge

Bei Abonnementgebühren von Rs 15.000 oder mehr:
  • Der Kunde wird von seiner Bank aufgefordert, die Transaktion zu autorisieren.
  • Wenn der Kunde die Transaktion nicht autorisieren kann, schlägt die Transaktion fehl und das Abonnement wird auf Hold 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 am geplanten Datum gemäß deiner Abonnementfrequenz initiiert.
  • Der tatsächliche Abzug vom Konto des Kunden erfolgt erst nach 48 Stunden von der Initiierung der Zahlung.
  • Dieses 48-Stunden-Fenster kann sich je nach Bank-API-Antworten um bis zu 2-3 zusätzliche Stunden verlängern.

Mandatsstornierungsmöglichkeiten

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 Sonderfall, 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 Hold.
Umgang mit Sonderfällen: Wenn du Kunden sofort nach der Gebührenerhebung Vorteile, Gutschriften oder Abonnementsnutzungen bereitstellst, musst du dieses 48-Stunden-Fenster in deiner Anwendung angemessen verwalten. Ziehe in Betracht:
  • Aktivierungszeitpunkte für Vorteile bis zur Bestätigung der Zahlung zu verzögern
  • Einführungsfristen oder temporäre Zugänge zu implementieren
  • Den Abonnementstatus für Mandatsstornierungen zu überwachen
  • Die Handhabung von Abonnements im Hold-Zustand in deiner Anwendungslogik
Überwache Abonnement-Webhooks, um Änderungen des Zahlungsstatus zu verfolgen und die Sonderfälle zu behandeln, in denen Mandate während des 48-Stunden-Fensters storniert werden.

Beste Praktiken

  • Starte mit klaren Ebenen: 2–3 Pläne mit offensichtlichen Unterschieden
  • Kommuniziere die Preise: Zeige Gesamtsummen, Prorationen und die nächste Erneuerung an
  • Nutze Testphasen sinnvoll: Konvertiere mit Onboarding, nicht nur mit Zeit
  • Nutze Add-ons: Halte Basispläne einfach und biete Extras an
  • Teste Änderungen: Überprüfe Planänderungen und Prorationen im Testmodus
Abonnements sind eine flexible Grundlage für wiederkehrende Einnahmen. Beginne einfach, teste gründlich und iteriere basierend auf Übernahme-, Abwanderungs- und Erweiterungskennzahlen.