De chargeback-beoordeling van Google Play geeft je 24 uur om terug te vechten, dit stuur je
Wanneer een bank een Google Play-betaling terugboekt, stuurt Google een PendingRefundReviewNotification naar je server en start een klok van 24 uur. Beantwoord die via de ReviewRefund API met een terugbetalingsvoorkeur en echt verbruiksbewijs, of het geschil wordt zonder jou beslist. Hier is de hele flow, veld voor veld.

Belangrijkste inzichten
- Een Google Play-chargeback-beoordeling begint wanneer de bank van een klant een betaling terugdraait en Google Play een PendingRefundReviewNotification naar je server stuurt. Vanaf die melding heb je 24 uur om te antwoorden met de ReviewRefund API.
- De chargeback-beoordeling is de enige Android-terugbetalingsflow die de ontwikkelaar om bewijs vraagt. De zelfbedieningsterugbetaling binnen 48 uur, terugbetalingen via support en geannuleerde aankopen worden allemaal zonder jou beslist.
- Je antwoordt door orders.reviewrefund aan te roepen met een refundPreference van APPROVE, DECLINE of NEUTRAL, plus bewijs: een consumptionPercentageMilliunits-waarde en een optionele lijst met verbruiksgebeurtenissen.
- Google Play registreert alleen je eerste ReviewRefund-aanroep voor een bepaalde melding. Elke latere aanroep wordt genegeerd en geeft toch OK terug, dus je eerste antwoord moet volledig en correct zijn.
- De melding bevat een pendingRefundToken en een orderId, en de enige terugbetalingsreden die een openstaande beoordeling ondersteunt is CHARGEBACK, die binnenkomt als code 7.
- consumptionPercentageMilliunits wordt gemeten in milli-eenheden, dus 100000 betekent dat de klant 100 procent van wat hij kocht heeft gebruikt. Zo vertel je Google Play dat het product volledig is geleverd.
- Vanaf 3 augustus 2026 dragen ontwikkelaars bij elk verloren geschil de aankoopprijs minus de servicekosten van Play plus de chargeback-kosten van de bank, dus een onbeantwoorde chargeback-beoordeling is een directe last op je eigen omzet.
Wanneer de bank van een klant een Google Play-betaling terugboekt, betaalt Google Play niet zomaar terug en gaat verder. Het stuurt een PendingRefundReviewNotification naar je server en start een klok van 24 uur. Beantwoord die melding via de ReviewRefund API met een terugbetalingsvoorkeur en bewijs van wat de klant daadwerkelijk gebruikte, en Google Play verwerkt jouw input in hoe het de chargeback aanvecht. Blijf stil, en het geschil wordt beslecht zonder een woord van de enige partij die weet hoe het product is verbruikt.
De Google Play-chargeback-beoordeling is de enige Android-terugbetalingsflow die jou om bewijs vraagt, de directe tegenhanger van Apple's CONSUMPTION_REQUEST. Het is nu belangrijker dan vroeger. Vanaf 3 augustus 2026 verschuift Google Play de kosten van chargebacks naar ontwikkelaars, dus een geschil dat je niet beantwoordt komt uit jouw account, niet dat van Google. Hier staat precies wat de melding bevat, wat je terugstuurt, welke velden je bewijs vormen, en waar het zwijgen geld wordt.
Wat een Google Play-chargeback-beoordeling werkelijk is
Een chargeback is geen terugbetalingsverzoek. De klant gaat naar zijn bank of kaartnetwerk en betwist de betaling, en de bank trekt het geld terug. Google Play handelt de meeste hiervan zelf af. Voor een deel opent het een beoordeling en vraagt eerst jou, omdat jij informatie hebt die Google niet heeft: of de bestelling is geleverd en hoeveel de klant ervan heeft verbruikt. Die beoordeling is de flow achter de ReviewRefund API.
Dit is de ene plek in het Android-terugbetalingssysteem waar jouw bewijs de uitkomst verandert. Elk ander Google Play-terugbetalingspad loopt zonder jou. Een klant kan binnen 48 uur na aankoop zelf een terugbetaling regelen, support kan er een verlenen, en een niet-bevestigde aankoop wordt automatisch terugbetaald, allemaal beslist door Google. De chargeback-beoordeling is de uitzondering, en het is de moeite waard om die te behandelen als het enige terugbetalingsgesprek waaraan je echt kunt deelnemen.
Het is de Android-versie van Apple's bewijsvenster
Twee stores, twee flows die een ontwikkelaar om bewijs vragen, en dat is de hele lijst. Apple stuurt een CONSUMPTION_REQUEST en geeft je 12 uur om te antwoorden met Send Consumption Information. Google Play stuurt een PendingRefundReviewNotification en geeft je 24 uur om te antwoorden met orders.reviewrefund. De mechaniek verschilt, maar de les is identiek: wanneer de store vraagt wat de klant gebruikte, is een nauwkeurig antwoord het verschil tussen de verkoop behouden en die teruggeven.
Eén verschil telt in de praktijk. Apple's verbruiksgegevens zijn vijf numerieke velden en niets anders. Het bewijs van Google Play is rijker. Je kunt een verbruikspercentage sturen plus een lijst met individuele gebruiksgebeurtenissen, elk met een tijdstempel, een accountidentificatie en zelfs een IP-adres en grove location. Google Play geeft je meer ruimte om de levering te beschrijven, wat meer ruimte betekent om overtuigend te zijn.
De klok van 24 uur en hoe de melding je bereikt
De beoordeling komt binnen als een Real Time Developer Notification op je Cloud Pub/Sub-topic, hetzelfde kanaal dat je abonnements- en aankoopgebeurtenissen levert. Het bericht is een base64-gecodeerde payload met daarin een pendingRefundReviewNotification-object. De klok start wanneer die melding wordt gepubliceerd, niet wanneer je die toevallig leest, dus een consumer die eenmaal per dag pollt is een consumer die geschillen misloopt.
PendingRefundReviewNotification, veld voor veld
De melding is klein. Ze vertelt je welke bestelling wordt beoordeeld, geeft je het token dat je moet teruggeven, en noemt de reden. Hier is elk veld dat ze bevat.
| Veld | Type | Wat het betekent |
|---|---|---|
| version | string | Meldingsversie, begint bij "1.0" |
| pendingRefundToken | string | Het token dat deze beoordeling identificeert. Je geeft het terug in de ReviewRefund-aanroep |
| orderId | string | De bestelling in beoordeling, bijvoorbeeld GPA.1234-5678-9012-34567 |
| refundReason | int | Waarom de terugbetaling is aangevraagd. Een openstaande beoordeling draagt altijd alleen CHARGEBACK, code 7 |
| obfuscatedAccountId | string | De account-id die je bij aankoop hebt ingesteld, als je die hebt ingesteld |
| obfuscatedProfileId | string | De profiel-id die je bij aankoop hebt ingesteld, als je die hebt ingesteld |
Alleen een chargeback opent een openstaande beoordeling
De refundReason bij een openstaande beoordeling is altijd CHARGEBACK, geleverd als het gehele getal 7. Er bestaan andere terugbetalingsredenen in de wereld van Google Play, maar die bereiken je niet via deze flow, omdat je er geen inspraak in hebt. Als je een PendingRefundReviewNotification ziet, heeft een bank een betaling teruggedraaid en beslist Google Play of het die aanvecht. Dat is de enige trigger.
Wat je terugstuurt via de ReviewRefund API
Je reageert met een enkele POST naar orders.reviewrefund. Het volledige pad is POST https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/orders/{orderId}:reviewrefund, geautoriseerd met de scope https://www.googleapis.com/auth/androidpublisher, dezelfde OAuth-scope die je Play Developer API-integratie al gebruikt. Een succes geeft een lege body terug met HTTP 200.
In de body leeft je zaak. Je echoot het pendingRefundToken uit de melding, geeft een terugbetalingsvoorkeur op, en voegt verbruiksbewijs toe.
Je terugbetalingsvoorkeur is een aanbeveling, geen oordeel
Het veld refundPreference neemt een van drie waarden aan, en het is advies aan Google Play, geen definitieve beslissing. Google houdt de uitkomst in handen. Maar het is advies dat wordt gestaafd door gegevens die Google zelf niet kan zien, dus het legt gewicht in de schaal.
| refundPreference | Betekenis |
|---|---|
| APPROVE | Je geeft er de voorkeur aan dat Google Play de volledige terugbetaling verleent |
| DECLINE | Je geeft er de voorkeur aan dat Google Play de terugbetaling weigert |
| NEUTRAL | Je hebt geen voorkeur en laat het aan Google Play over |
| REFUND_PREFERENCE_UNSPECIFIED | Standaard-sentinel, niet gebruikt in een echt antwoord |
De bewijsvelden die een DECLINE ondersteunen
Een kale DECLINE is een bewering zonder bewijs. De verbruiksvelden zijn het bewijs. consumptionPercentageMilliunits is een geheel getal in milli-eenheden, dus 100000 zegt dat de klant 100 procent van wat hij kocht heeft verbruikt en 50000 zegt de helft. consumptionUsageEvents is een optionele array waarin elke gebeurtenis een obfuscatedAccountId, een obfuscatedProfileId, een consumptionTime, een ipAddress, een consumptionItemDescription en een grove location kan dragen. sampleContentProvided is een boolean voor het geval dat je de klant een gratis staal van de betaalde inhoud hebt gegeven. Samen zeggen ze, in het eigen schema van Google Play, dat het product is geleverd en gebruikt.

