Serieller Rückerstattungsmissbrauch kostet Sie doppelt, so lassen die Stores Sie sich wehren
Der Kunde, der immer wieder Rückerstattungen verlangt, ist kein Zufall. Rückerstattungsmissbrauch kostet Sie das Geld zurück plus die Rechenleistung, die Sie bereits ausgegeben haben, und beide Stores geben Ihnen ein Identitätssignal, Apples appAccountToken und Googles obfuscated account ID, um das Muster zusammenzusetzen.

Wichtigste Erkenntnisse
- Nur zwei Rückerstattungsabläufe erlauben es einem Entwickler überhaupt, Beweise gegen Rückerstattungsmissbrauch einzureichen: Apples CONSUMPTION_REQUEST mit einem Fenster von 12 hours und die Rückbuchungsprüfung von Google Play über die Review Refund API mit einem Fenster von 24 hours.
- Apples appAccountToken ist eine UUID, die Sie erzeugen und an einen Kauf anhängen, und StoreKit bindet sie an die daraus entstehende Transaktion, sodass Ihr Server jede Rückerstattung genau dem Konto zuordnen kann, das sie ausgelöst hat.
- Google Plays obfuscated account ID ist eine gehashte Zeichenkette, begrenzt auf 64 characters, die Google selbst nutzt, um auffällige Aktivität zu erkennen, etwa viele Geräte, die in kurzer Zeit über ein Konto kaufen.
- Klartext-Personendaten in Googles obfuscated account ID zu speichern, führt dazu, dass Ihre Käufe blockiert werden, daher muss das Feld ein verschlüsselter Wert oder ein Einweg-Hash sein, niemals eine rohe E-Mail-Adresse.
- Google Plays Feld voidedReason kennzeichnet friendly_fraud und fraud als Gründe, die sich von einer gewöhnlichen remorse-Rückerstattung unterscheiden, wodurch Sie Wiederholungstäter in eine Prüfschlange leiten können statt auf einen automatischen Erstatten-und-vergessen-Pfad.
- Google gibt an, im Jahr 2022 über $2 billion an betrügerischen und missbräuchlichen Transaktionen blockiert zu haben, und die Identitätsfelder, die dieses System speisen, funktionieren nur, wenn Sie sie bei jedem Kauf befüllen.
- Jeder erstattete Kauf, der seinen Zugang behält, ist Rechenleistung, Speicher und API-Ausgaben, die Sie weiter für Geld zahlen, das Sie bereits zurückgegeben haben, und ein Serienerstatter vervielfacht diese Rechnung mit Absicht.
Eine einzelne Rückerstattung gehört zum Geschäft dazu. Dasselbe Konto, das ein viertes Mal erstattet, nachdem es jedes Mal genutzt hat, was es gekauft hat, ist Rückerstattungsmissbrauch, und es ist ein Muster, das Sie nur erkennen können, wenn jeder Kauf eine Identität trägt, die Sie kontrollieren. Apple und Google geben Ihnen beide diese Identität, und beide geben Ihnen ein schmales Fenster, um sie dem Store vorzulegen, bevor eine Rückerstattung oder Rückbuchung entschieden wird. Verpassen Sie das Fenster oder hängen Sie die Identität nie an, dann sieht ein Serienerstatter genauso aus wie ein erstmals unzufriedener Kunde. So unterscheiden Sie die beiden, und so viel ist der Unterschied in Geld wert.
Warum Rückerstattungsmissbrauch ein Identitätsproblem ist, kein Rückerstattungsproblem
Der Store entscheidet über die Rückerstattung. Sie können einen Kunden nicht davon abhalten zu fragen, und bei den meisten Abläufen können Sie den Store nicht davon abhalten, sie zu gewähren. Was Sie tun können, ist zu entscheiden, ob ein bestimmtes Konto dies schon einmal getan hat und ob der gekaufte Inhalt tatsächlich geliefert und genutzt wurde. Beides sind Fragen der Identität: welcher Ihrer Nutzer hinter dieser Transaktion steckt und wie seine Vorgeschichte aussieht. Wenn Ihre Käufe keine stabile Kennung zurück zu Ihren eigenen Nutzerdaten tragen, können Sie keine der beiden Fragen beantworten, und jede Rückerstattung trifft ohne Kontext ein.
Das ist die eigentliche Lücke. Die Mechanik der Rückerstattung ist durch Richtlinien festgelegt. Die Beweise, die Sie ihr beibringen, gehören ganz Ihnen, und sie beginnen im Moment des Kaufs, nicht im Moment der Rückerstattung.
Die zwei Fenster, in denen Beweise das Ergebnis verändern
Es gibt genau zwei Abläufe, in denen alles, was Sie senden, eine Entscheidung bewegen kann. Apples CONSUMPTION_REQUEST wird ausgelöst, wenn ein Kunde eine Rückerstattung für ein Consumable oder ein automatisch verlängerbares Abonnement verlangt, und Sie haben 12 hours, um zu antworten. Google Plays Rückbuchungsprüfung wird ausgelöst, wenn ein Nutzer eine Abbuchung bei seiner Bank anficht, und Sie haben 24 hours, um über die Review Refund API zu reagieren. Jede andere Rückerstattung, die 48-hour-Selbstbedienungsrückerstattung von Play, eine vom Support gewährte Rückerstattung, eine automatische Rückerstattung bei nicht bestätigtem Kauf, wird ohne Sie entschieden.
Beide Beweiskanäle sind weit stärker, wenn die Transaktion Ihre Kennung bereits trägt. Apples Verbrauchsinformationen können den appAccountToken zusammen mit der Historie und den Ausgaben des Kontos enthalten, und Googles Prüfung kann sich auf die obfuscated account ID stützen, die es seit dem Kauf beobachtet. Ein Konto ohne Kennung ist ein Konto ohne Historie, die man einreichen könnte.
Die zwei Identitätsfelder im direkten Vergleich
Apple und Google haben dasselbe Problem auf nahezu dieselbe Weise gelöst, mit unterschiedlichen Namen und unterschiedlichen Regeln. Beide erlauben es Ihnen, einen Kauf mit einem Wert zu versehen, der auf Ihre eigene Nutzerdatensatz zurückweist. Keines ist standardmäßig aktiv. Beide sind wertlos, wenn Sie sie nicht zum Kaufzeitpunkt setzen.
Apple: appAccountToken
appAccountToken ist eine UUID, die Sie erzeugen und übergeben, wenn ein Kauf beginnt. StoreKit verknüpft sie mit der daraus entstehenden Transaktion, und sie erscheint in den Transaktionsdaten, die Ihr Server verifiziert, sowie in den Verbrauchsinformationen, die Sie während eines CONSUMPTION_REQUEST zurücksenden. Weil es Ihr Wert ist, ordnet er eine Store-Transaktion direkt dem Konto in Ihrer Datenbank zu, ohne dass eine E-Mail-Adresse oder ein Name beteiligt ist. Es muss eine echte UUID sein, und alles andere wird abgelehnt. Apple hat später einen Set App Account Token-Endpunkt hinzugefügt, der den Token an vergangene Transaktionen anhängen oder dort aktualisieren kann, einschließlich Käufen außerhalb Ihrer App wie dem Einlösen von Angebotscodes.
Google Play: die obfuscated account ID
Googles Entsprechung ist setObfuscatedAccountId, eine optionale Zeichenkette, die an das kaufende Konto gebunden ist. Googles eigene Dokumentation ist deutlich über ihren Zweck: Google Play nutzt sie, um auffällige Aktivität zu erkennen, etwa viele Geräte, die innerhalb kurzer Zeit über dasselbe Konto Käufe tätigen, und um manche betrügerischen Transaktionen zu blockieren, bevor sie abgeschlossen werden. Sie ist auf 64 characters begrenzt und darf keine Klartext-Personendaten enthalten. Speichern Sie dort eine rohe E-Mail-Adresse, blockiert Google den Kauf umgehend, denn das Feld erwartet einen verschlüsselten Wert oder einen Einweg-Hash. Ein verwandtes Feld, setObfuscatedProfileId, existiert für Apps, in denen ein Konto mehrere Profile umfasst.
| Feld | Store | Typ und Grenze | Gesetzt von | Standard | Was der Store damit macht |
|---|---|---|---|---|---|
| appAccountToken | Apple | UUID | Ihnen, beim Kauf | Nicht gesetzt | Bindet die Transaktion an Ihren Nutzer, wird in Transaktions- und Verbrauchsdaten zurückgegeben |
| obfuscatedAccountId | Google Play | Gehashte Zeichenkette, max. 64 Zeichen | Ihnen, beim Kauf | Nicht gesetzt | Erkennt auffällige Aktivität und blockiert manchen Betrug vor Abschluss |
Was eine Rückerstattung von einem Serientäter tatsächlich kostet
Die Rückerstattung selbst ist der kleinste Teil der Rechnung. Wenn ein Store eine Rückerstattung gewährt, geben Sie den Umsatz zurück, und so viel ist im Hauptbuch sichtbar. Nicht auf der Rückerstattungszeile steht alles, was Sie für die Auslieferung des Produkts ausgegeben haben, das nun kostenlos ist.
Stellen Sie sich ein Consumable vor, das echte Arbeit auslöst: eine Bildgenerierung, eine Reihe von API-Aufrufen an einen Modellanbieter, einen Videoexport, eine Auszahlung an einen Creator. Sie haben für diese Rechenleistung in dem Moment bezahlt, in dem der Kunde sie genutzt hat. Die Rückerstattung holt den Preis zurück, aber sie holt nicht die Rechnung des Anbieters zurück. Ein Serienerstatter ist jemand, der gelernt hat, dass der Inhalt die Rückerstattung überlebt, also durchläuft er die Schleife erneut: kaufen, verbrauchen, erstatten, wiederholen. In jedem Zyklus tragen Sie die Auslieferungskosten ein zweites Mal.
Dann gibt es die eigene Kostenverschiebung des Stores. Ab August 3 2026 verlagert Google Play den Kaufpreis und die Rückbuchungsgebühren der Bank auf den Entwickler, für Bestellungen nach diesem Datum. Eine Rückbuchung, die früher überwiegend Googles Problem war, wird zu Ihrem Umsatz plus einer Gebühr, und ein Wiederholungstäter erhöht diese Zahl jedes Mal. Die Identitätsfelder sind es, die Ihnen erlauben, der Review Refund API die Beweise zu liefern, um einen unberechtigten Streitfall innerhalb des Fensters von 24 hours anzufechten.
Google formuliert das Ausmaß klar: Es gibt an, im Jahr 2022 über $2 billion an betrügerischen und missbräuchlichen Transaktionen blockiert zu haben. Diese Zahl existiert, weil die Signale, die obfuscated account ID darunter, befüllt waren. Eine App, die Käufe mit leeren Identitätsfeldern ausliefert, verzichtet auf diesen Schutz.

