Skip to main content
Question

Customer refunding non-consumable

  • March 25, 2026
  • 2 replies
  • 16 views

Forum|alt.badge.img+4

I understand that, as a developer, we should refund via RC dashboard, not Play Console. However, what about when the customer triggers a refund on the Play Store? How can my app detect this? Or will it actually be reflected somehow in the entitlements?

2 replies

Tarek
RevenueCat Staff
Forum|alt.badge.img+4
  • RevenueCat Staff
  • March 27, 2026

Hey Mark,

 

Thank you for reaching out, Tarek from the support team here.

 

For Google Play Store purchases you can indeed issue refunds from the dashboard as outlined in our documentation. (Please note that this does not apply to Apple which doesn't allow developers to issue refunds)

 

Usually, a refund automatically revokes the attached subscription. As long as you listen for an up-to-date CustomerInfo in your app, the entitlement will be revoked and you can prevent unwanted access.

 

If the customer asks for a refund on the Play Store, it can take up to 24 hours to be detected.

 

Also, please note that refunds due to no acknowledgement of purchases aren't detected automatically. You must refund and revoke in order for RevenueCat to detect this. Feel free to check out Google's documentation here on this.

 

I hope this is useful!

 

Best regards,


Forum|alt.badge.img+4
  • Author
  • Dedicated Member
  • March 27, 2026

Thank you from your reply. So, if I understand you correctly, if the user triggers a refund, then this will be reflected in the RC entitlements (though may take up to 24 hours). So as long as I’m reacting to RC entitlements, then this should not be an issue.

On another note, what is the rationale behind entitlements regarding non-consumables? Over the years, I’ve purchased and consumed products on Google Play (for testing purposes - i.e. to retest purchase flow). These products are marked as non-consumables in RC dashboard. So when I implemented RC (as replacement for Play Billing), I noticed all my entitlements were granted even though Play Billing queryPurchasesAsync() returns empty purchases (because all consumed).

I understand that consuming a non-consumable is going to be a grey area, but why is RC getting historical purchases instead of using queryPurchasesAsync()?