Apples Retention Messaging API bringt Ihre Worte auf den Kündigungsbildschirm, doch Erstattungsanträge laufen nie darüber
Mit Apples Retention Messaging API zeigen Sie eine Nachricht, einen Tarifwechsel oder ein Werbeangebot, wenn ein Abonnent auf Kündigen tippt. So funktioniert sie, das kostet ihr Betrieb, und deshalb erreicht ein Erstattungsantrag Apple, ohne diesen Bildschirm je zu berühren.

Wichtigste Erkenntnisse
- Mit Apples Retention Messaging API wählt ein Entwickler die Nachricht, die ein iPhone-Abonnent nach dem Tippen auf Cancel Subscription sieht. Es gibt vier Typen: Text, Text mit Bild, ein Tarifwechsel-Vorschlag oder ein Werbeangebot.
- Apples Dokumentation beschreibt die Retention Messaging API weiterhin als Vorabversion, für deren Teilnahme sich Entwickler bewerben. Version 1.0 erschien am 16. Juli 2025, Version 1.5 folgte am 27. April 2026.
- Im Echtzeit-Ablauf ruft Apple den Get Retention Message-Endpunkt des Entwicklers auf, wenn ein aktiver Abonnent eine Abonnement-Detailseite mit Kündigen-Button ansieht. Der Endpunkt muss in der Produktion innerhalb von 700 ms antworten, sonst greift Apple auf eine Standardnachricht zurück.
- Eine Retention-Nachricht wirkt nur auf künftige Verlängerungen. Ein Erstattungsantrag geht über reportaproblem.apple.com oder den In-App-Erstattungsdialog an Apple, und der Kündigungsbildschirm mit den Retention-Nachrichten gehört nicht zu diesem Weg.
- Beantragt ein Kunde in einer App über StoreKits Erstattungsanfrage-API eine Erstattung, schaltet Apple die automatische Verlängerung selbst ab und sendet DID_CHANGE_RENEWAL_STATUS mit dem Subtyp AUTO_RENEW_DISABLED, also denselben Typ und Subtyp wie bei einer Kündigung über die Einstellungsseite Subscriptions.
- Der einzige Beitrag des Entwicklers zu einer Apple-Erstattung ist der CONSUMPTION_REQUEST, beantwortet innerhalb von 12 Stunden mit Send Consumption Information, und das nur, wenn der Kunde der Weitergabe dieser Daten zugestimmt hat.
- Google Play hat kein dokumentiertes Gegenstück zu einer vom Entwickler gewählten Nachricht auf dem Kündigungsbildschirm. Entwickler erhalten danach eine SUBSCRIPTION_CANCELED-Benachrichtigung, und das Feld userInitiatedCancellation verrät, warum der Abonnent gegangen ist.
Abonnenten, die auf dem iPhone auf Kündigen tippen, können jetzt vor der Bestätigung eine von Ihnen gewählte Nachricht, einen günstigeren Tarif oder einen Rabatt sehen. Das ist Apples Retention Messaging API, und zum ersten Mal reden Entwickler auf Apples eigenem Kündigungsbildschirm mit. Sie ist noch eine Vorabversion, für die man sich bewerben muss. Und sie hat eine harte Grenze, die zählt, wenn Ihnen Erstattungen wichtig sind: Sie spricht Menschen an, die gleich aufhören zu zahlen, nicht Menschen, die ihr Geld zurückwollen. Diese Anträge erreichen Apple auf einem anderen Weg.
Was Apples Retention Messaging API macht
Die Retention Messaging API ist ein Server-zu-Server-Dienst. Sie laden Nachrichtentexte und Bilder vorab bei Apple hoch, Apple prüft sie, und dann wählen Sie, welche freigegebene Nachricht ein Abonnent sieht, wenn er ein automatisch verlängerbares Abonnement kündigen will. Apples Dokumentation nennt vier Nachrichtentypen:
- Eine Textnachricht, die Aufzählungspunkte enthalten kann.
- Eine Textnachricht mit Bild.
- Eine Tarifwechsel-Nachricht, die ein anderes Abonnement aus derselben Abonnementgruppe vorschlägt.
- Eine Werbeangebots-Nachricht, die einen reduzierten Preis in derselben oder einer anderen Stufe anbietet, über ein Werbeangebot, das Sie in App Store Connect einrichten und auf Ihrem Server signieren.
Die Nachricht erscheint, nachdem der Kunde auf einer Abonnement-Detailseite auf Cancel Subscription (Abonnement kündigen) getippt hat. Danach zeigt Apple eine Seite Confirm Cancellation (Kündigung bestätigen). Der Kunde kann weiterhin kündigen, auf Keep Subscription (Abonnement behalten) tippen oder Ihr Angebot oder Ihren Tarifvorschlag annehmen. Den Ausgang verstecken können Sie nicht, und Apple verlangt von Entwicklern, keine irreführenden oder unzutreffenden Inhalte hochzuladen.
Standardnachrichten und der Echtzeit-Ablauf
Es gibt zwei Betriebsarten. Die einfache sind Standardnachrichten: Text, mit oder ohne Bild oder Aufzählungspunkte, je Produkt und Sprachregion zugewiesen. Die umfangreichere ist der Echtzeit-Ablauf: Apple ruft einen Get Retention Message-Endpunkt auf Ihrem Server auf, und Sie antworten mit einer Nachrichten-ID. Nur im Echtzeit-Ablauf lassen sich Tarifwechsel- und Werbeangebots-Nachrichten anzeigen.
In der Praxis sind Standardnachrichten nicht optional. Apple nutzt sie als Rückfallebene, sobald ein Echtzeit-Aufruf scheitert, und zeigt für ein Produkt in jeder Sprachregion ohne Standardnachricht überhaupt keine Retention-Nachricht.
| Punkt | Was Apples Dokumentation sagt |
|---|---|
| Status | Vorabversion, Entwickler bekunden Interesse an der Teilnahme |
| Produkte | Automatisch verlängerbare Abonnements |
| Nachrichtentypen | Text, Text mit Bild, Tarifwechsel, Werbeangebot |
| Antwortlimit in Echtzeit | 700 ms in der Produktion |
| Produktionszugang | Vorher einen Sandbox-Leistungstest bestehen, etwa 700 ms |
| Überschrift und Aufzählungstext | Je 66 Zeichen, bis zu fünf Aufzählungspunkte |
| Fließtext | 144 Zeichen |
| Alternativtext für Bilder | 150 Zeichen |
| Nachrichten pro App | 2.000 |
| Prüfung | Neue Nachrichten starten als PENDING und erscheinen erst, wenn sie APPROVED sind |
| Geräte | iOS 15.1, iPadOS 15.1, visionOS 1, macOS 14 oder neuer |
Was Apple Ihrem Server im Echtzeit-Aufruf mitteilt
Die Anfrage ist ein vom App Store signiertes JWS. Dekodiert enthält sie originalTransactionId, appAppleId, productId, userLocale, eine requestIdentifier-UUID, die Umgebung und signedDate. Apple weist Sie an zu prüfen, ob appAppleId zu Ihrer App passt, und nicht zu antworten, wenn das nicht der Fall ist. Der nützliche Teil ist die originalTransactionId: Mit ihr sehen Sie nach, was dieser Abonnent in Ihrer App tatsächlich getan hat, bevor Sie entscheiden, was Sie sagen.
Wo die Retention-Nachricht erscheint und wo nicht
Apple zeigt die Nachricht auf genau einem Bildschirm: dem Schritt Confirm Cancellation, nachdem der Kunde auf Cancel Subscription getippt hat, etwa unter Apple Account > Subscriptions oder auf der Seite eines Abonnements im App Store. Auf diesem Bildschirm geht es darum, ob die nächste Verlängerung stattfindet. Bereits eingenommenes Geld berührt er nicht.
Ein Erstattungsantrag ist ein eigener Vorgang. Apples Support-Seite schickt Kunden zu reportaproblem.apple.com, wo sie „Request a refund“ (Rückerstattung anfordern) wählen, einen Grund und einen Artikel angeben und 24 bis 48 Stunden auf eine Rückmeldung warten. In Ihrer App öffnet StoreKits beginRefundRequest Apples Erstattungsdialog, und laut Apple braucht der App Store bis zu 48 Stunden, um zu genehmigen oder abzulehnen. Keiner der beiden Wege führt über den Bildschirm Confirm Cancellation.
| Moment | Wo es passiert | Was auf dem Spiel steht | Wer entscheidet | Ihr Beitrag |
|---|---|---|---|---|
| Kündigung | Abonnement-Detailseite, dann Confirm Cancellation | Künftige Verlängerungen | Der Kunde | Eine von Ihnen gewählte Retention-Nachricht, Antwort innerhalb von 700 ms |
| Erstattungsantrag | reportaproblem.apple.com oder Ihr In-App-Erstattungsdialog | Bereits gezahltes Geld | Apple | CONSUMPTION_REQUEST-Daten innerhalb von 12 Stunden, sofern der Kunde eingewilligt hat |
Kann eine Retention-Nachricht einen Erstattungsantrag verhindern?
Nein. Der Erstattungsantrag erreicht den Bildschirm, auf dem die Nachricht steht, nie. Ein Detail in Apples Dokumentation zu Benachrichtigungen macht das greifbar. Beantragt ein Kunde über Ihre App mit der Erstattungsanfrage-API eine Erstattung, schaltet Apple die automatische Verlängerung selbst ab und sendet DID_CHANGE_RENEWAL_STATUS mit dem Subtyp AUTO_RENEW_DISABLED. Ein Kunde, der über die Einstellungsseite Subscriptions kündigt, erzeugt denselben Typ und Subtyp. Ihr Server sieht eine Benachrichtigung für zwei sehr unterschiedliche Kunden, und nur einer davon hat Ihre Retention-Nachricht gesehen.
Geht der Erstattungsantrag weiter, ist der CONSUMPTION_REQUEST Ihr Kanal für Belege. Apple sendet ihn bei Erstattungsanträgen für jeden Produkttyp, und Sie haben 12 Stunden, um mit Send Consumption Information zu antworten. Antworten dürfen Sie nur, wenn der Kunde eingewilligt hat. Danach kommt Apples Entscheidung als REFUND-Benachrichtigung oder als REFUND_DECLINED, wenn Apple eine Erstattung ablehnt, die der Kunde in Ihrer App gestartet hat.
Hat Google Play eine API für Kündigungsnachrichten?
Nicht laut Googles Dokumentation zum Abonnement-Lebenszyklus. Ein Google Play-Abonnent kündigt im Play-Abocenter, behält den Zugang bis zum Ende des laufenden Abrechnungszeitraums und kann bis dahin auf Resubscribe (Erneut abonnieren) tippen, um die Kündigung rückgängig zu machen. Google nennt das eine Wiederherstellung. Sie erfahren davon erst danach über eine SUBSCRIPTION_CANCELED-Benachrichtigung, und das Feld userInitiatedCancellation in der Abonnement-Ressource verrät Ihnen, warum der Nutzer gegangen ist. Pausieren, laut Google standardmäßig für alle Abonnements aktiviert, ist das wichtigste eingebaute Mittel gegen freiwillige Abwanderung.
Auf der Erstattungsseite hat Google Play einen eigenen Kanal für Belege. Eine PendingRefundReviewNotification kommt an, wenn eine Rückbuchung (Chargeback) eine Prüfung durch den Entwickler braucht, und Sie haben 24 Stunden, um über orders.reviewrefund zu antworten. Bei Bestellungen nach dem 3. August 2026 gibt Google bei einer erfolgreichen Rückbuchung den Kaufpreis abzüglich der Play-Servicegebühr sowie die Rückbuchungsgebühren der Bank an den Entwickler weiter.
Was der Kündigungsbildschirm Sie an Geld kostet
Retention Messaging wirkt kostenlos. Ist es nicht, und die Rechnungen fallen an drei Stellen an.
Rechenleistung bei jedem Seitenaufruf
Apple ruft Ihren Endpunkt auf, wenn ein aktiver Abonnent eine Abonnement-Detailseite mit Kündigen-Button ansieht, nicht nur beim Kündigen. Jeder Besuch ist eine Anfrage, die Ihr Server authentifizieren, nachschlagen und innerhalb von 700 ms beantworten muss, sonst greift Apple auf die Standardnachricht zurück. Eine Funktion mit Kaltstart, die manchmal zwei Sekunden braucht, scheidet damit aus. Sie zahlen für Kapazität, die warm bleibt, plus alle Datenbankabfragen und kostenpflichtigen API-Aufrufe bei Drittanbietern, die Ihre Entscheidungslogik pro Anfrage auslöst.

