KÜNDIGUNGSFLOWSPADDLE

Einen Kündigungsflow in Paddle Billing einbauen

So funktioniert die Kündigung in Paddle Billing: Cancel-API, geplante Änderungen, Pause und Fortsetzung, Rabatte, Webhooks und wo ein Halteschritt hingehört.

Veröffentlicht am 6 Min. Lesezeit

Ein Kündigungsflow ist der kurze Schritt zwischen „Ich will kündigen” und der Kündigung selbst: nach dem Grund fragen, etwas anbieten, das zum Grund passt, und sauber kündigen, wenn der Kunde trotzdem gehen will. Dieser Ratgeber erklärt, wie die Kündigung in Paddle Billing funktioniert, was Paddle schon von Haus aus bietet und wie Sie auf seiner API einen eigenen Halteschritt bauen.

Er hält sich an die Entwicklerdokumentation von Paddle: Abo kündigen, Abo pausieren, Abo fortsetzen, Abo aktualisieren, Rabatte, Bereitstellung und Webhooks, das Kundenportal und Cancellation Flows (alle abgerufen im November 2026). Es geht um Paddle Billing, nicht um Paddle Classic, dessen API anders ist.

Paddle ist der Merchant of Record

Eines sollten Sie durchgehend im Kopf behalten: Paddle ist der Merchant of Record für Ihre Verkäufe. Paddle verkauft an Ihren Kunden, kümmert sich um Steuern und, laut Paddle, um Abrechnungssupport und Chargebacks. Die Zahlungsbeziehung besteht also zwischen dem Kunden und Paddle. Ihr Kündigungsflow sollte Abos nur über die API oder die eigenen Werkzeuge von Paddle ändern, nie, indem er Zahlungen auf anderem Weg zu stoppen versucht.

So funktioniert die Kündigung in Paddle Billing

Paddle bietet drei Stellen, an denen ein Abo gekündigt werden kann.

1. Die Cancel-API

Sie kündigen mit POST /subscriptions/{subscription_id}/cancel. Das Feld effective_from entscheidet, wann:

effective_from Was passiert
next_billing_period (Standard, das bewirkt auch ein leerer Body) Paddle fügt eine scheduled_change mit der Aktion cancel hinzu. Das Abo bleibt bis zum nächsten Abrechnungsdatum aktiv, und next_billed_at wird null
immediately Der Status wechselt sofort auf canceled, und subscription.canceled wird ausgelöst

Paddle dokumentiert auf der Kündigungsseite einige Grenzen:

  • Innerhalb von 30 Minuten vor dem nächsten Abrechnungsdatum können Sie weder kündigen noch pausieren.
  • Eine geplante Kündigung lässt sich entfernen, indem Sie das Abo mit scheduled_change auf null aktualisieren. So „machen” Sie eine Kündigung rückgängig, bevor sie wirksam wird.
  • Ein gekündigtes Abo lässt sich nicht wiederherstellen. Ein zurückkehrender Kunde braucht ein neues Abo, was für Win-back wichtig ist.
  • Ein pausiertes Abo kann nur mit effective_from: immediately gekündigt werden.

2. Das Kundenportal

Im Kundenportal von Paddle können Kunden kündigen und Zahlungsdaten aktualisieren. Laut Doku von Paddle wird Pausieren im Portal nicht unterstützt, ein Pausenangebot muss also aus Ihrer App oder aus den Cancellation Flows von Paddle kommen.

3. Die eigenen Cancellation Flows von Paddle

Paddle hat genau dafür eine eingebaute Funktion, Teil von Paddle Retain. Sie richten sie unter Retain › Cancellation Flows ein (Einrichtungsleitfaden). Sie fragt nach einem Kündigungsgrund und kann eine Pause, einen Planwechsel, Kontakt zum Support oder einen befristeten Rabatt anbieten. Laut Changelog vom Januar 2026 läuft ein eingerichteter Flow automatisch, wenn Kunden im Kundenportal oder über Kündigungslinks in den Abo-Mails von Paddle kündigen. In Ihrer eigenen App starten Sie ihn mit Paddle.Retain.initCancellationFlow(), das einen Status wie retained, aborted oder chose_to_cancel zurückgibt. Ein Changelog vom September 2026 ergänzt Tests in der Sandbox über das Kundenportal, während mit initCancellationFlow() gestartete Flows weiterhin nur auf Live-Konten laufen.

