---
title: "TN3188: Troubleshooting In-App Purchases availability in the App Store"
framework: technotes
role: article
role_heading: Article
path: technotes/tn3188-troubleshooting-in-app-purchases-availability-in-the-app-store
---

# TN3188: Troubleshooting In-App Purchases availability in the App Store

Verify your In-App Purchases are approved and available for sale in the App Store.

## Overview

Overview When launching your app in the App Store, the app may not display your In-App Purchases. To offer In-App Purchases in your app, call products(for:) with a list of product identifiers (Product ID) matching these products in App Store Connect. Product.products(for:) returns an array that includes an instance of Product for each of the In-App Purchases. Update your app’s UI with these returned instances, which contain all In-App Purchase data configured in App Store Connect for your app. If Product.products(for:) fails to return a Product instance for your In-App Purchases, it may be due to the following reasons: Your In-App Purchases are missing or don’t exist in the App Store. Your In-App Purchases exist in the App Store, but they are unapproved and unavailable. note: If your app fails to display its products when testing In-App Purchases in Xcode or the Apple sandbox environment, see TN3185: Troubleshooting In-App Purchases availability in Xcode and TN3186: Troubleshooting In-App Purchases availability in the sandbox, respectively. Validate your product identifier list To verify your product identifier list, perform these steps: In your Xcode project, Preparing your app for distribution your app’s CFBundleIdentifier. In App Store Connect, find the app that matches your app’s bundle ID. Verify each product identifier in your list matches the product identifier (Product ID) of an In-App Purchase created for the app in App Store Connect. Review the status of your In-App Purchases In App Store Connect, submit your In-App Purchases for review. To submit an In-App Purchase for review, the In-App Purchase must have the Ready to Submit status. If the In-App Purchase doesn’t have this status, complete any missing information such as price or localization for the subscription group display name. For more information about submitting In-App Purchases, see Submit for review. After Apple completes review of your In-App Purchases, confirm that the status of each In-App Purchase you submitted is Ready to Submit. If App Store Connect shows Ready to Submit or Ready to Submit for an In-App Purchase, handle the status as described in the following table:  |   |   |  Review the availability of your In-App Purchases A customer’s Apple Account country or region determines the App Store country or region where they can purchase content. For example, an account set to Canada can only purchase In-App Purchases from the App Store in Canada. If your In-App Purchase is available in all countries or regions of the App Store except Canada, products(for:) won’t return a Product instance for your In-App Purchase on a device with an Apple Account set to Canada. In App Store Connect, you can select or deselect the countries or regions where your In-App Purchases are available on the App Store. For more information, see Set availability for in-app purchases. After you confirm the status of your In-App Purchases is Ready to Submit, review their availability in App Store Connect. Confirm you select all the countries or regions where you want to sell the In-App Purchases. For instance, select all the countries and regions supported by the App Store to make your In-App Purchases available for sale in every App Store. Retry your product request later After Apple approves your In-App Purchases, it may take some time for the In-App Purchases to be available in all the countries or regions you select in App Store Connect. Revision History 2025-04-29 First published.

## See Also

### Latest

- [TN3210: Optimizing your app for iPhone Mirroring](technotes/tn3210-optimizing-your-app-for-iphone-mirroring.md)
- [TN3211: Resolving SwiftUI source incompatibilities for State and ContentBuilder](technotes/tn3211-resolving-swiftui-source-incompatibilities-for-state-and-contentbuilder.md)
- [TN3212: Adopting gesture recognizers for Sidecar touch support](technotes/tn3212-adopting-gesture-recognizers-for-sidecar-touch-support.md)
- [TN3208: Preparing your app’s launch screen to meet App Store requirements](technotes/tn3208-preparing-your-apps-launch-screen-to-meet-app-store-requirements.md)
- [TN3205: Low-latency communication with RDMA over Thunderbolt](technotes/tn3205-low-latency-communication-with-rdma-over-thunderbolt.md)
- [TN3206: Updating Apple Pay certificates](technotes/tn3206-updating-apple-pay-certificates.md)
- [TN3179: Understanding local network privacy](technotes/tn3179-understanding-local-network-privacy.md)
- [TN3190: USB audio device design considerations](technotes/tn3190-usb-audio-device-design-considerations.md)
- [TN3194: Handling account deletions and revoking tokens for Sign in with Apple](technotes/tn3194-handling-account-deletions-and-revoking-tokens-for-sign-in-with-apple.md)
- [TN3193: Managing the on-device foundation model’s context window](technotes/tn3193-managing-the-on-device-foundation-model-s-context-window.md)
- [TN3115: Bluetooth State Restoration app relaunch rules](technotes/tn3115-bluetooth-state-restoration-app-relaunch-rules.md)
- [TN3192: Migrating your iPad app from the deprecated UIRequiresFullScreen key](technotes/tn3192-migrating-your-app-from-the-deprecated-uirequiresfullscreen-key.md)
- [TN3151: Choosing the right networking API](technotes/tn3151-choosing-the-right-networking-api.md)
- [TN3111: iOS Wi-Fi API overview](technotes/tn3111-ios-wifi-api-overview.md)
- [TN3191: IMAP extensions supported by Mail for iOS, iPadOS, and visionOS](technotes/tn3191-imap-extensions-supported-by-mail.md)
