Alle artikelen
Deep dive8 min leestijd

Een terugbetaling van een betaalde app bereikt je server nooit, dus de app moet het zelf opmerken

Terugbetalingen van vooraf betaalde apps omzeilen elke melding waar je server naar luistert. Google geeft kopers twee uur om te retourneren en verwijdert de app, Apple kan onder jouw overeenkomst binnen 90 dagen terugbetalen, en geen van beide vraagt om bewijs. Dit is wat elke store je vertelt, wat het kost en hoe je het in de app controleert.

Een smartphone op een houten bureau naast een gescheurd aankoopbewijs van een store en een paar munten, als illustratie van een terugbetaling van een betaalde app

Belangrijkste inzichten

  • Een terugbetaling van een betaalde app gaat over de prijs van de app-download zelf, niet over een in-app-aankoop, en Apple noch Google documenteert er een servermelding voor.
  • Volgens de Play Console-help van Google heeft een koper na de aankoop van een betaalde app tot twee uur om die te retourneren voor een volledige terugbetaling, en kan hij een bepaalde app maar één keer retourneren.
  • Het terugbetalingsbeleid van Google Play zegt dat de app als onderdeel van de terugbetaling wordt verwijderd, en dat een koper die dezelfde app opnieuw koopt geen tweede terugbetaling krijgt.
  • Het REFUND-type van Apples App Store Server Notifications V2 dekt verbruiksartikelen, niet-verbruiksartikelen, automatisch verlengbare abonnementen en niet-verlengbare abonnementen. De aankoop van de app staat niet op die lijst.
  • Apples Developer Program License Agreement, Schedule 2 artikel 6.3, laat Apple een koper terugbetalen die binnen 90 dagen na de download annuleert, en de ontwikkelaar vergoedt dat bedrag aan Apple.
  • Apples StoreKit-documentatie vermeldt een revocationDate op AppTransaction, het ondertekende record van de app-aankoop, dat een app op het apparaat kan controleren.
  • Noch CONSUMPTION_REQUEST noch orders.reviewrefund van Google Play is gedocumenteerd voor aankopen van app-downloads, dus over een terugbetaling van een betaalde app wordt beslist zonder het bewijs van de ontwikkelaar.

Vooraf betaalde apps worden terugbetaald via een zijdeur waar de meeste terugbetalingstools nooit naar kijken. Als een koper de app zelf retourneert, en niet iets wat hij erin heeft gekocht, halen Apple en Google het geld terug van je uitbetaling zonder je server ook maar één melding te sturen. Google verwijdert de app tenminste. Op iOS melden ontwikkelaars op Apples eigen forums dat kopers de app na de terugbetaling gewoon blijven gebruiken. Verkoop je een betaalde app, dan is de terugbetaling van de app de enige terugbetaling die je alleen ooit ziet als negatieve regel in een rapport, tenzij de app er op het apparaat op controleert.

Regels voor terugbetaling van betaalde apps op Google Play en in de App Store

Beide stores behandelen de download-aankoop als een apart product met eigen regels. Dit zegt de documentatie van elke store.

RegelGoogle PlayApp Store
Snel zelf retournerenTot twee uur na aankoop, volledige terugbetalingNiets gedocumenteerd
Langere aanvraagtermijnKoper kan binnen 48 uur een verzoek indienen, daarna contact opnemen met de ontwikkelaarApple kan binnen 90 dagen na download terugbetalen, onder Schedule 2 van de ontwikkelaarsovereenkomst
Hoe vaakEén keer per app. Een herhaalde aankoop kan niet opnieuw worden terugbetaaldNiet gedocumenteerd
Wat er met de app gebeurtVerwijderd als onderdeel van de terugbetalingNiet gedocumenteerd. Ontwikkelaars melden dat kopers na terugbetaling toegang houden
Ontwikkelaar kan terugbetalenJa, alleen volledige terugbetalingen, via Play ConsoleNee
Servermelding aan jouNiets gedocumenteerdNiets gedocumenteerd
Verzoek om bewijs aan jouNiets gedocumenteerdNiets gedocumenteerd