Damit es klar ist: Wenn Sie nur eine Umfrage zum Grund und ein Standardangebot innerhalb von Paddle brauchen, kann diese eingebaute Funktion genügen, und Paddle führt sie für Kunden von Paddle Billing ohne Aufpreis. Der Rest dieses Ratgebers ist für den Fall, dass Sie einen eigenen Flow, ein eigenes Design oder Angebote wollen, die von Daten abhängen, die Paddle nicht hat.

Die Halteangebote, die die API von Paddle unterstützt

Pause

POST /subscriptions/{subscription_id}/pause pausiert ein Abo (Leitfaden). Es nimmt effective_from (next_billing_period oder immediately) und ein optionales Datum resume_at. Eine Pause zum nächsten Abrechnungszeitraum erzeugt eine geplante Änderung; der Status wird paused, sobald sie wirksam wird.

Um einen Kunden früher zurückzuholen, funktioniert POST /subscriptions/{subscription_id}/resume nur bei pausierten Abos. Das Feld on_resume entscheidet über die Abrechnung: Standardmäßig startet Paddle einen neuen Abrechnungszeitraum und belastet sofort; continue_existing_billing_period behält stattdessen den alten Zeitraum bei. Paddle storniert außerdem überfällige Verlängerungstransaktionen, wenn ein Abo pausiert wird, um eine doppelte Belastung für überlappende Zeiträume zu vermeiden.

Rabatt

Erstellen Sie den Rabatt einmal mit POST /discounts. Für ein Halteangebot wie „50 % Rabatt für 3 Monate” setzen Sie recur auf true und maximum_recurring_intervals auf die Anzahl der Abrechnungszeiträume. Wenden Sie ihn dann mit PATCH /subscriptions/{subscription_id} auf das Abo an, mit einem Objekt discount mit der ID des Rabatts und einem effective_from von next_billing_period oder immediately (Abo aktualisieren). discount: null entfernt ihn. Paddle weist darauf hin, dass Verlängerungen und Änderungen mitten im Zeitraum nicht als neue Einlösungen zählen.

Planwechsel

Ein Downgrade ist ebenfalls eine Abo-Aktualisierung: Ersetzen Sie die Positionen durch den günstigeren Preis. Wenn Sie Positionen oder das Abrechnungsdatum ändern, verlangt Paddle proration_billing_mode. Nutzen Sie den Vorschau-Endpoint, um dem Kunden vor der Bestätigung zu zeigen, was er zahlen wird.

Einen eigenen Kündigungsflow auf Paddle bauen

  1. Den Einstieg zur Kündigung in Ihre App legen. Verlinken Sie „Abo kündigen” auf Ihren Flow, nicht direkt auf den API-Aufruf. Lassen Sie auch das Kundenportal verfügbar; es ist der eigene Weg von Paddle, und Kunden nutzen ihn vielleicht.
  2. Eine Frage stellen: warum. Nutzen Sie eine kurze Liste von Gründen plus „Sonstiges” mit einem Freitextfeld. Speichern Sie die Antwort mit der Abo-ID.
  3. Ein Angebot zeigen, das zum Grund passt. „Zu teuer” passt zu einem Rabatt oder einem günstigeren Plan. „Nutze es gerade nicht” passt zu einer Pause mit Datum resume_at. „Mir fehlt eine Funktion” oder „Zu kompliziert” passt zu einem Gespräch mit dem Support. Stapeln Sie keine Angebote.
  4. „Jetzt kündigen” auf jedem Schritt sichtbar lassen. Der Kunde sollte die Kündigung jederzeit abschließen können, ohne ein Angebot anzunehmen. Das ist eine Frage des Vertrauens und an mehreren Orten auch des Rechts.
  5. Paddle für das Ergebnis aufrufen. Rabatt: das Abo per PATCH mit dem Rabatt aktualisieren. Pause: POST .../pause. Planwechsel: die Positionen nach einer Vorschau per PATCH ändern. Kündigung: POST .../cancel mit effective_from: next_billing_period, damit der Kunde behält, wofür er bezahlt hat.
  6. Bestätigen, was als Nächstes passiert. Nennen Sie dem Kunden das Datum, an dem der Zugang endet, oder das Datum, an dem die Pause endet. Lesen Sie es aus dem Abo, das Paddle zurückgibt, statt es selbst zu berechnen.
  7. Umentscheiden erlauben. Bis die geplante Kündigung wirksam wird, kann ein Button „Abo behalten” scheduled_change zurücksetzen.

