Alle artikelen
Handleiding8 min leestijd

Terugbetalingen voor add-ons van Google Play abonnementen kunnen één item tegelijk raken, maar je klant kan alleen de hele bundel opzeggen

Met Google Play kan een basisabonnement tot 49 add-ons dragen op één aankooptoken. Zo werken terugbetalingen voor abonnementsadd-ons: welke API-aanroep één item terugbetaalt zonder de rest aan te raken, waar Google dat blokkeert en wat elke terugbetalingsroute je kost.

Iemand aan een cafétafeltje bekijkt een Android-telefoon naast een gespecificeerde bon, het soort gebundelde aankoop waarbij terugbetalingen voor add-ons van Google Play abonnementen per regel gelden

Belangrijkste inzichten

  • Met de functie voor abonnementen met add-ons van Google Play staan een basisabonnement en tot 49 add-ons, in totaal 50 items, op één aankoop. Alle items moeten dezelfde terugkerende factureringsperiode hebben.
  • Gebruikers van Google Play kunnen in het abonnementencentrum van Play geen losse add-on opzeggen. Ze kunnen alleen het basisabonnement en de add-ons samen opzeggen. Eén add-on verwijderen moet dus in de app van de ontwikkelaar gebeuren.
  • De methode purchases.subscriptionsv2.revoke accepteert een itemBasedRefund met één productId. Blijven andere items actief, dan trekt Google alleen dat item in, betaalt het volledig terug en loopt het abonnement door.
  • Google blokkeert een terugbetaling per item als het abonnement in een status met geweigerde betaling staat, als het item verlopen is of niet in bezit is, en bij prepaid abonnementen.
  • Een proratedRefund op een abonnement met add-ons betaalt de laatste bestelling van elk item terug, naar rato van de resterende tijd tot de volgende verlenging, en trekt de toegang tot alle items in één keer in.
  • Realtime ontwikkelaarsmeldingen voor een abonnement met add-ons bevatten geen subscriptionId. Een backend moet dus purchases.subscriptionsv2.get aanroepen en elk lineItem lezen om te zien welke items nog recht op toegang hebben.
  • De enige terugbetalingsflow van Google Play die de ontwikkelaar om bewijs vraagt, is een chargeback die via orders.reviewrefund ter beoordeling is gemarkeerd, met een termijn van 24 uur. Voor bestellingen na 3 augustus 2026 kost een verloren chargeback de ontwikkelaar de aankoopprijs min de servicekosten van Play, plus de kosten van de bank.

Verkoop je op Google Play een basisabonnement met drie add-ons, dan kun je elk van die add-ons terugbetalen zonder de rest op te zeggen. Je klant kan dat vanaf zijn kant niet. Google laat gebruikers alleen de hele bundel opzeggen. De precieze tools voor terugbetalingen van add-ons bij Google Play abonnementen liggen dus bij jou, de ontwikkelaar, en alleen via de API. Gebruik je ze goed, dan betaal je precies de regel terug waar het misging. Met de verkeerde aanroep betaal je alles terug, of trek je alles in.

Zo is een abonnement met add-ons opgebouwd

Google kondigde op I/O 2025 checkout met meerdere producten voor abonnementen aan. Eén aankoopflow verkoopt een basisabonnement plus optionele add-ons, samen gefactureerd volgens één schema. De ontwikkelaarsgids van Google stelt vaste grenzen:

  • Alleen automatisch verlengende basisabonnementen kunnen add-ons dragen. Prepaid abonnementen niet.
  • Alle items moeten dezelfde terugkerende factureringsperiode hebben. Maandelijkse add-ons op een jaarlijks basisabonnement zijn niet toegestaan.
  • Een aankoop bevat maximaal 50 items, dus één basisabonnement en tot 49 add-ons.
  • De functie is niet beschikbaar in Zuid-Korea.