Hoe de retour binnen twee uur op Google Play werkt

De Play Console-help van Google is er duidelijk over: na de aankoop van een betaalde app heeft een gebruiker tot twee uur om die te retourneren voor een volledige terugbetaling, en hij kan een app maar één keer retourneren. Het terugbetalingsbeleid voor consumenten voegt toe dat een koper binnen 48 uur, afhankelijk van de aankoop, een terugbetaling kan krijgen, dat de app als onderdeel van de terugbetaling wordt verwijderd, en dat iemand die dezelfde app opnieuw koopt er geen terugbetaling voor krijgt. Na 48 uur verwijst Google kopers naar de ontwikkelaar.

Hoe Apple een betaalde app terugbetaalt

In de App Store vraagt een koper het aan Apple via reportaproblem.apple.com, kiest een reden en selecteert de app. Apple zegt binnen 24 tot 48 uur een update te verwachten. Je kunt een aankoop in de App Store niet zelf terugbetalen. Je contract bepaalt de buitengrens. Artikel 6.3 van Schedule 2 van de Apple Developer Program License Agreement zegt dat als een koper binnen negentig dagen na de download wil annuleren, of als de app niet voldoet aan jouw specificaties of het toepasselijke recht, Apple de volledige prijs mag terugbetalen, en dat jij Apple dat bedrag vergoedt of een tegoed ter hoogte daarvan toekent.

Waarom je server nooit hoort van een terugbetaling van een betaalde app

Elk terugbetalingssignaal dat de twee stores sturen, is gebouwd voor in-app-aankopen. Apple omschrijft zijn notificationType als de gebeurtenis van een In-App Purchase of externe aankoop die de melding heeft veroorzaakt. Het REFUND-type dekt een verbruiksartikel, een niet-verbruiksartikel, een automatisch verlengbaar abonnement of een niet-verlengbaar abonnement. Get Refund History geeft de terugbetaalde in-app-aankopen van een klant terug. De app-download staat op geen van die lijsten.

Bij Google is het hetzelfde. Realtime-ontwikkelaarsmeldingen dekken abonnementen, eenmalige producten en geannuleerde aankopen, en de productType van een geannuleerde aankoop is een abonnement of een eenmalige aankoop. De Voided Purchases API zegt dat hij geldt voor eenmalige in-app-bestellingen en abonnementen, en hij gaat maar 30 dagen terug.

Leidt een terugbetaling van een betaalde app tot een CONSUMPTION_REQUEST?

Nee. Volgens Apples documentatie wordt CONSUMPTION_REQUEST gestuurd wanneer een klant om terugbetaling vraagt van een verbruikbare In-App Purchase of een automatisch verlengbaar abonnement. Dat is een van slechts twee terugbetalingsprocessen in beide stores die de ontwikkelaar om bewijs vragen. Het andere is de chargebackbeoordeling van Google Play, beantwoord via orders.reviewrefund binnen 24 uur, en die komt binnen via dezelfde meldingenstroom voor in-app-aankopen. Geen van beide is gedocumenteerd voor app-downloads. Over een terugbetaling van een betaalde app wordt beslist zonder iets wat jij zou kunnen insturen.

Blijft een terugbetaalde koper de app gebruiken?

Op Google Play zegt het beleid dat de app wordt verwijderd. Voor iOS staan er op Apples forums threads van ontwikkelaars die precies dit vragen. Eén uit maart 2025 luidt: „Wanneer een gebruiker een vooraf betaalde app laat terugbetalen, heeft hij nog steeds toegang tot de app.” Een andere, uit 2022, vermoedt dat kopers kopen, installeren, laten terugbetalen en gewoon doorgaan. Een derde, uit juni 2025, vraagt of App Store Server Notifications V2 terugbetalingen op app-niveau überhaupt melden. Geen van de drie heeft een antwoord van Apple.

Wat een terugbetaling van een betaalde app je aan geld kost