Webhooks, auf die Sie hören sollten

Der Bereitstellungsleitfaden von Paddle empfiehlt subscription.created und subscription.updated als Kern-Events, weil subscription.updated Verlängerungen, Planwechsel, Pausen, Fortsetzungen und Kündigungen abdeckt. Einige eigene Events sind als klare Signale nützlich:

Event Wann es ausgelöst wird
subscription.updated Bei jeder Änderung, auch wenn eine Kündigung geplant wird
subscription.canceled Der Status wird canceled: sofort, oder bei einer geplanten Kündigung am Abrechnungsdatum
subscription.past_due Das Abo wird nach einer fehlgeschlagenen Verlängerung überfällig

Pausen und Fortsetzungen kommen ebenfalls über subscription.updated, wobei der Status zu paused wechselt oder davon zurück; prüfen Sie die Webhook-Referenz von Paddle für die eigenen Events in Ihrer API-Version.

Zwei Details aus der Doku von Paddle: Behalten Sie bei einer geplanten Kündigung den Zugang bis zum Wirksamkeitsdatum der geplanten Änderung bei; und deduplizieren Sie über event_id und vergleichen Sie occurred_at, denn Events können in falscher Reihenfolge ankommen. Der Payload von subscription.canceled enthält keine management_urls.

Nach der Kündigung: Win-back

Da Paddle ein gekündigtes Abo nicht wiederherstellen kann, muss ein Win-back-Angebot zu einem neuen Checkout führen. Bewahren Sie den gesammelten Kündigungsgrund auf, warten Sie eine angemessene Zeit und senden Sie ein Angebot, das auf diesen Grund antwortet: eine neue Funktion bei „fehlende Funktionen”, ein niedrigerer Preis bei „zu teuer”. Schicken Sie den Kunden zu einem Checkout, in dem der Rabatt bereits angewendet ist.

So geht es mit NoChurn

NoChurn liest Ihre Paddle-Abos und -Events und ergänzt einen Kündigungsflow mit Gründen, Angeboten (Rabatt, Pause, Planwechsel) und einem Kündigen-Button für einen Klick, der auf jedem Schritt sichtbar bleibt, entweder gehostet oder headless über die API. Angenommene Angebote und Kündigungen werden in Paddle angewendet, und Paddle bleibt der Merchant of Record: Es behält Checkout, Zahlungen, Zahlungswiederherstellung, Steuern und das Kundenportal. Disputes werden von Paddle bearbeitet und in NoChurn schreibgeschützt angezeigt. NoChurn sendet außerdem Win-back-Mails nach 30, 60 und 90 Tagen je nach Kündigungsgrund und ist unter 300 $ MRR kostenlos. Siehe NoChurn + Paddle.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Hören Sie auf, Umsatz zu verlieren.

  • Kostenlos bis $300 MRR
  • Keine Karte nötig
  • In 10 Minuten live
  • Nie ein Anteil an dem, was wir retten