Alle artikelen
Deep dive8 min leestijd

Elk type in-app-aankoop wordt anders terugbetaald, en slechts twee ervan vragen ooit naar jouw kant

Verbruiksartikelen, niet-verbruiksartikelen, automatisch verlengbare abonnementen en niet-verlengbare abonnementen worden elk volgens hun eigen regels terugbetaald. Sommige kunnen worden hersteld, sommige verdwijnen zodra ze zijn besteed, en alleen het verzoek bij verbruiksartikelen en het verzoek bij abonnementen vragen de ontwikkelaar ooit om bewijs. Zo verandert het type in-app-aankoop dat je verkoopt wat een terugbetaling met jou doet.

Een stapel munten, een hangslot, een kalender en een ticket op een rij op een warm verlicht bureau, die illustreren hoe elk type in-app-aankoop anders wordt terugbetaald

Belangrijkste inzichten

  • Er zijn vier types in-app-aankopen in de App Store, verbruiksartikel, niet-verbruiksartikel, automatisch verlengbaar abonnement en niet-verlengbaar abonnement, en elk wordt volgens andere regels terugbetaald. Google Play sorteert dezelfde catalogus in eenmalige producten en abonnementen.
  • Slechts twee Apple-stromen vragen de ontwikkelaar ooit om bewijs voordat over een terugbetaling wordt beslist, de CONSUMPTION_REQUEST bij verbruiksartikelen en, sinds WWDC24, de CONSUMPTION_REQUEST bij het automatisch verlengbare abonnement. Niet-verbruiksartikelen en niet-verlengbare abonnementen openen dat venster zelden.
  • Verbruiksartikelen dragen het grootste terugbetalingsrisico. Ze worden bij levering besteed, ze kunnen niet worden hersteld, en hun waarde is al weg voordat de terugbetaling aankomt, wat precies de reden is waarom Apple daarbij om jouw verbruiksgegevens vraagt.
  • Niet-verbruiksartikelen zijn permanent en herstelbaar, dus een terugbetaling moet een recht intrekken dat het account van de klant zich nog herinnert. Op Google Play wordt een aankoop die je niet binnen 72 hours bevestigt automatisch terugbetaald en wordt de toegang teruggetrokken.
  • Automatisch verlengbare abonnementen worden terugbetaald op een klok. Apple berekent uit de verstreken tijd hoeveel er is verbruikt, niet uit een getal dat je stuurt, dus jouw taak is een eerlijke refundPreference en het gebruiksbewijs erachter.
  • In de App Store kan alleen Apple een terugbetaling voor een in-app-aankoop uitgeven. Op Google Play kun je een bestelling zelf terugbetalen vanuit de Play Console, waardoor het producttype dat je verkocht je eigen verantwoordelijkheid wordt.
  • Wat het type ook is, een terugbetaling geeft de commissie van de store terug aan de klant maar nooit jouw uitgaven. De rekenkracht, de API-aanroepen, de opslag en de uitbetalingen die een verbruiksartikel al heeft veroorzaakt, blijven verloren.

Het type in-app-aankoop dat je in App Store Connect of de Play Console koos, beslist over meer dan alleen hoe het product wordt verkocht. Het beslist hoe een terugbetaling zich gedraagt wanneer die binnenkomt, of de klant het item daarna gratis kan terugkrijgen, en of je ooit naar jouw kant wordt gevraagd voordat het geld beweegt. Een muntenpakket, een levenslange ontgrendeling, een maandelijks abonnement en een eenmalig seizoenspas zijn vier verschillende juridische en technische objecten, en de terugbetalingsregels behandelen ze zo. De meeste ontwikkelaars versturen ze allemaal via dezelfde aankoopcode en vragen zich dan af waarom terugbetalingen inconsistent aanvoelen. Ze zijn niet inconsistent. Ze zijn typespecifiek.

Hier is wat elk type in-app-aankoop is, hoe een terugbetaling het raakt, en waarom slechts twee van de vier de beslissing ooit via jouw server leiden.

De vier types in-app-aankopen, en waarom terugbetalingen zich langs hen opsplitsen

Apple definieert vier producttypes. Een verbruiksartikel wordt opgebruikt en opnieuw gekocht: spelvaluta, hints, een energie-aanvulling. Een niet-verbruiksartikel wordt eenmaal gekocht en voor altijd behouden: een pro-ontgrendeling, een upgrade die advertenties verwijdert, een downloadbaar levelpakket. Een automatisch verlengbaar abonnement wordt in een terugkerende cyclus afgerekend totdat de klant opzegt. Een niet-verlengbaar abonnement verleent toegang voor een vaste periode die zichzelf niet verlengt, zoals een contentseizoen dat als een enkele termijn wordt verkocht.

