Elke restitutie bij een abonnementsupgrade is de beslissing van de store, niet die van u, en ze gaat rechtstreeks van uw opbrengsten af
Wanneer een klant naar een hoger niveau overstapt, geeft de store een restitutie bij de abonnementsupgrade voor de ongebruikte dagen van het oude plan, en dat verlaagt uw opbrengsten automatisch. Zo werken upgraderestituties in de App Store en Google Play, en waarom Apple het bedrag buiten uw server houdt.

Belangrijkste inzichten
- Een restitutie bij een abonnementsupgrade is automatisch. Wanneer een klant midden in de cyclus naar een hoger niveau overstapt, crediteert of restitueert de store de ongebruikte dagen van het oude plan zonder u te vragen, en het geld komt uit de opbrengsten die u al had geboekt.
- In de App Store wordt een upgrade meteen van kracht en restitueert Apple het naar rato berekende bedrag van het oorspronkelijke abonnement. Een downgrade wacht tot de volgende verlengingsdatum en restitueert niets.
- Apple stuurt het bedrag van de upgraderestitutie niet naar uw server. De geüpgradede transactie is gemarkeerd met isUpgraded, maar het prijsveld toont nog steeds de volle prijs van het nieuwe niveau, dus de omzet die u uit App Store Server Notifications berekent, valt te hoog uit.
- De financiële rapporten in App Store Connect zijn de enige plek waar een naar rato berekende upgraderestitutie wordt verantwoord. Medewerkers van Apple zeggen dat het bedrag niet beschikbaar is via de App Store Server API, Notifications of StoreKit.
- Google Play zet bij een upgrade geen geld terug op de kaart. Het crediteert de ongebruikte tijd of berekent het prijsverschil, en welke van beide gebeurt hangt af van de vervangingsmodus die u instelt. De standaard is WITH_TIME_PRORATION.
- Een upgraderestitutie is geen restitutieverzoek van een klant. Er is geen CONSUMPTION_REQUEST en geen terugboekingsbeoordeling, dus er is geen venster van 12 uur of 24 uur en niets om te betwisten. U verrekent ze, u vecht ze niet aan.
- De vervangingsmodus is een omzetbeslissing. WITH_TIME_PRORATION geeft de klant extra betaalde tijd die u levert tegen de kosten van het hogere niveau, terwijl CHARGE_PRORATED_PRICE het verschil nu in rekening brengt, dus de verkeerde standaard laat marge weglekken, upgrade na upgrade.
Een klant tikt op upgraden, stapt over van uw niveau van vijf dollar naar uw niveau van tien dollar, en u boekt een grotere verkoop. De store doet op datzelfde moment iets anders, en u ziet het nooit. Hij geeft die klant een restitutie bij de abonnementsupgrade voor de dagen die hij op het oude plan al had betaald, en dat geld komt uit uw opbrengsten. Niemand heeft het u gevraagd. In de App Store vindt u het bedrag niet eens terug in de gebeurtenissen die uw server ontvangt.
Dit is niet de restitutie die u kunt aanvechten. Het is geen CONSUMPTION_REQUEST van Apple en geen terugboekingsbeoordeling van Google Play. Het is een verrekening naar rato, ingebouwd in de manier waarop beide stores mensen van plan laten wisselen, en ze loopt vanzelf, elke keer dat een abonnee een niveau omhoog gaat. Hier leest u wat een upgraderestitutie in elke store werkelijk is, waarom Apple het bedrag buiten uw server houdt, en wat de verkeerde instelling in Google Play u kost.
Wat een restitutie bij een abonnementsupgrade werkelijk is
Een upgraderestitutie is de store die afrekent voor tijd die de klant heeft betaald maar niet zal gebruiken. Ze heeft niets te maken met een klacht, een geschil of uw restitutiebeleid. Ze wordt alleen door de mechaniek van de planwissel geactiveerd.
Het is een verrekening naar rato, geen klacht van een klant
Wanneer een abonnee midden in een factureringsperiode naar een hoger niveau overstapt, heeft hij tot het einde van die periode al tegen de oude prijs betaald. De store vergoedt hem voor het ongebruikte deel. Apple geeft een naar rato berekende restitutie van het oorspronkelijke abonnement. Google Play crediteert de ongebruikte waarde op het nieuwe plan. Geen van beide verloopt via een stroom waarop u kunt reageren, en geen van beide wacht op uw goedkeuring.
Alleen een upgrade activeert ze
De richting van de wissel bepaalt het geld. In de App Store is een upgrade een overstap naar een product met een hogere rang binnen dezelfde abonnementsgroep, en alleen die overstap is meteen en met restitutie. Een downgrade is een overstap naar een lagere rang, en die wordt van kracht bij de volgende verlenging, zonder restitutie. Een crossgrade is een overstap tussen producten met dezelfde rang, en de timing hangt af van de betrokken looptijden. Rangschik de producten verkeerd in App Store Connect en een wissel die u voor een upgrade houdt, gedraagt zich als iets anders.
| Wissel in de App Store | Wanneer ze van kracht wordt | Wat er met het geld gebeurt |
|---|---|---|
| Upgrade naar een hoger niveau | Meteen | Apple restitueert het naar rato berekende bedrag van het oorspronkelijke abonnement |
| Downgrade naar een lager niveau | Op de volgende verlengingsdatum | Geen restitutie, verlengt tegen de lagere prijs |
| Crossgrade, dezelfde looptijd vooraf betaald | Meteen | Nieuw abonnement begint, betaalde dienst loopt door |
| Crossgrade, verschillende looptijden | Op de volgende verlengingsdatum | Geen restitutie midden in de cyclus |
Waarom de App Store de upgraderestitutie voor uw server verbergt
Hier is het deel dat de omzetrapportage breekt. Apple geeft de upgraderestitutie, maar vertelt uw server nooit hoeveel het heeft gerestitueerd.
isUpgraded is het enige signaal, en de prijs klopt niet
De nieuwe transactie komt binnen met isUpgraded op true, wat u vertelt dat er een planwissel heeft plaatsgevonden. Het prijsveld op die transactie toont nog steeds de volle weergaveprijs van het nieuwe niveau, niet het bedrag dat Apple van het oude heeft teruggehaald. Geen enkele App Store Server Notification bevat het restitutiebedrag. In Apples eigen woorden op de ontwikkelaarsforums is het naar rato berekende restitutiebedrag niet beschikbaar via de App Store Server API, Notifications of StoreKit, en zijn de rapporten van App Store Connect uw bron voor alle doeleinden van financiële boekhouding.
Het financiële rapport is de enige eerlijke registratie
De financiële en verkooprapporten van App Store Connect verantwoorden de naar rato berekende upgraderestitutie, want die rapporten bepalen wat Apple u werkelijk uitbetaalt. Daarmee zijn ze de bron van waarheid voor elke abonnee die ooit is opgeklommen. Bouw uw boekhouding op de rapporten, en behandel de servergebeurtenissen als signalen van toegangsrechten, niet als omzet.