Alles staat op één aankooptoken. Als je purchases.subscriptionsv2.get aanroept, bevat het antwoord een lineItems-lijst met één regel per item. Elke regel heeft een eigen productId, expiryTime en latestSuccessfulOrderId. Dat laatste veld maakt terugbetalingen per item mogelijk: elk item heeft zijn eigen laatste bestelling.

Pro rata rekenen begint op dag één

Voegt een gebruiker halverwege de cyclus een add-on toe, dan rekent Google direct een bedrag naar rato, zodat de add-on op dezelfde datum verlengt als het basisabonnement. Het eigen voorbeeld van Google is een maandelijkse add-on van $ 10, toegevoegd op 15 augustus na een proefperiode van 7 dagen, waarvoor $ 2,90 wordt gerekend voor de rest van augustus. Eén add-on kan dus een korte bestelling met een afwijkend bedrag hebben vóór zijn eerste volledige bestelling. Houd daar rekening mee als je opzoekt welke bestelling een terugbetaling raakt.

Je klant kan alleen de hele bundel opzeggen

De helppagina van Google voor consumenten is er duidelijk over. Gebruikers kunnen het basisabonnement en de add-ons alleen samen opzeggen, en losse add-ons kunnen op dit moment niet via Google Play worden opgezegd. Pauzeren kan ook niet. Weigert een gebruiker een prijsverhoging, dan zegt Google het basisabonnement en elke add-on mee op.

Een klant die van één add-on af wil, heeft in de Play Store dus twee opties: alles opzeggen of zijn geld terugvragen. Geen van beide is goed voor jou. Volgens de gids van Google kan je app in plaats daarvan het verwijderen aanbieden. Een verwijderde add-on verloopt aan het einde van zijn huidige factureringsperiode, en de rest van de bundel blijft verlengen.

De terugbetalingstools voor add-ons van Google Play abonnementen vergeleken

Google geeft je vijf manieren om geld terug te sturen bij een abonnement met add-ons. Ze verschillen in wat ze terugbetalen en of de toegang stopt.

ToolWat wordt terugbetaaldWat er met de toegang gebeurt
Terugbetaling van een specifieke bestelling in Play ConsoleEen bedrag dat je zelf kiest op die bestellingEr wordt niets ingetrokken
orders.refund, revoke niet ingesteldHet volledige bedrag van één bestellingEr wordt niets ingetrokken
subscriptionsv2.revoke met itemBasedRefundDe volledige laatste afschrijving van één itemAlleen dat item stopt, tenzij het het laatste actieve item was
subscriptionsv2.revoke met proratedRefundDe laatste bestelling van elk item, naar rato van de resterende tijdAlle items stoppen direct
subscriptionsv2.revoke met fullRefundDe volledige laatste afschrijving van elk itemAlle items stoppen direct

Google geeft in zijn add-onsgids één harde waarschuwing: roep het verouderde purchases.subscriptions.refund niet aan op een abonnement met add-ons. En orders.refund kan geen bestellingen aanraken die ouder zijn dan drie jaar.

Hoe itemBasedRefund werkt

Het object itemBasedRefund heeft één verplicht veld, productId, dat het in te trekken item noemt. Google beschrijft twee uitkomsten:

  • Andere items zijn nog actief: alleen het genoemde item wordt ingetrokken en volledig terugbetaald, en het abonnement loopt door.
  • Er zijn geen andere items actief: het item wordt ingetrokken en volledig terugbetaald, en het hele abonnement wordt opgezegd.

Je kunt per verzoek één item noemen. Wil je twee add-ons terugbetalen, doe dan twee aanroepen.

Wanneer Google een terugbetaling per item blokkeert

Google weigert een itemBasedRefund in drie gevallen. Het abonnement staat in een status met geweigerde betaling, waaronder de respijtperiode en de accountblokkering. Het genoemde item is niet in bezit of al verlopen. Of de aankoop is een prepaid abonnement, waarbij het opzeggen van losse items helemaal niet wordt ondersteund.

Wat een terugbetaling op bestel-ID doet