Google Play sorteert dezelfde catalogus anders maar landt op dezelfde plek. Het splitst producten in eenmalige producten en abonnementen, en een eenmalig product wordt als verbruiksartikel of niet gemarkeerd afhankelijk van of je app het na aankoop verbruikt. De woorden verschillen. De terugbetalingsgevolgen niet.

Type in-app-aankoopHerstelbaar na terugbetalingWaarde op moment van terugbetalingVraagt Apple om jouw bewijs
VerbruiksartikelNee, kan niet worden hersteldMeestal al besteedJa, CONSUMPTION_REQUEST
Niet-verbruiksartikelJa, gekoppeld aan het accountNog behouden, recht ingetrokkenZelden
Automatisch verlengbaar abonnementJa, zolang actiefNaar rato van verstreken tijdJa, sinds WWDC24
Niet-verlengbaar abonnementJe app moet het herstellenTermijn deels verstrekenZelden

Verbruiksartikelen zijn het type waar terugbetalingsfraude zich echt op richt

Een verbruiksartikel is het moeilijkste terugbetalingsgeval dat je zult tegenkomen, en het is geen toeval dat het degene is waaromheen Apple het verbruiksverzoek bouwde. Op het moment dat een klant 10,000 munten koopt en jouw server ze verleent, is de waarde geleverd. Als ze die munten besteden en daarna een terugbetaling aanvragen, kan de store hun geld teruggeven, maar de munten zijn weg en ook wat het je kostte om ze te honoreren. Apple's eigen gereedschap weerspiegelt dit: een verbruiksartikel verlaat het transactierecord zodra het is voltooid en draagt nooit een annuleringsdatum, omdat er niets blijvends is om te annuleren.

Daarom is het verbruiksartikel het producttype waar bewijs loont. Wanneer een klant een terugbetaling aanvraagt op een verbruiksartikel, stuurt Apple jouw server een CONSUMPTION_REQUEST en wacht tot 12 hours op een Send Consumption Information-aanroep. In die aanroep stel je een deliveryStatus in en, als je hebt geleverd, een consumptionPercentage. Het percentage is een geheel getal in milliunits van 0 tot 100,000, waarbij 100,000 betekent dat de klant de hele aankoop heeft gebruikt. Een muntensaldo dat je administratie als volledig besteed toont, is een 100,000 die je kunt melden, en het is het sterkste enkele feit dat je tegenover een claim van onbedoelde aankoop kunt zetten.

Verbruiksartikelen kunnen niet worden hersteld, dus timing is alles

Omdat een verbruiksartikel niet kan worden hersteld, kun je het niet terughalen zoals je een abonnement kunt intrekken. Zodra een terugbetaling is verleend, is jouw enige bescherming het record dat je op het moment van verkoop bijhield. Als je levering en verbruik niet vastlegde toen het gebeurde, reconstrueer je het onder een klok van 12 hours, wat het slechtste moment is om naar gegevens te gaan zoeken. Leg het vast bij binnenkomst, niet bij uitgang.

Abonnementen worden terugbetaald op een klok die je niet beheert

Automatisch verlengbare abonnementen zijn waar de meeste apps hun geld verdienen, en de WWDC24-terugbetalingsupdate leidde ze eindelijk door hetzelfde bewijsvenster als verbruiksartikelen. Sinds App Store Server Notifications version 2.11 activeert een terugbetalingsverzoek op een automatisch verlengbaar abonnement ook een CONSUMPTION_REQUEST. Dus de abonnementsterugbetalingen die vroeger volledig zonder jou werden beslist, komen nu binnen met een venster van 12 hours eraan gekoppeld.

De valkuil is hoe verbruik wordt gemeten. Voor een automatisch verlengbaar abonnement wil Apple niet dat je een gebruikspercentage verzint. Het berekent verbruik zelf uit de verstreken tijd, dus iemand die zes maanden in een jaarplan zit, leest als ongeveer half verbruikt ongeacht wat je stuurt. Jouw hefboom is niet het percentage. Het is een eerlijke refundPreference van GRANT_FULL, GRANT_PRORATED of DECLINE, gesteund door welk gebruikssignaal je ook werkelijk hebt. Stuur de voorkeur die het bewijs ondersteunt en laat Apple die afwegen.

Niet-verlengbare abonnementen zitten dichter bij een eenmalige ontgrendeling