Wie Sie Wiederholungserstatter erkennen, bevor der Store entscheidet
Markieren Sie jeden Kauf mit einer Identität, die Ihnen gehört
Setzen Sie appAccountToken bei jedem StoreKit-Kauf und setObfuscatedAccountId bei jedem Play Billing-Kauf, beide aus Ihrem eigenen Nutzerdatensatz erzeugt. Bei Apple verwenden Sie eine echte UUID, die dem Konto zugeordnet ist. Bei Google hashen Sie den Kontoschlüssel, damit keine Personendaten im Klartext übermittelt werden. Tun Sie das zum Kaufzeitpunkt, denn bei Google ist es der eine Schritt, den Sie später nicht mehr nachholen können.
Führen Sie ein Hauptbuch, das auf dieser Identität aufsetzt
Speichern Sie jeden Kauf, jede Lieferung, jedes Verbrauchsereignis und jede Rückerstattung gegen die Kennung. Wenn ein CONSUMPTION_REQUEST oder eine Rückbuchungsprüfung eintrifft, ist die vollständige Historie des Kontos, frühere Rückerstattungen eingeschlossen, nur einen Abruf entfernt. Apples Verbrauchsinformationen haben genau dafür ausdrückliche Felder: consumptionStatus, deliveryStatus, playTime, accountTenure, lifetimeDollarsPurchased und Ihre refundPreference.
Lesen Sie voidedReason und leiten Sie Missbraucher anders
Wenn ein Google-Kauf annulliert wird, sagt Ihnen das Feld voidedReason warum, und friendly_fraud sowie fraud sind eigene Werte, getrennt von einer gewöhnlichen remorse-Rückerstattung. Leiten Sie diese in eine Prüfschlange und eine strengere Richtlinie, nicht auf denselben automatischen Pfad wie eine erstmalige Rückerstattung. Googles eigene Empfehlung ist ein Mehrfachverstoß-Modell: einen Ersttäter verwarnen, bei Wiederholungstätern härter durchgreifen und für ein Konto, das immer weitermacht, Käufe deaktivieren.
Beantworten Sie das Fenster jedes Mal
Die Beweise zählen nur innerhalb der zwei Fenster. Automatisieren Sie die CONSUMPTION_REQUEST-Antwort, sodass sie deutlich innerhalb von 12 hours abgeht, und die Rückbuchungsprüfung, sodass sie innerhalb von 24 hours abgeht. Eine makellose Historie, die Sie zu spät einreichen, ist eine Historie, die der Store nie liest.
| Signal, das Sie erkennen wollen | Wo es lebt | Das Feld oder der Ablauf, der es sichtbar macht |
|---|---|---|
| Dasselbe Konto, viele Geräte, kurzes Zeitfenster | Google Play | Erkennung auffälliger Aktivität über die obfuscated account ID |
| Dieses Konto hat schon einmal erstattet | Ihr Hauptbuch | Historie, aufgesetzt auf appAccountToken oder obfuscated account ID |
| Inhalt wurde geliefert und verbraucht | Apple | deliveryStatus und consumptionStatus in den Verbrauchsinformationen |
| Ein Streitfall ist in Wahrheit Erstpartei-Betrug | Google Play | voidedReason-Wert friendly_fraud |
Was die Stores für Sie tun und was nicht
Es lohnt sich, bei der Arbeitsteilung genau zu sein, denn man nimmt leicht an, die Stores kümmerten sich um Missbrauch, und sie sagen einem meist nicht, wenn sie es nicht tun. Google nutzt die obfuscated account ID aktiv, um manchen Betrug zu blockieren, bevor ein Kauf abgeschlossen wird, und seine Systeme fangen einen großen Teil auf Plattformebene ab. Apple entscheidet jede Rückerstattung selbst und behandelt Ihre Verbrauchsinformationen als Eingabe, niemals als Stimme. Kein Store führt Ihre Missbraucherliste für Sie, zieht ein erstattetes Consumable von Ihrem Guthaben ab oder sagt einem Wiederholungserstatter in Ihrem Namen nein. Die Identität liegt am Rand beim Store und überall sonst bei Ihnen.
Das ist derselbe Grund, warum RefundHalt alles auf die Kaufidentität aufsetzt: eine Rückerstattung, eine Rückbuchungsprüfung und eine Verbrauchsanfrage für dasselbe Konto laufen zu einer Historie zusammen, sodass ein Serienerstatter als Muster auffällt, sobald er sich das erste Mal wiederholt, nicht erst nach der vierten Rechnung, die Sie bereits bezahlt haben.
Häufig gestellte Fragen
- Was ist Rückerstattungsmissbrauch in einer App?
- Rückerstattungsmissbrauch bedeutet, dass ein Kunde wiederholt Rückerstattungen verlangt, nachdem er das Gekaufte erhalten und genutzt hat, sodass er den Inhalt oder Vorteil behält und zugleich das Geld zurückbekommt. In App-Stores zeigt sich das meist als dasselbe Konto, das Consumables oder Abonnements immer wieder erstattet, oder als friendly fraud, bei dem eine rechtmäßige Abbuchung bei der Bank angefochten wird.
- Wie verknüpfe ich einen In-App-Kauf mit einem bestimmten Nutzer?
- Bei Apple erzeugen Sie eine UUID und übergeben sie als appAccountToken, wenn der Kauf startet, und StoreKit bindet sie an die Transaktion und gibt sie in Transaktions- und Verbrauchsdaten zurück. Bei Google Play rufen Sie setObfuscatedAccountId mit einem gehashten Wert auf, der an das Konto gebunden ist. Beide ordnen eine Store-Transaktion Ihrem eigenen Nutzerdatensatz zu, ohne Personendaten preiszugeben.
- Können Apple oder Google mir sagen, dass ein Konto ein Wiederholungserstatter ist?
- Nicht direkt. Google nutzt die obfuscated account ID, um auffällige Aktivität zu erkennen und manchen Betrug vor dem Kauf zu blockieren, und Apple lässt Sie während einer Verbrauchsanfrage die Kontohistorie einreichen, aber kein Store händigt Ihnen eine Liste von Wiederholungserstattern aus. Diese bauen Sie selbst aus Ihrem eigenen Hauptbuch, aufgesetzt auf die Identitätsfelder.
- Warum blockiert Google meinen Kauf, wenn ich die Konto-ID setze?
- Weil die obfuscated account ID keine Klartext-Personendaten enthalten darf. Etwas wie eine rohe E-Mail-Adresse darin zu speichern, führt dazu, dass Google Play den Kauf blockiert. Verwenden Sie einen verschlüsselten Wert oder einen Einweg-Hash und bleiben Sie innerhalb der Grenze von 64 characters.
- Stoppt das Anfechten von Rückerstattungen über die Verbrauchsanfrage den Missbrauch?
- Es kann ihn verringern. Der CONSUMPTION_REQUEST ist einer von nur zwei Abläufen, in denen Ihre Beweise den Store erreichen, bevor er entscheidet, und Kontohistorie plus Liefer- und Verbrauchsdaten helfen Apple, Rückgabemissbrauch und friendly fraud zu erkennen. Es ist jedoch keine Sperre. Apple entscheidet weiterhin selbst, und Missbrauch, der über nicht anfechtbare Abläufe eintrifft, bleibt unberührt.
Quellen und weiterführende Informationen
- Apple: appAccountToken (App Store Server API)
- Apple: ConsumptionRequest (App Store Server API)
- Android: BillingFlowParams.Builder.setObfuscatedAccountId
- Android: Fight fraud and abuse (Play Billing security)
- Google Play Developer API: Voided Purchases
- Google Play Billing: Provide refund and chargeback suggestions (Review Refund API)
- Android Developers Blog: Play Commerce prevented over $2 billion in fraudulent and abusive transactions in 2022
- 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
The refunds you cannot contest: what Apple and Google decide without asking you
Only two refund flows ever ask for your evidence: Apple's consumption request and Google Play's chargeback review. Everything else, the 48-hour Play refund, support refunds, voided purchases, unacknowledged trials, is decided without you. Here is the full map, what you can prevent, and what you can only record.
Apple's CONSUMPTION_REQUEST, explained: the 12 hours that decide your refund
When a customer asks Apple for a refund, Apple asks you first. Here's exactly what the CONSUMPTION_REQUEST notification contains, what Apple expects back, how to answer one end to end, and why most developers silently forfeit.