De uitbetalingskant is voorspelbaar. Volgens de Play Console-help geeft Google zijn servicekosten terug als jij terugbetaalt, dus de inhouding op je uitbetaling is jouw aandeel, niet de verkoopprijs. Een terugbetaling die plaatsvindt nadat Google je heeft uitbetaald, wordt verrekend met een toekomstige uitbetaling, en als je saldo minstens 48 uur negatief blijft, kan Google je bankrekening debiteren. Aan Apples kant zegt het contract dat je een bedrag gelijk aan de prijs vergoedt. In de praktijk meldde RevenueCat in 2022 dat Apple het bedrag na commissie inhield dat als Extended Partner Share wordt getoond, zodat Apple zijn deel niet hield.

De kosten die niet terugkomen, zijn de kosten die je hebt gemaakt om die koper te bedienen. Een illustratief voorbeeld. Een betaalde foto-app van $6.99 draait zijn filters via een cloudmodel en synchroniseert projecten naar cloudopslag. Je hebt betaald voor een advertentie die de koper binnenbracht.

KostenpostTerug op Google PlayTerug in de App Store
Jouw aandeel in de $6.99Teruggehaald van je uitbetalingTeruggehaald van je uitbetaling
Servicekosten of commissie van de storeDoor Google aan jou teruggegevenNiet in rekening gebracht, volgens het rapport van RevenueCat
Al gebruikte cloud-inferentie en API-aanroepenNeeNee
Opslag voor gesynchroniseerde projectenNeeNee
Advertentiekosten om de koper te wervenNeeNee
Doorlopende serverkosten als de koper de app blijft gebruikenStoppen, de app wordt verwijderdLopen door tot je app controleert

Die laatste rij is waar iOS duur wordt. Een terugbetaalde koper die de app houdt, blijft je backend aanroepen, en elke inferentieaanvraag, synchronisatie en API-aanroep na de terugbetaling is een kostenpost zonder omzet erachter. Bij een betaalde app zonder serverkosten is een terugbetaling een gemiste verkoop. Bij een app met een backend kan het een doorlopende rekening worden.

Zo detecteer je een terugbetaling van een betaalde app in de app

Omdat de server niets hoort, moet de controle op het apparaat beginnen en daarna je server informeren.

Op iOS: lees revocationDate op AppTransaction

AppTransaction is het ondertekende record van de App Store van de aankoop van de app door de klant. Apples StoreKit-documentatie vermeldt er nu een eigenschap revocationDate op, omschreven als de intrekkingsdatum van de app-aankoop. Lees AppTransaction.shared bij het opstarten, verifieer het resultaat en behandel een revocationDate die niet nil is als een terugbetaalde download. Stuur de ondertekende waarde naar je server, zodat die dat account niet langer bedient.

  • appTransactionID blijft volgens Apple gelijk voor een Apple Account, ook na een terugbetaling of herhaalde aankoop. Koppel je records er dus aan, dan wordt een koper die opnieuw betaalt herkend.
  • AppTransaction.refresh() haalt een vers record op uit de App Store, maar toont een aanmeldprompt. Apple zegt het alleen aan te roepen na een expliciete actie van de gebruiker, zoals een tik op een knop om aankopen te herstellen.
  • De ondertekende waarde staat op het apparaat. Apples documentatie beschrijft er geen servermelding voor, dus je server weet alleen wat de app meldt.
Een ontwikkelaar houdt voor een laptop een telefoon vast met een hangslot op het scherm en controleert de toegang na een terugbetaling van een betaalde app

Op Android: vraag Play Integrity om het licentieoordeel

De verwijdering door Google regelt de meeste gevallen, maar een kopie kan die overleven, bijvoorbeeld een kopie die via sideloading vanuit een back-up is geïnstalleerd. De Play Integrity API geeft voor het aangemelde account een appLicensingVerdict terug. LICENSED betekent dat de gebruiker recht heeft op de app. UNLICENSED betekent dat dat niet zo is, en Google raadt aan het dialoogvenster GET_LICENSED te tonen. UNEVALUATED betekent dat Google het niet kon controleren, bijvoorbeeld omdat de gebruiker niet is aangemeld bij Google Play. Google merkt ook op dat een gebruiker op sommige oudere apparaten het recht behoudt na verwijdering, dus LICENSED is niet op elk apparaat een bewijs van een geldige aankoop.

