Handling Refunds for In-App Purchases (Billing Services)

Learn how refunds are handled across Google Play and iOS for in-app purchases.

Overview

Different app stores handle refunds and entitlement revocation in different ways. Here’s a clear breakdown for both Google Play and Apple App Store platforms.


Refund Support Matrix

Product Type
Google Play: Refundable & Revocable
Apple App Store: Refundable & Revocable

Consumables

✅ Refund via play store,

❌ No control on blocking the content after restore without a backend server

✅ Refund via App Store Support,

❌ No control on blocking the content after restore without a backend server

Non-Consumables

✅ Refund with Revoke Entitlement (in play console at the time of refunding from orders page)

✅ Refund auto-removes from RestorePurchases

Subscriptions

✅ Refund with Revoke Entitlement

✅ Refund auto-removes from RestorePurchases


📌 Important: Platform Refund & Entitlement Behavior

Google Play

  • When issuing a refund via the Google Play Console for non-consumables or subscriptions:

    • You must enable "Revoke entitlement" for the app to detect the refund.

    • If enabled:

      • IsProductPurchased(productId)false

      • User’s entitlement will be removed.

Apple App Store

  • On iOS, when a refund is processed by Apple (usually via App Store Support or user refund requests):

    • Automatically revoked — no manual revoke option needed.

    • The product will not appear in subsequent RestorePurchases calls.

    • IsProductPurchased(productId) will also return false.

    • Works seamlessly for non-consumables and subscriptions.

Last updated

Was this helpful?