De gids van Google merkt op dat de revoke-vlag bij orders.refund de toegang alleen beëindigt als de bestelling de laatste van het abonnement is. Bij een oudere bestelling slaagt de terugbetaling, maar wordt er niets ingetrokken. Play Console werkt net zo: betaal je de meest recente bestelling terug, dan wordt het abonnement verwijderd. Betaal je een oudere terug, dan blijft het actief. Kies bij add-ons de bestelling uit de latestSuccessfulOrderId van de juiste regel, anders betaal je misschien een andere afschrijving terug dan je bedoelde.

Wie over de terugbetaling beslist, en wanneer je om bewijs wordt gevraagd

Over de meeste terugbetalingen bij een abonnement met add-ons wordt zonder jou beslist, net als bij elk ander Play abonnement. Binnen 48 uur na een aankoop kan een gebruiker het Google vragen via Een probleem melden, en Google beslist. Daarna verwijst Google hem naar jou. En als je een nieuwe abonnementsaankoop niet binnen drie dagen bevestigt, betaalt Google de gebruiker automatisch terug en trekt het de aankoop in.

Maar één flow vraagt naar jouw kant van het verhaal. Dient een kaarthouder een chargeback in en markeert Google die voor beoordeling door de ontwikkelaar, dan krijg je een PendingRefundReviewNotification en heb je 24 uur om orders.reviewrefund aan te roepen met een terugbetalingsvoorkeur en bewijs van gebruik. Over chargebacks zelf beslist de bank, en die beslissing is definitief.

Terugbetalingen van add-ons bijhouden op je server

De RTDN-referentie van Google noemt SUBSCRIPTION_ITEMS_CHANGED voor wijzigingen aan een item in een abonnementsbundel, en SUBSCRIPTION_REVOKED voor een abonnement dat vóór de vervaldatum is ingetrokken. Volgens de gids van Google leidt een intrekking via subscriptionsv2.revoke tot zowel een SUBSCRIPTION_REVOKED-melding als een VoidedPurchaseNotification, en wordt die vastgelegd in de Voided Purchases API.

Het addertje is de subscriptionId. Volgens Google wordt die niet meegestuurd in RTDN's voor abonnementen met add-ons. Vertrouw er dus niet op dat de melding je vertelt welk item is gewijzigd. Bij elke melding voor een bundel:

  • Roep purchases.subscriptionsv2.get aan met de purchaseToken.
  • Lees elk lineItem en de bijbehorende expiryTime. Volgens Google moet je expiryTime voor alle items vernieuwen, niet alleen voor het item dat je verwacht.
  • Geef of ontneem toegang per productId, niet per aankooptoken.
  • Bevraag de Voided Purchases API regelmatig als vangnet. Die dekt de afgelopen 30 dagen.

Respijtperiode en accountblokkering gelden voor de hele bundel

Betalingsproblemen raken alle items tegelijk. Google kiest de kortste respijtperiode van de actieve items en past die toe op de hele verlenging. Tijdens de respijtperiode houdt de gebruiker elk item. Bij een accountblokkering wordt de toegang tot alle items opgeschort. Komt de betaling nooit rond, dan verlopen de geweigerde items en lopen de andere items door voor de rest van hun factureringsperiodes.

Een bureau van een ontwikkelaar met een laptop die grafieken van serverkosten toont naast een gespecificeerde factuur, waarop de betaalde kosten achter elke add-on van een Google Play abonnement worden bijgehouden

Wat elke terugbetalingsroute je aan geld kost

Add-ons staan meestal voor iets waar jij voor betaalt. Extra cloudopslag wordt gefactureerd door je opslagprovider. Een pakket AI-credits wordt gefactureerd in aanroepen naar een model-API. Een extra plek betekent meer rekenkracht, en een creatorniveau kan een uitbetaling in gang zetten. Al die kosten ontstaan wanneer de gebruiker de add-on gebruikt. Een terugbetaling geeft de prijs terug, maar geen van die kosten.

Te veel terugbetalen