Maak de server de poortwachter

Controles in de client kunnen eruit worden gepatcht. Wat de moeite van het beschermen waard is, is het betaalde werk dat je backend doet. Laat de backend dus aanroepen weigeren van een account waarvan de laatste melding een terugbetaling was, een UNLICENSED-oordeel, of helemaal geen oordeel na een coulancetermijn die jij kiest. Zo voorkom je dat een terugbetaling gratis rekenkracht wordt.

Wanneer een betaalde app moet overstappen op in-app-aankopen

Apples eigen richtlijnen voor het wijzigen van een bedrijfsmodel beschrijven de overstap van een betaalde app naar een gratis app met In-App Purchases, met originalAppVersion op AppTransaction om premiumfuncties te blijven geven aan mensen die de betaalde versie kochten. Het voordeel van die stap voor terugbetalingen is concreet. Zodra de prijs op een niet-verbruiksartikel of een abonnement staat, komen terugbetalingen binnen als REFUND-meldingen en geannuleerde aankopen waar je server op kan reageren, en een terugbetalingsverzoek voor een abonnement in de App Store leidt tot een CONSUMPTION_REQUEST. Dat zijn de signalen waar RefundHalt naar luistert en die het beantwoordt binnen de termijnen van 12 uur en 24 uur. Een betaalde download geeft je er geen enkele van.

Veelgestelde vragen

Hoe lang heeft een koper om een betaalde app op Google Play te retourneren?
Tot twee uur na aankoop voor een volledige terugbetaling, volgens de Play Console-help van Google, en maar één keer per app. Het terugbetalingsbeleid van Google zegt ook dat een koper binnen 48 uur een terugbetaling kan krijgen, waarna Google hem naar de ontwikkelaar verwijst. De app wordt als onderdeel van de terugbetaling verwijderd.
Stuurt Apple mijn server een melding als iemand mijn betaalde app laat terugbetalen?
Er is geen melding gedocumenteerd. Apples App Store Server Notifications dekken gebeurtenissen van In-App Purchases, en het REFUND-type noemt alleen verbruiksartikelen, niet-verbruiksartikelen, automatisch verlengbare en niet-verlengbare abonnementen. De app kan revocationDate op AppTransaction op het apparaat lezen en aan je server melden.
Houdt een terugbetaalde koper toegang tot een betaalde iOS-app?
Ontwikkelaars op Apples forums melden van wel, en Apples documentatie beschrijft geen stap die de app na een terugbetaling verwijdert. Controleer revocationDate op AppTransaction bij het opstarten en laat je server stoppen met het bedienen van accounts die een terugbetaalde download melden.
Kan ik een betaalde app zelf terugbetalen?
Op Google Play wel. Met Play Console kun je volledige terugbetalingen voor betaalde apps doen, nooit gedeeltelijke, en Google geeft zijn servicekosten terug. In de App Store niet. Alleen Apple kan een aankoop in de App Store terugbetalen.
Kan ik een terugbetaling van een betaalde app aanvechten met gebruiksgegevens?
Nee. Apples CONSUMPTION_REQUEST is gedocumenteerd voor verbruiksartikelen en automatisch verlengbare abonnementen, en de chargebackbeoordeling van Google Play via orders.reviewrefund komt binnen via meldingen die zijn gebouwd voor in-app-producten en abonnementen. Geen van beide stores documenteert een bewijsproces voor de aankoop van de app zelf.

Bronnen en verder lezen

RefundHalt

De terugbetalingsautopiloot voor de App Store en Google Play

Lees verder

Het volgende terugbetalingsverzoek is al onderweg.

Stel RefundHalt in binnen de tijd die het kost om nog een supportmail te lezen over een terugbetaling die je niet kon betwisten.