Een niet-verlengbaar abonnement is een vaste termijn die de klant eenmaal koopt, en het gedraagt zich voor terugbetalingsdoeleinden meer als een niet-verbruiksartikel dan als een automatisch verlengbaar plan. Apple leidt er zelden een CONSUMPTION_REQUEST naartoe, en er is geen automatische verlenging om naar rato tegen af te rekenen. Je app is verantwoordelijk voor het bijhouden van de termijn en het herstellen ervan op de apparaten van de klant, dus een terugbetaling betekent het beëindigen van een toegangsvenster dat je zelf beheerde, niet een dat Apple voor je klokte.

Niet-verbruiksartikelen zijn permanent, wat aan twee kanten snijdt

Een niet-verbruiksartikel is het zuiverste om te verkopen en een stille valstrik bij terugbetaling. Het wordt eenmaal gekocht, het is voor altijd gekoppeld aan het store-account van de klant, en de store kan het op verzoek naar elk apparaat herstellen. Die permanentie is een voordeel totdat een terugbetaling aankomt, want nu moet je een recht intrekken dat het account zich nog herinnert. Als je intrekkingslogica alleen op het moment van aankoop controleert en nooit opnieuw verifieert, kan een terugbetaalde klant aankopen herstellen en zo weer de betaalde functie binnenlopen.

Google Play voegt hier een harde rand toe die nieuwe ontwikkelaars betrapt. Als je app een aankoop niet binnen 72 hours bevestigt, betaalt Google die automatisch terug en trekt het recht in. Een niet-verbruiksartikel dat je facturatiecode vergat te bevestigen, blijft niet in het luchtledige hangen. Het draait zichzelf terug, en de klant verliest de toegang tot iets waarvoor hij betaalde, buiten zijn eigen verzoek om.

Een smartphone die een betalingsbevestiging toont naast een kleine stapel munten waarvan er enkele opzij zijn geveegd, die illustreert hoe elk type in-app-aankoop volgens andere regels wordt terugbetaald

Wie de terugbetaling mag uitgeven, verandert per store en type

Voordat je enige terugbetalingsreactie plant, moet je weten wie de pen vasthoudt. In de App Store kan alleen Apple een terugbetaling voor een in-app-aankoop uitgeven, voor elk producttype. Jouw StoreKit-code kan een aankoop niet terugbetalen, en jouw supportdesk ook niet. Je kunt verbruiksgegevens sturen om Apple's beslissing te beïnvloeden bij de twee types die een venster openen, en dat is het geheel van jouw directe controle.

Google Play is het tegenovergestelde. Je kunt een eenmalig product of een abonnementsbestelling zelf terugbetalen vanuit de Play Console of de Voided Purchases- en terugbetalings-APIs, geheel of gedeeltelijk. Die vrijheid is ook een verantwoordelijkheid: een terugbetaling die je uitgeeft op een verbruiksartikel moet het item nog steeds intrekken in je eigen backend, omdat Google niet weet dat jouw munten zijn besteed. Het producttype dat je koos, beslist hoe schoon die intrekking is.

Wat elk type terugbetaling je werkelijk kost

De terugbetaalde prijs is de regel die iedereen bekijkt en het kleinste deel van de rekening. Wanneer een store een terugbetaling verleent, draait het zijn eigen commissie ermee terug, dus verlies je je netto-opbrengst in plaats van de volle catalogusprijs. Dat is het goede nieuws, en daar houdt het op. Wat de store teruggeeft, is het deel dat het nam. Wat het nooit teruggeeft, is wat je al hebt uitgegeven om de verkoop te vervullen, en dat getal verandert scherp per producttype.

Het verbruiksartikel is de dure terugbetaling

Een terugbetaald verbruiksartikel is degene die meer kan kosten dan zijn prijs. Stel dat een klant 5,000 credits koopt die elk een betaalde inferentie-aanroep activeren, er 4,000 van besteedt, en dan een terugbetaling aanvraagt. De store geeft de prijs en zijn commissie terug, maar de rekenkracht, de API-rekening per token, de afbeeldingen die je genereerde, en elke maker-uitbetaling die die credits financierden, zijn allemaal besteed. Een terugbetaling van een niet-verbruiksartikel haalt tenminste een recht terug onder jouw controle. Een terugbetaling van een verbruiksartikel haalt een verkoop terug waarvan je de volledige kosten al hebt betaald.

Een chargeback is de zwaardere versie van dezelfde rekening

Een terugbetaling en een chargeback zijn verschillende gebeurtenissen, en de kloof heeft nu een datum. Wanneer een klant de afschrijving betwist bij zijn bank in plaats van de store te vragen, is een voltooide chargeback bank-definitief. Voor Google Play-bestellingen geplaatst op of na August 3 2026 belast een verloren chargeback de ontwikkelaar de aankoopprijs minus Play's servicekosten, plus de chargeback-vergoeding van de bank, een vaste heffing die het kaartnetwerk vaststelt. Google Play leidt een chargeback ter beoordeling naar je door via orders.reviewrefund met een venster van 24 hours, de enige Google-stroom die om jouw bewijs vraagt, en die kan op elk producttype landen.