Wat het u kost, in geld
De upgraderestitutie is geen afrondingsfout. Het zijn echte opbrengsten, en bij Google Play kiest u bovendien hoeveel van de ongebruikte tijd u weggeeft.
De restitutie zijn opbrengsten die u al had geboekt
Neem een abonnee op uw niveau van 9.99 per maand die op dag 20 van een cyclus van 30 dagen upgradet naar 19.99. Ongeveer een derde van de maand is ongebruikt, dus Apple restitueert ongeveer 3.33 van de oorspronkelijke 9.99. U verliest niet de hele verkoop. U geeft het deel terug dat de klant vooraf betaalde en niet zal gebruiken. Wat telt is dat de teruggave automatisch is en op de oude verkoop landt, zodat de opbrengsten die u al had geteld achteraf krimpen. Vermenigvuldig dat met elke abonnee die midden in de cyclus opklimt en het is een regel die u zou moeten kunnen zien, geen gat dat u in de uitbetaling ontdekt.
Bij Google Play is de vervangingsmodus de echte kostenhefboom
Google Play zet bij een upgrade geen geld terug op de kaart. Het verrekent de ongebruikte tijd op een van meerdere manieren, en u kiest welke door een vervangingsmodus mee te geven wanneer u de aankoopstroom start. De keuze bepaalt of u de klant betaalde tijd geeft of hem het verschil in rekening brengt. Google raadt CHARGE_PRORATED_PRICE aan voor upgrades en DEFERRED voor downgrades, maar de standaard van de bibliotheek is WITH_TIME_PRORATION, dus een stroom die u nooit hebt geconfigureerd, crediteert stilletjes tijd.
| Vervangingsmodus in Google Play | Wanneer ze van kracht wordt | Wat er met de ongebruikte tijd gebeurt |
|---|---|---|
| WITH_TIME_PRORATION (standaard) | Meteen | Gecrediteerd als extra tijd op het nieuwe plan, volgende factureringsdatum opgeschoven |
| CHARGE_PRORATED_PRICE (alleen upgrade) | Meteen | Prijsverschil voor de resterende periode wordt nu berekend, factureringsdatum ongewijzigd |
| WITHOUT_PRORATION | Meteen | Nu niets verrekend, de nieuwe prijs begint bij de volgende verlenging |
| CHARGE_FULL_PRICE | Meteen | Volle prijs van het nieuwe plan wordt nu berekend, resterende waarde overgedragen of naar rato verrekend |
| DEFERRED | Bij de volgende verlenging | Huidig plan loopt tot het verloopt, daarna begint het nieuwe plan |
Hoe u voorkomt dat upgraderestituties uw boeken verrassen
U kunt de verrekening naar rato niet uitschakelen, en dat zou u ook niet willen, want ze maakt een planwissel eerlijk voor de klant. Wat u wel kunt doen, is ze zien, ze inprijzen en ze gescheiden houden van de restituties die u werkelijk kunt betwisten.
Stem Apple-upgrades af op het financiële rapport
Omdat het restitutiebedrag uw server nooit bereikt, zijn de financiële en verkooprapporten van App Store Connect de enige plek waar een naar rato berekende upgraderestitutie opduikt. Stem de abonnee-omzet elke periode af op die rapporten, en bereken de omzet niet uit een lopend totaal van Server Notifications. De isUpgraded-vlag vertelt u dat er een wijziging heeft plaatsgevonden. Het rapport vertelt u wat ze heeft gekost.
Kies de vervangingsmodus in Google Play bewust
Geef voor elke planwissel bewust een vervangingsmodus mee. Gebruik CHARGE_PRORATED_PRICE wanneer u het prijsverschil bij een upgrade nu wilt innen. Laat WITH_TIME_PRORATION alleen staan wanneer u de klant de resterende tijd wilt geven. Gebruik DEFERRED voor downgrades zodat u de huidige omzet behoudt tot de looptijd afloopt. De standaard is een beslissing, en de verkeerde standaard geeft marge weg, upgrade na upgrade.
Houd upgraderestituties gescheiden van restituties die u kunt betwisten
Een upgraderestitutie is per ontwerp automatisch en definitief. Het is geen klant die zijn geld terugvraagt. De restituties waarop u werkelijk invloed hebt, zijn de door de klant gestarte, waarbij Apple een CONSUMPTION_REQUEST stuurt en u 12 uur geeft om te reageren, en waarbij Google Play via orders.reviewrefund een terugboekingsbeoordeling opent met een venster van 24 uur. Label uw gegevens zo dat de twee nooit door elkaar lopen. De ene regel verrekent u. De andere regel beantwoordt u, tegen de klok.
De korte versie
Wanneer een klant een abonnement upgradet, verrekent de store de ongebruikte tijd voor hem automatisch. Apple restitueert het naar rato berekende bedrag van het oude plan meteen en stuurt uw server het cijfer nooit, dus de financiële rapporten van App Store Connect zijn de enige nauwkeurige registratie. Google Play crediteert de tijd of berekent het verschil afhankelijk van de vervangingsmodus die u instelt, en de standaard geeft de klant betaalde tijd die u levert tegen kostprijs. Niets ervan verloopt via een CONSUMPTION_REQUEST of een terugboekingsbeoordeling, dus er is niets te betwisten. Verreken de upgraderestitutie, stel uw Google Play-modus bewust in, en houd ze gescheiden van de restituties die u nog kunt aanvechten.
Veelgestelde vragen
- Vraagt een restitutie bij een abonnementsupgrade om mijn goedkeuring?
- Nee. Een restitutie bij een abonnementsupgrade is automatisch. Wanneer een klant midden in de cyclus naar een hoger niveau overstapt, verrekent de store de ongebruikte tijd op het oude plan zelf, zonder verzoek aan u en zonder venster om te reageren. Apple restitueert het naar rato berekende bedrag van het oorspronkelijke abonnement, en Google Play crediteert de ongebruikte tijd of berekent het prijsverschil afhankelijk van de vervangingsmodus die u instelt.
- Waarom komt mijn App Store-omzet na upgrades niet overeen met mijn uitbetaling?
- Omdat Apple het bedrag van de upgraderestitutie niet naar uw server stuurt. De geüpgradede transactie draagt isUpgraded op true, maar het prijsveld toont nog steeds de volle prijs van het nieuwe niveau, en geen enkele App Store Server Notification bevat de restitutie. Omzet die uit servergebeurtenissen wordt berekend, telt de nieuwe verkoop en mist de restitutie op het oude plan, dus valt hij te hoog uit tot u hem afstemt op de financiële rapporten van App Store Connect.
- Zet Google Play geld terug op de kaart wanneer een klant upgradet?
- Nee. Google Play behandelt de ongebruikte tijd als een tegoed, niet als een contante restitutie. Afhankelijk van de vervangingsmodus crediteert het ofwel de resterende tijd op het nieuwe plan en schuift het de volgende factureringsdatum op, ofwel berekent het het prijsverschil voor de resterende periode. De standaardmodus is WITH_TIME_PRORATION, die de tijd crediteert.
- Kan ik een restitutie bij een abonnementsupgrade betwisten?
- Nee. Een upgraderestitutie is geen restitutieverzoek van een klant. Er is geen CONSUMPTION_REQUEST van Apple en geen terugboekingsbeoordeling van Google Play, dus er is geen venster van 12 uur of 24 uur en niets om te versturen. Een upgraderestitutie verrekent u. U betwist alleen door de klant gestarte restituties en terugboekingen.
- Krijgt de klant bij een downgrade een restitutie?
- Nee. In de App Store wordt een downgrade van kracht op de volgende verlengingsdatum en restitueert niets, omdat de klant het hogere niveau behoudt tot de betaalde periode afloopt. Bij Google Play is de aanbevolen manier om een downgrade af te handelen de vervangingsmodus DEFERRED, die het huidige plan behoudt tot het verloopt en dan het lagere start.
- Welke vervangingsmodus in Google Play moet ik gebruiken voor een upgrade?
- Google raadt CHARGE_PRORATED_PRICE aan voor upgrades, die het prijsverschil voor de resterende periode meteen berekent en de factureringsdatum ongewijzigd laat. De standaard WITH_TIME_PRORATION crediteert in plaats daarvan de ongebruikte tijd als extra dienst op het hogere niveau, dus gebruik die alleen wanneer u die tijd wilt weggeven.
Bronnen en verder lezen
- Apple Developer: Auto-renewable subscriptions (upgrade, downgrade, and crossgrade behavior and prorated refunds)
- Apple Developer Forums: Retrieving the prorated refund amount after an upgrade (Apple staff on isUpgraded, the price field, and financial reports as the source)
- Android Developers: BillingFlowParams.SubscriptionUpdateParams.ReplacementMode (all replacement mode constants)
- Android Developers: About subscriptions (proration, default replacement mode, upgrade and downgrade recommendations)
- Google Play Developer API: Method orders.reviewrefund (chargeback review, 24 hours)
- Apple Developer: Send Consumption Information (CONSUMPTION_REQUEST response window)
RefundHalt
De terugbetalingsautopiloot voor de App Store en Google Play
Lees verder
Ongeautoriseerde in-app-aankopen door kinderen worden bijna altijd aan de ouder terugbetaald, en jij draagt de kosten
Wanneer een kind een muntpakket koopt op de telefoon van een ouder, betalen zowel Apple als Google het terug en geen van beide vraagt het jou eerst. Toezichthouders hebben het zo ontworpen. Zo werken deze terugbetalingen voor ongeautoriseerde in-app-aankopen in elke store, het venster van 15 minuten waarin het geld verdwijnt, en wat er eentje echt kost.
De belasting op een app-terugbetaling was nooit van jou, dus een terugbetaling kost je jouw aandeel, niet het totaal op de bon
Betaal een in-app aankoop terug en de bon toont de prijs plus belasting die teruggaan. Die belasting was nooit jouw geld. Apple en Google innen en dragen het af als merchant of record, en draaien het bij een terugbetaling terug zonder aan jouw aandeel te komen. Dit is wat een terugbetaling werkelijk kost, en de ene opzet waarin de belasting wel van jou wordt.