Je eerste aanroep is je enige aanroep
Google Play registreert de eerste ReviewRefund-aanroep die je tegen een melding doet en negeert elke aanroep daarna, terwijl het toch een OK-status teruggeeft. Er is geen concept en geen herziening. Als je eerste antwoord een haastige NEUTRAL zonder bewijs is omdat je pijplijn niet klaar was, is dat het antwoord in het dossier, en de latere aanroep met de volledige verbruiksgeschiedenis wordt stilzwijgend weggegooid. Bouw het volledige antwoord op voordat je iets verstuurt.
Wat de beoordeling je in geld kost
Jarenlang kostte een verloren Google Play-chargeback de ontwikkelaar de verkoop en weinig meer, omdat Google Play de downstream-kosten opving. Dat eindigt op 3 augustus 2026. Voor bestellingen na die datum deelt Google Play de chargeback-kosten met ontwikkelaars, en het aandeel van de ontwikkelaar is de aankoopprijs minus de servicekosten van Play, plus de bijbehorende chargeback-kosten die de financiële instelling in rekening brengt. Google Play blijft het servicekostendeel dekken. De bankkosten zijn nieuw gewicht aan jouw kant van de balans.
De terugbetaling is nooit het echte getal
Het geschil geeft de betaling van de klant terug, maar de betaling was nooit je enige kost. Een gegenereerde video, een reeks model-API-aanroepen, een uitbetaling aan een maker, opslag die je hebt ingericht, al dat geld verliet je account op het moment dat de bestelling werd geleverd, en niets ervan komt terug met de chargeback. Tel daar nu de chargeback-kosten van de bank bovenop. Je betaalt de leveranciersfactuur, betaalt de verkoop terug, en dekt de geschilkosten, drie kosten voor één bestelling die je met bewijs had kunnen verdedigen.
De schaal waartegen Google vecht
Google Play zegt dat het in 2025 US$3.4B aan fraude en misbruik heeft geblokkeerd en tot in 2026 fraudedetectie toevoegt. De wijziging in de kostendeling maakt deel uit van dezelfde beweging: geef ontwikkelaars een reden om bewijs in het systeem te voeden, en het systeem betwist meer van de onrechtmatige geschillen. De ReviewRefund API is hoe jouw bewijs binnenkomt. Een leeg antwoord is een stem om een friendly-fraud-chargeback op jouw kosten te laten staan.
Hoe je klaar bent voordat de melding binnenkomt
Het venster van 24 uur is niet het probleem. Het probleem is dat het bewijs dat je nodig hebt moet bestaan voor het geschil, vastgelegd op het moment van aankoop en verbruik, niet gereconstrueerd nadat een token opduikt. Een team dat pas gegevens gaat verzamelen wanneer de melding binnenkomt, heeft al verloren.
Koppel identiteit op het moment van aankoop
Stel bij elke aankoop een obfuscatedAccountId in met setObfuscatedAccountId, zodat de account-id van de melding rechtstreeks verwijst naar een gebruiker in je systeem. Houd het een hash, 64 tekens of minder, nooit e-mail in platte tekst of andere persoonsgegevens, want identificatoren in platte tekst zorgen ervoor dat aankopen worden geblokkeerd. Zonder die koppeling kun je het pendingRefundToken niet verbinden met een echte gebruiksgeschiedenis, en heeft je DECLINE niets erachter.
Log verbruik terwijl het gebeurt
Leg vast wat een betaalde bestelling heeft geleverd, wanneer en aan wie, in een vorm die je op verzoek kunt omzetten in consumptionPercentageMilliunits en consumptionUsageEvents.
- Voorzie elke verbruikseenheid van een tijdstempel, zodat consumptionTime bij elke gebeurtenis echt is, niet geschat.
- Volg de levering ten opzichte van de aankoop, zodat je met vertrouwen een verbruikspercentage kunt opgeven in plaats van te gokken.
- Houd de account- en profielidentificatoren naast het gebruik, zodat een gebeurtenis in één query wordt samengesteld wanneer het token binnenkomt.
- Leg het verzoek-IP en de grove location vast als je die hebt, aangezien Google Play beide als gebeurtenisvelden accepteert.
Antwoord binnen het venster, automatisch
Een venster van 24 uur is comfortabel voor een machine en meedogenloos voor een mens die wakker en oplettend moet zijn. Het antwoord moet automatisch zijn: melding binnen, account opgezocht, verbruik samengesteld, één ReviewRefund-aanroep eruit, allemaal zonder een persoon in de lus. Dat is het deel dat RefundHalt voor je uitvoert. Wij luisteren naar de PendingRefundReviewNotification, koppelen de bestelling aan het gebruik dat we al voor dat account bijhouden, en beantwoorden orders.reviewrefund binnen het venster met een terugbetalingsvoorkeur en echt verbruiksbewijs. Het token is de draad, en het bewijs is de zaak. Heb beide klaar en het ene terugbetalingsgesprek waaraan je mag deelnemen is er een dat je kunt winnen.
Veelgestelde vragen
- Wat is een Google Play-chargeback-beoordeling?
- Een Google Play-chargeback-beoordeling is de flow die Google Play gebruikt om een ontwikkelaar om bewijs te vragen voordat het over een betwiste betaling beslist. Wanneer de bank van een klant een betaling terugdraait, kan Google Play een PendingRefundReviewNotification naar je server sturen en je 24 uur geven om te reageren met de ReviewRefund API, met een terugbetalingsvoorkeur en bewijs van hoeveel de klant heeft verbruikt. Het is het enige Android-terugbetalingspad waar jouw input de uitkomst beïnvloedt.
- Hoe lang heb ik om te reageren op een Google Play-chargeback-melding?
- 24 uur. Google Play stuurt een PendingRefundReviewNotification als een Real Time Developer Notification, en je moet de ReviewRefund API binnen 24 uur na die melding aanroepen. De klok start wanneer de melding wordt gepubliceerd op je Cloud Pub/Sub-topic, dus je consumer moet in realtime luisteren in plaats van volgens een schema te pollen.
- Wat kan ik sturen met de orders.reviewrefund API?
- Je stuurt het pendingRefundToken uit de melding, een refundPreference van APPROVE, DECLINE of NEUTRAL, en verbruiksbewijs. De bewijsvelden zijn consumptionPercentageMilliunits, een geheel getal in milli-eenheden waarbij 100000 100 procent verbruikt betekent, een optionele consumptionUsageEvents-array met per gebeurtenis een tijdstempel, account-id, IP-adres, beschrijving en location, en een sampleContentProvided-boolean. Een geslaagde aanroep geeft een lege body terug met HTTP 200.
- Kan ik mijn ReviewRefund-antwoord bijwerken nadat ik het heb verstuurd?
- Nee. Google Play registreert je eerste ReviewRefund-aanroep voor een bepaalde melding en negeert elke latere aanroep, terwijl het toch een OK-status teruggeeft. Er is geen concept of herziening, dus je eerste antwoord moet volledig zijn. Stel de terugbetalingsvoorkeur en al het verbruiksbewijs samen voordat je de enkele aanroep doet.
- Hoeveel kost een verloren Google Play-chargeback na 3 augustus 2026?
- Voor bestellingen na 3 augustus 2026 draagt de ontwikkelaar de aankoopprijs minus de servicekosten van Play, plus de chargeback-kosten die de financiële instelling in rekening brengt. Google Play blijft het servicekostendeel dekken. Dat komt bovenop de rekenkracht, API-aanroepen, opslag en uitbetalingen die je al hebt uitgegeven om de bestelling te leveren, waarvan de terugbetaling niets teruggeeft.
- Welke terugbetalingsredenen activeren een openstaande-beoordelingsmelding?
- Alleen CHARGEBACK, die in de melding binnenkomt als refundReason code 7. Andere Google Play-terugbetalingen, zoals het zelfbedieningsvenster van 48 uur, terugbetalingen via support en geannuleerde aankopen, worden zonder de ontwikkelaar beslist en openen geen openstaande beoordeling. Als je een PendingRefundReviewNotification ontvangt, heeft een bank een betaling teruggedraaid en beslist Google Play of het die aanvecht.
Bronnen en verder lezen
- Android Developers: Help Google dispute chargebacks
- Google Play Developer API: orders.reviewrefund
- Android Developers: Real-time developer notifications reference
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- Google Play Help: Refund policies for apps, games, and in-app purchases
RefundHalt
De terugbetalingsautopiloot voor de App Store en Google Play
Lees verder
Koppel een appAccountToken aan elke App Store-aankoop, anders kun je de terugbetaling niet verdedigen
Apple stuurt je server een CONSUMPTION_REQUEST wanneer een klant om een terugbetaling vraagt, maar de transactie zegt nooit wie diegene is. appAccountToken is de UUID die een aankoop terugkoppelt aan je gebruiker. Stel hem in en je kunt Apple met echte gegevens antwoorden. Sla hem over en je gokt.
Bevestig je een Google Play aankoop niet binnen drie dagen, dan geeft Google het geld terug, en dit is wat dat je kost
Google Play geeft automatisch geld terug en trekt elke aankoop in die je server niet binnen drie dagen bevestigt. Het is een integratiefout, geen klantbeslissing, en volledig te voorkomen. Hier is de exacte regel, waarom die afgaat, en wat elke verloren verkoop je echt kost.