Short answer
Check that the app completes every purchase after unlocking it (finish on iPhone, acknowledge on Android within three days), listens for purchases that finish while the app is closed or later, such as Ask to Buy and pending payments, has a working Restore Purchases button, and, with RevenueCat, that each product is attached to the entitlement the app checks and the user is signed in as the same customer.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why premium didn’t unlock, and the fix
01
Android: the purchase was never acknowledged
“must be done within three days so that the purchase isn't automatically refunded and entitlement revoked.” Android Developers, Integrate the Google Play Billing Library into your app
After a purchase, the app has to tell Google it was processed. If the app doesn’t do that within three days, Google refunds the purchase automatically and removes access. On iPhone, the matching step is to finish the transaction once the content is unlocked.
02
The app only checks at the moment of purchase
“Without the Task to listen for these transactions, your app may miss them.” Apple, Transaction.updates
Some purchases complete later or outside the app: a parent approving Ask to Buy, an offer code, or a purchase made in the App Store. The app has to listen for new transactions while it runs and check again when it opens.
03
Android: the payment was still pending
“Only grant entitlement when the purchase transitions from PENDING to PURCHASED.” Android Developers, Integrate the Google Play Billing Library into your app
With some payment methods the purchase stays pending until the user finishes paying, even after the app is closed. The app should unlock premium once the purchase turns into a completed one, and look for completed purchases when it opens.
04
RevenueCat: the product isn’t attached to the entitlement
“Failing to add your products to an entitlement, could lead to your users making purchases that don't unlock access to the promised content.” RevenueCat, Entitlements
The app unlocks premium when an entitlement is active, and an entitlement only turns on for the products attached to it. A new product that was never attached unlocks nothing. Check the entitlement’s products in the RevenueCat dashboard.
05
RevenueCat: the user is a different customer now
“the cache will be cleared and a new random anonymous App User ID will be generated” RevenueCat, Identifying Customers
An app that uses RevenueCat’s anonymous IDs gets a new one after a reinstall, so the purchase belongs to the old ID. Sign users in with your own account ID. Otherwise a user can tap Restore Purchases, and whether RevenueCat moves the purchase to the new ID depends on the transfer behavior setting in your project.
06
There is no Restore Purchases button
“Include some mechanism in your app, such as a Restore Purchases button, to let users restore their Apple In-App Purchases.” Apple, AppStore.sync()
Apple says to include a Restore Purchases button so users can restore their purchases. Apple also says a reinstalled app or a new device gets all transactions automatically on first launch, so the button matters most when a user thinks something is missing.
Checked against the vendor’s docs on : Android Developers: Integrate the Google Play Billing Library; Apple docs: Transaction.updates; Apple docs: finish(); Apple docs: AppStore.sync(); RevenueCat docs: Entitlements; RevenueCat docs: Identifying Customers; RevenueCat docs: Restoring Purchases.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: RevenueCat products could not be fetched · App Store Guideline 3.1.1 in-app purchase · Google Play Billing Library deprecated · Stripe paid but account not upgraded