I’ve migrated an Android app to RevenueCat that previously used Google Play Billing v5 (or older). The app offered several non-consumable one-time purchases. These were acknowledged, not consumed, and users could restore them via queryPurchaseHistoryAsync() before the migration. My app did not require a user to authenticate and relied completely on Google Play Billing to restore purchases made by users.
After integrating RevenueCat, no existing users show active entitlements - even after calling both restorePurchases() and syncPurchases(). New purchases made via RevenueCat work fine.
I’ve verified:
-
Old product IDs still exist in Play Console and are added under Products in RevenueCat, mapped to the correct entitlements.
-
Users are using the same Google Play account.
-
No backend was used previously to store purchase tokens.
-
queryPurchasesAsync(INAPP)now returns empty results for these users.
It seems older non-consumable purchases may have been acknowledged but are now invisible to the current BillingClient API, meaning RevenueCat can’t detect them.
Question:
Is there any path forward to automatically restore legacy non-consumable purchases that Google no longer returns via queryPurchasesAsync()?
Any guidance or official migration best practices for older (Billing v5 or earlier) one-time purchases would be appreciated.