De dure fout is grijpen naar fullRefund of proratedRefund als de klacht over één add-on gaat. Beide trekken elk item in, dus je geeft ook de basisprijs terug en verliest een abonnee die wilde blijven. Een itemBasedRefund geeft alleen de laatste afschrijving van die add-on terug. Is die geblokkeerd, dan geeft een orders.refund op de laatste bestelling van dat item het geld terug zonder iets te beëindigen.

Gedeeltelijke terugbetalingen en kosten

In Play Console kun je gedeeltelijke terugbetalingen doen op abonnementsbestellingen, en volgens Google geldt het terugbetalingspercentage ook voor je uitbetaling en de servicekosten. Betaal je de helft van een bestelling terug, dan krijg je ook de helft van de kosten van Google terug. Je eigen kosten voor het leveren van die add-on niet.

Chargebacks op een bundel

Voor bestellingen na 3 augustus 2026 legt Google de kosten van chargebacks bij ontwikkelaars. Slaagt een chargeback, dan betaal je de aankoopprijs min de servicekosten van Play, plus de kosten die de bank rekent. Een bundelbestelling met meerdere add-ons is een grotere bestelling om te verliezen. Gebruikslogs per add-on, gekoppeld aan de verhulde account-ID, zijn wat je zou insturen bij een beoordeling binnen 24 uur.

Een checklist voor terugbetalingen van add-ons

  • Bied in de app een manier om één add-on te verwijderen, want Google Play biedt die niet.
  • Sla bij elke melding de productId, expiryTime en latestSuccessfulOrderId van elk lineItem op.
  • Kies standaard voor itemBasedRefund als één add-on het probleem is.
  • Staat het abonnement in de respijtperiode of een accountblokkering, betaal dan in plaats daarvan de bestelling van het item terug met orders.refund.
  • Roep nooit het verouderde purchases.subscriptions.refund aan op een bundel.
  • Log het gebruik van add-ons per account, zodat een beoordeling van een chargeback binnen 24 uur de deur uit kan.
  • Rapporteer terugbetalingspercentages per add-on, niet alleen per abonnement, zodat een zwakke add-on zich niet verstopt in de cijfers van het basisabonnement.

Veelgestelde vragen

Kan een gebruiker maar één add-on van een Google Play abonnement opzeggen?
Niet via Google Play. Volgens de helppagina van Google kunnen gebruikers het basisabonnement en de add-ons alleen samen opzeggen. Je app kan het verwijderen van één add-on aanbieden. Die verloopt dan aan het einde van zijn huidige factureringsperiode.
Hoe betaal ik één add-on terug zonder het abonnement op te zeggen?
Roep purchases.subscriptionsv2.revoke aan met een itemBasedRefund dat de productId van de add-on noemt. Blijven andere items actief, dan trekt Google alleen dat item in en betaalt het volledig terug. Je kunt ook de laatste bestelling van het item terugbetalen met orders.refund zonder de revoke-vlag. Dat geeft het geld terug en laat de toegang ongemoeid.
Waarom mislukte mijn itemBasedRefund-aanroep?
Google blokkeert die als het abonnement in een status met geweigerde betaling staat, als het item niet in bezit is of verlopen is, en bij prepaid abonnementen. Controleer vóór de aanroep de expiryTime van de regel en de status van het abonnement.
Werkt een terugbetaling naar rato bij een abonnement met add-ons?
Ja, maar die trekt alles in. Google betaalt de laatste bestelling van elk item terug, naar rato van de resterende tijd tot de volgende verlenging, en de toegang tot alle items stopt direct.
Welke RTDN vertelt me dat een add-on is terugbetaald?
Volgens de gids van Google leidt een intrekking tot SUBSCRIPTION_REVOKED en een VoidedPurchaseNotification, en SUBSCRIPTION_ITEMS_CHANGED dekt wijzigingen aan een item in een bundel. Omdat de subscriptionId bij bundels ontbreekt, roep je purchases.subscriptionsv2.get aan en lees je elk lineItem om te zien wat er is gewijzigd.

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.