Der Rabatt ist Umsatz, auf den Sie verzichten
Ein Werbeangebot, das einen Abonnenten hält, ist echtes gehaltenes Geld. Eines, das an jemanden geht, der ohnehin geblieben wäre, ist reiner Rabatt. Hier ein Rechenbeispiel, kein Benchmark. Ein Monatstarif für 9,99 $, drei Monate lang zum halben Preis angeboten, kostet 14,99 $ pro angenommenem Angebot. Wäre jeder Dritte, der annimmt, auch zum vollen Preis geblieben, kosten tausend Annahmen etwa 5.000 $ an Rabatt für Menschen, die ihn nie gebraucht hätten. Auf der anderen Seite der Bilanz stehen die Abonnenten, die wirklich gehen wollten.
Die Erstattung, die ein holpriger Ausstieg provoziert
Apple lässt den Button Cancel Subscription auf der Seite, Sie können also niemanden festhalten, aber lästig sein können Sie trotzdem. Ein Kunde, der sich gedrängt fühlt, hat eine andere Option: Er bittet Apple, die letzte Abbuchung zu erstatten. Kommt eine Erstattung, geht das Geld zurück, während Rechenleistung, Speicher, API-Aufrufe und etwaige Affiliate-Provisionen für diesen Abonnenten ausgegeben bleiben. Diese Kosten holt keine Retention-Nachricht zurück.
So nutzen Sie Retention Messaging, ohne Ihre Erstattungsquote zu erhöhen
Behandeln Sie den Kündigungsbildschirm als Ort für Genauigkeit, nicht für Raffinesse. Ein paar Regeln halten ihn auf der richtigen Seite der Erstattungsgrenze:
- Entscheiden Sie pro Abonnent. Schlagen Sie mit der originalTransactionId aus Apples Anfrage die jüngste Nutzung nach. Bieten Sie Rabatt oder einen günstigeren Tarif Menschen an, die das Produkt nutzen. Wer es seit Wochen nicht geöffnet hat, bekommt eine kurze, ehrliche Nachricht.
- Antworten Sie schnell. Berechnen Sie die Entscheidung vorab, wenn sich Ihre Nutzungsdaten ändern, damit die Anfrage selbst nur ein einzelnes Nachschlagen ist, das bequem in 700 ms passt.
- Schreiben Sie für jedes Produkt und jede Sprachregion eine Standardnachricht. Ohne sie bedeutet ein fehlgeschlagener Aufruf: gar keine Nachricht.
- Beobachten Sie AUTO_RENEW_DISABLED genau. Folgt ein CONSUMPTION_REQUEST für dieselbe originalTransactionId, haben Sie einen Erstattungsantrag vor sich, keine Kündigung, und die 12-Stunden-Frist läuft.
- Beantworten Sie jeden CONSUMPTION_REQUEST, den Sie beantworten dürfen. RefundHalt sendet Apple innerhalb des 12-Stunden-Fensters genaue Nutzungsdaten und beantwortet Google Plays Chargeback-Prüfung innerhalb von 24 Stunden, denn das sind die einzigen zwei Momente, in denen einer der beiden Stores Ihre Sicht abfragt.
Lohnt es sich, bei Apple Zugang zu beantragen?
Wenn Sie automatisch verlängerbare Abonnements verkaufen und App Store Server Notifications V2 bereits verarbeiten, wahrscheinlich ja. Der Kündigungsbildschirm ist der letzte Ort, an dem Sie einen Abonnenten erreichen, bevor er geht, und ein Tarifwechsel kostet Sie weniger als sein vollständiger Verlust. Planen Sie nur einen Endpunkt ein, der bei jedem Aufruf einer Abonnementseite antwortet, und halten Sie Ihre Abwehr gegen Erstattungen dort, wo Erstattungen tatsächlich passieren.
Häufig gestellte Fragen
- Was ist Apples Retention Messaging API?
- Eine Server-zu-Server-API, mit der ein Entwickler die Nachricht wählt, die ein Abonnent nach dem Tippen auf Cancel Subscription bei einem automatisch verlängerbaren Abonnement sieht. Apple unterstützt vier Typen: Text, Text mit Bild, einen Tarifwechsel-Vorschlag und ein Werbeangebot. Apples Dokumentation beschreibt sie weiterhin als Vorabversion, für deren Teilnahme sich Entwickler bewerben.
- Wie schnell muss mein Get Retention Message-Endpunkt antworten?
- Innerhalb von 700 ms in der Produktion. Ist Ihr Server langsamer oder fällt aus, zeigt Apple die für dieses Produkt und diese Sprachregion eingerichtete Standardnachricht, und gar nichts, wenn keine existiert. Außerdem müssen Sie einen Sandbox-Leistungstest bei etwa 700 ms bestehen, bevor Apple Sie eine Produktions-URL festlegen lässt.
- Erscheint eine Retention-Nachricht, wenn ein Kunde eine Erstattung beantragt?
- Nein. Apple zeigt Retention-Nachrichten auf dem Bildschirm Confirm Cancellation, nachdem ein Kunde auf Cancel Subscription getippt hat. Erstattungsanträge laufen über reportaproblem.apple.com oder den In-App-Erstattungsdialog, den beginRefundRequest öffnet, und der einzige Beitrag des Entwicklers dort ist der CONSUMPTION_REQUEST, beantwortet innerhalb von 12 Stunden, sofern der Kunde eingewilligt hat.
- Wie unterscheide ich in App Store Server Notifications einen Erstattungsantrag von einer Kündigung?
- Nicht allein anhand der Verlängerungsbenachrichtigung. Eine Kündigung über die Einstellungsseite Subscriptions und ein Erstattungsantrag über Ihre App erzeugen beide DID_CHANGE_RENEWAL_STATUS mit dem Subtyp AUTO_RENEW_DISABLED. Ein CONSUMPTION_REQUEST für dieselbe Transaktion und später eine REFUND- oder REFUND_DECLINED-Benachrichtigung zeigen, dass ein Erstattungsantrag läuft.
- Können Entwickler bei Google Play eine Nachricht zeigen, wenn Nutzer kündigen?
- Googles Dokumentation zum Abonnement-Lebenszyklus beschreibt so etwas nicht. Entwickler erhalten im Nachhinein eine SUBSCRIPTION_CANCELED-Benachrichtigung und können im Feld userInitiatedCancellation nachlesen, warum der Nutzer gekündigt hat. Pausieren, standardmäßig für alle Abonnements aktiviert, ist das wichtigste eingebaute Werkzeug von Google Play gegen freiwillige Abwanderung.
Quellen und weiterführende Informationen
- Apple Developer Documentation: Retention Messaging API
- Apple Developer Documentation: Setting up your Get Retention Message endpoint
- Apple Developer Documentation: Upload Message
- Apple Developer Documentation: Retention Messaging API changelog
- Apple Developer Documentation: notificationType
- Apple Developer Documentation: Send Consumption Information
- Apple Support: Request a refund for apps or content that you bought from Apple
- Google Play Billing: Subscription lifecycle
- Google Play Billing: Real-time developer notifications reference
- Google Play Console Help: Updates to refund protection and chargeback cost responsibility
RefundHalt
Der Rückerstattungs-Autopilot für App Store und Google Play
Weiterlesen
Der ROAS Ihrer App zählt noch Käufe, die Apple und Google erstattet haben. Bieten Sie deshalb auf Netto-ROAS
Erstattungen gelangen selten zurück zu den Werbeplattformen, also schreibt der ROAS weiter Käufe gut, die Apple und Google längst zurückgezahlt haben. Hier lesen Sie, wo Firebase, Google Ads und AdAttributionKit Erstattungen verlieren, was das kostet und wie Sie einen Netto-ROAS für eine App aufbauen.
Die App Store Order ID auf dem Beleg eines Kunden zeigt dir, was er gekauft hat und ob Apple es schon erstattet hat
Apples Endpunkt Look Up Order ID macht aus der Order ID auf dem App Store Beleg eines Kunden signierte Transaktionen, samt Erstattungsdatum und Grund. So nutzt du ihn bei Erstattungsanfragen, das kann er nicht, und so schneidet die Order ID von Google Play im Vergleich ab.