Why are offerings or products empty?

  • 14 July 2021
  • 0 replies

Userlevel 5
Badge +9

If you're still testing in sandbox, it's most likely a configuration issue that's preventing the products from being retrieved from Apple/Google. Your product identifiers are set in RevenueCat, but the actual products that your users purchase can only be retrieved directly from Apple/Google. Because this communication happens between your app and the stores, RevenueCat doesn't have any visibility into the API requests, however there are some common requirements to go through.

iOS and Android

  1. The product identifier set in RevenueCat matches exactly with the store
  2. You're testing on a physical device and not a simulator
  3. The bundle ID in Xcode [iOS] or package name [Google/Amazon] match what's in App Store Connect or Google Play/Amazon Developer console.
  4. If you have both development and production environments for your app, be sure to double check you are using the correct bundle IDs [iOS] or package names [Google/Amazon].

iOS Only

  1. Products are in the in the ‘Ready To Submit’ or ‘Approved’ state
    All of the products are in the Ready to Submit state - great!


  2. You've signed your 'Paid Applications Agreement'. Double check that it hasn’t expired for an existing app.
    In this screenshot the Paid Applications Agreement needs to be signed.

  3. If you're trying to fetch products from the App Store, ensure you're not using a StoreKit Configuration file 
  4. Changing the reference name in App Store Connect can also cause products to not fetch on iOS. Create a new product with a different identifier, fill out any missing metadata, and attempt to fetch products again.

Google Only

  1. The subscription product is in the Active state. Follow our guide on setting up Android products to make sure your products are set up correctly.
    This product needs to be activated before it can be tested in RevenueCat.
    The subscription is now active.


  2. Your app is published on a closed track and you've added a tester0987b354-7369-4796-b10b-646d21625ab4.png3be257f9-c023-4a0e-8841-22a2b46386a7.png
  3. Finally, double check your products are marked as Backwards Compatible in the Google Play Console


Amazon Only

  1. When testing locally, you need to set up the AppTester app from Amazon, and in AppTester you need to upload a JSON file with all of the products you offer. You can download a ready-to-use JSON file from the Amazon developer console. Follow this guide to learn how to upload the JSON file to AppTester.
  2. When testing locally, you should be able to display the products (assuming AppTester is installed, sandbox mode is enabled and the products JSON is correctly uploaded), but purchases won’t be validated by RevenueCat.


Live Apps (public on the App Store/Play Store)

If your app is live and everything was working during testing, you should check that:

  1. All products are in the 'Approved' state in App Store Connect [iOS]
  2. Products have been approved for 24hrs+. Due to store propagation time, it can take 24hrs+ for new products to become available after being approved - this is the same for new apps and adding new products to existing apps.

App Review

If your products fetch fine in Sandbox and Testflight, but App Store Review is unable to fetch products, ensure that you are submitting your in-app purchases with your app for review. More details in our App Store rejections documentation.

The App Review environment is notoriously flaky and can cause issues when the reviewer tests in-app purchases. Submitting a video to Apple of the in-app purchase flow working in Testflight could help with App Review.

For more information on rejections, view our post on App Rejections:


If you’re still stuck…

If you’ve gone through all of the steps above, and you’re still stuck, you can look through the ‘Empty Products’ tag in the community to see how other developers have resolved the problem: https://community.revenuecat.com/search?q=Empty+Products&search_type=tag.

If we ever learn new reasons for this issue we’ll be sure to update the post here.

This post has been closed for comments