Hoe te reageren wanneer het type de regels bepaalt

Je kunt niet veranderen op welk producttype een terugbetaling na de verkoop landt, maar je kunt stoppen met alle vier op dezelfde manier af te handelen.

  • Leg levering en verbruik voor verbruiksartikelen vast op het moment dat ze gebeuren. Dat logboek is je hele verdediging bij het ene type dat niet kan worden hersteld, en het venster van 12 hours is veel te kort om het vanaf nul op te bouwen.
  • Verifieer rechten voor niet-verbruiksartikelen opnieuw na een terugbetaling, niet alleen bij aankoop. Een herstelaanroep moet de huidige status controleren, zodat een terugbetaalde klant niet terug de betaalde functie kan binnenlopen.
  • Beantwoord beide bewijsvensters automatisch. Een verbruiksverzoek van 12 hours en een chargeback-beoordeling van 24 hours kunnen niet wachten tot iemand een inbox leest, en ze verlengen niet voor tijdzones.
  • Beoordeel je terugbetalingsverdediging alleen op de twee betwistbare types. Een stijgend aantal terugbetalingen op types die nooit een venster openden, is een product- of prijssignaal, geen falen van je bewijs.

Niets hiervan gaat over het verslaan van de store. Het gaat over het afstemmen van je reactie op het object dat werkelijk werd verkocht. RefundHalt beantwoordt de CONSUMPTION_REQUEST bij verbruiksartikelen en abonnementen en de Google Play orders.reviewrefund-beoordeling automatisch, binnen het venster, met het leverings- en gebruiksbewijs dat je op het moment van verkoop vastlegde, en het bewaart de terugbetalingen die geen enkel venster je ooit liet betwisten in hun eigen grootboek, zodat het getal waaraan je jezelf afmeet eerlijk blijft.

Veelgestelde vragen

Kan ik een in-app-aankoop zelf terugbetalen?
Het hangt af van de store. In de App Store kan alleen Apple een terugbetaling voor een in-app-aankoop uitgeven, voor elk producttype, dus jouw enige invloed is de verbruiksgegevens die je stuurt bij de twee stromen die erom vragen. Op Google Play kun je een eenmalig product of een abonnementsbestelling zelf terugbetalen vanuit de Play Console of de terugbetalings-APIs, geheel of gedeeltelijk.
Welk type in-app-aankoop heeft het hoogste terugbetalingsrisico?
Verbruiksartikelen. Een verbruiksartikel wordt bij levering besteed, het kan niet worden hersteld, en zijn waarde is meestal al weg voordat het terugbetalingsverzoek aankomt. Dat is precies waarom Apple een CONSUMPTION_REQUEST stuurt voor verbruiksartikelen en om jouw verbruiksgegevens vraagt, en waarom de rekenkracht- of API-kosten achter een verbruiksartikel de terugbetaling meer kunnen laten kosten dan de verkoop.
Stuurt Apple een verbruiksverzoek voor elk aankooptype?
Nee. Apple stuurt een CONSUMPTION_REQUEST voor verbruiksartikelen en, sinds de WWDC24-update, voor automatisch verlengbare abonnementen. Niet-verbruiksartikelen en niet-verlengbare abonnementen openen dat bewijsvenster zelden. Voor elk type wordt de terugbetaling zelf nog steeds beslist door Apple, niet door jou.
Kan een klant een verbruiksartikel herstellen na een terugbetaling?
Nee. Verbruiksartikelen kunnen niet worden hersteld, wat hun terugbetalingen voor jou definitief maakt. Niet-verbruiksartikelen en actieve abonnementen zijn gekoppeld aan het store-account van de klant en kunnen worden hersteld, dus een terugbetaling daarop moet een recht intrekken dat je backend opnieuw zou moeten verifiëren in plaats van te vertrouwen vanaf het moment van aankoop.
Hoe worden abonnementsterugbetalingen anders berekend?
Voor een automatisch verlengbaar abonnement berekent Apple uit de verstreken tijd hoeveel er is verbruikt in plaats van uit een percentage dat je stuurt, dus een halve termijn leest als ongeveer half verbruikt. Jouw rol is een eerlijke refundPreference van GRANT_FULL, GRANT_PRORATED of DECLINE, ondersteund door het gebruiksbewijs dat je hebt, niet een verzonnen verbruiksgetal.

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.