StoreKit

RSS for tag

Support in-app purchases and interactions with the App Store using StoreKit.

StoreKit Documentation

Posts under StoreKit subtopic

Post

Replies

Boosts

Views

Activity

Your first subscription must be submitted with a new app version.
I have seen this problem arise from multiple sources. I am trying to submit my app but a new app version must be bundled with the subscription. The guide consistently says (copy pasted from the "Submit an In-App Purchase" guide) _"On the right, scroll down to the In-App Purchases and Subscriptions section. Click Select In-App Purchases or Subscriptions, or if you’ve already started selecting In-App Purchases or subscriptions, click Edit."_ The problem is there IS NO In-App Purchases or subscription section in the the app section. I have submitted again but at this point I'm loosing hope. I am hoping that adding a StoreKit config file this time on the Xcode side will help however again reading "submission (1)" does not give much hope. Please help as this has delayed launch by quite a lot.
0
0
315
Jun ’26
Can Product.products / SKProductsRequest be used only for display metadata when EU storefront uses ExternalPurchaseCustomLink only?
This is a StoreKit / ExternalPurchaseCustomLink clarification. Apple DTS asked me to post the follow-up question here. We are designing an SDK for apps that support EU external purchase. In EU storefronts, the app will use ExternalPurchaseCustomLink only: No App Store In-App Purchase will be offered to users. No Product.purchase() will be called. No SKPaymentQueue.add(_:) will be called. The actual purchase will happen only on our external website through the ExternalPurchaseCustomLink flow. Question: In this EU ExternalPurchaseCustomLink-only setup, is it acceptable and supported to call Product.products(for:) / SKProductsRequest only to fetch product display metadata from App Store Connect? The metadata would only be used to display the product list UI, for example: product title / display name localized price currency / priceLocale formatting information The returned Product / SKProduct would not be used to start an App Store purchase. Or should apps avoid Product.products(for:) / SKProductsRequest entirely in EU storefronts where only ExternalPurchaseCustomLink is offered, and use their own product catalog instead?
1
0
430
Jun ’26
IAP products not loading in sandbox after activating Paid Apps Agreement
I activated the Paid Apps Agreement today along with banking and tax information. My app uses react-native-purchases (RevenueCat) with StoreKit 2. When tapping purchase buttons in TestFlight I still get "Product not available - Could not load this product." Products show "Waiting for Review" in App Store Connect. Sandbox tester is configured. Is there a delay after activating the Paid Apps Agreement before sandbox purchases work? How long should I expect to wait?
0
0
318
Jun ’26
New auto-renewable subscription not appearing in sandbox (getOfferings/StoreKit returns 0) after re-creating the product — new app, not yet approved
I have a new app (first version, not yet approved) with one auto-renewable subscription. Earlier in development, the subscription loaded and I could complete a sandbox purchase (the StoreKit sheet showed "Sandbox", the price, and my sandbox account). To resolve an App Store Connect submission deadlock, I deleted that subscription and created a new one with a new Product ID. Since then, the new subscription does NOT appear in the sandbox: StoreKit returns no products, so getOfferings (via RevenueCat) returns 0 packages — both during App Review and on my own development build signed into a sandbox account. Configuration (all verified): Subscription is "Ready to Submit" / "Waiting for Review" Available in all territories Paid Apps Agreement active; banking and tax complete Bundle ID and shared secret unchanged from when it worked App Review keeps rejecting under Guideline 2.1(b) ("プレミアムをはじめる" / purchase button unresponsive) because the product never loads. Questions: For a newly created IAP on a not-yet-approved app, how long does it take to become available in the sandbox? Is there a known propagation delay (24h+)? Does re-creating the product with a new Product ID reset or delay sandbox availability? Is anything required for a new product to be served in the sandbox before the app's first version is approved? Any guidance appreciated. Thanks!
1
0
429
Jun ’26
Help with Subscriptions and Localization
Let me start by saying i found 1000s of posts for similar topic and nothing so far worked for me so im here now. This is the first im i developed an app with subscriptions now the problem im facing it is showing missing metadata on all subscriptions i created. inside there is no error just on localization section it shows "Prepare for Submission" and hovering it says i have to submit localization seperately. Now the question is there is no way to submit localization and no way to select subscription when im submitting app for review which i believe is for above reason. I have followed almost everything available online since yesterday from business to screenshots to notes nothing so far worked for me. Need your support to resolve this issue asap Thank you
1
0
458
Jun ’26
initConnection() from react-native-iap throws "undefined is not a function" in TestFlight build — StoreKit not connecting
Platform & Versions React Native: 0.85.3 Expo SDK: 56 react-native-iap: 15.3.3 iOS: 18.7.8 Device: iPhone 16 Pro Distribution: TestFlight (distribution: "store" via EAS Build) Problem In a TestFlight build (App Store distribution, not ad-hoc), calling initConnection() from react-native-iap throws a TypeError: "undefined is not a function" on iOS. This happens on every app launch. The error is caught in a try/catch around initConnection() and we never reach getSubscriptions() or purchaseUpdatedListener(). The app never connects to StoreKit. All IAP attempts fail immediately with "Store unavailable." What we've confirmed Sandbox tester account is configured in Settings → App Store → Sandbox Account "Allow Purchases & Renewals" is ON in the Sandbox Testing screen An active sandbox subscription exists (visible in Settings → App Store → Sandbox Account → Subscriptions), meaning StoreKit was reachable at some earlier point react-native-iap is listed in the Expo config plugins in app.json — EAS should be linking StoreKit.framework and adding the com.apple.developer.in-app-payments entitlement Built with --clear-cache to force a clean native project generation All 5 IAP product IDs (2 subscriptions, 3 consumables) are linked to the app version in App Store Connect and are in "Ready to Submit" state ITSAppUsesNonExemptEncryption is set to false in Info.plist Code try { await initConnection(); // throws "undefined is not a function" // never reaches here await getSubscriptions({ skus: ['com.smartailearning.iem.pro.yearly', 'com.smartailearning.iem.pro.monthly'] }); } catch (e) { console.error(e.message); // "undefined is not a function" } Question Is react-native-iap v15 incompatible with React Native 0.85 / Expo SDK 56 on iOS? Is there a known issue with the StoreKit native module not loading in EAS-managed builds? Should we be using StoreKit directly via a custom native module instead?
0
0
263
Jun ’26
First app release rejected because IAPs didn’t appear, and now the In-App Purchases section is missing from the app version page
I’m trying to submit the first release of my iOS app together with the app’s first consumable in-app purchases, and I’m stuck in what looks like an App Store Connect state issue. My app was already rejected by App Review because the in-app purchases did not appear inside the app when the reviewer opened the paywall. Current setup: First app release Current app version page: iOS App Version 1.0.2 Current attached build: 5 App has never been released before 4 consumable IAPs: com.glowup.credits.100 com.glowup.credits.500 com.glowup.credits.1000 com.glowup.credits.2500 What I see in App Store Connect: All 4 IAPs show Waiting for Review On the iOS App Version 1.0.2 page, the In-App Purchases and Subscriptions section does not appear at all Because of that, I cannot explicitly select or attach the IAPs from the version page What I’ve already done: Uploaded a new build and attached build 5 to version 1.0.2 Removed my local StoreKit configuration file so the app now uses live App Store / StoreKit only Confirmed RevenueCat is configured correctly and sees the offering/packages RevenueCat logs show the products exist remotely, but StoreKit cannot fetch any live products and returns an “offerings empty / none of the products could be fetched” type error RevenueCat also reports the products are still in WAITING_FOR_REVIEW My questions: If the IAPs already show Waiting for Review, are they automatically linked to the current app submission? Is it expected that the In-App Purchases and Subscriptions section can disappear from the app version page in this state? For a first-release app that was already rejected, is attaching a new build and clicking Update Review enough, or is there another step required to associate the IAPs with the resubmission? Has anyone seen App Review reject an app for missing IAPs while the IAPs were still pending review and not yet fetchable from StoreKit? Any guidance from someone who has dealt with this exact first-release + first-IAP submission flow would help a lot.
2
0
596
Jun ’26
StoreKit returns 0 subscriptions on TestFlight — Apple IAP payment sheet never opens (Capacitor + RevenueCat)
Hello, I'm developing a Capacitor/Next.js iOS app with RevenueCat for auto-renewable subscriptions. On a real iPhone via TestFlight, StoreKit never returns my subscription products, so the Apple payment sheet never appears. App TestFlight builds tested: 110, 111, 112 (iOS 1.1.0) In-App Purchase capability enabled on App ID Paid Applications Agreement: active Banking/tax: active Subscription product IDs (auto-renewable, same subscription group) vytalai_premium_monthly vytalai_premium_yearly vytalai_premium_yearly_intro (exit offer) What happens Install app from TestFlight on physical iPhone Navigate to paywall App calls RevenueCat → Purchases.getProducts() with the 3 product IDs above StoreKit returns 0 products (or configure/getProducts times out) UI shows: "Apple Store: 0 subscriptions on this device — Sandbox popup cannot open" Tapping subscribe does not open the Apple payment sheet Fallback prices appear (3.49 / 29.99) instead of live App Store prices (3,49 € / 29,99 €), which suggests StoreKit is not returning products. What we already verified Correct bundle ID in build metadata NEXT_PUBLIC_REVENUECAT_API_KEY_IOS (appl_*) embedded in EAS production build Provisioning profile regenerated and active Subscription metadata corrected (was Rejected, now Waiting for Review) All 3 subscriptions attached to app version submission RevenueCat offering "default" with monthly, annual, and annual_intro packages App Store Server Notifications URL configured to RevenueCat Legal pages open in-app (no external cookie banner on native) Testing on TestFlight only (not Safari/web) App Review context We received Guideline 2.1(b) rejections because: Error on purchase page Exit offer (50% OFF / €1.91 per month equivalent) referenced product vytalai_premium_yearly_intro which was not submitted for review initially — now added and submitted with the app version. Question Even with subscriptions in "Waiting for Review" state and metadata completed, should StoreKit Sandbox/TestFlight return these products on device so we can test the payment sheet before approval? If not, what exact App Store Connect state is required for StoreKit to return products on TestFlight? Any guidance on why getProducts would return 0 for valid product IDs on a TestFlight build would be greatly appreciated. Thank you.
2
0
545
Jun ’26
StoreKit purchase cancelled after app backgrounding during bank authentication (3D Secure)
Hello, We are experiencing an issue with StoreKit purchases on iOS. Some users are required by their bank to complete an additional authentication step (3D Secure / banking app validation) during an in-app purchase subscription flow. The purchase starts correctly and StoreKit displays the purchase sheet. When the user temporarily leaves the app to validate the payment in their banking application and then returns, StoreKit eventually reports the purchase as cancelled. No transaction is delivered to StoreKit observers, no entitlement becomes active, and restoring purchases does not find any completed transaction. Steps to reproduce: Open the app. Start an auto-renewable subscription purchase using StoreKit. Authenticate with Apple ID if requested. When the bank authentication screen appears, leave the app and open the banking application. Approve the payment in the banking application. Return to the original app. Observed result: StoreKit reports the purchase as cancelled and no transaction is received. Expected result: The transaction should continue processing after bank authentication and eventually complete successfully. Environment: Xcode 26.3 (17C529) macOS Tahoe 26.3 iOS 26.2.1 Physical iPhone device Question: Is this expected StoreKit behavior when a user leaves the app for external banking authentication, or is there a recommended StoreKit integration pattern that should allow the purchase flow to continue successfully? Thank you.
12
0
727
Jun ’26
Apple Age Restriction API -
https://developer.apple.com/documentation/declaredagerange/ https://developer.apple.com/documentation/declaredagerange/agerangeservice/requiredregulatoryfeatures For these API, (1) How is Apple determining the user is in Texas? IP or Address on the account? (2) How do we know if an API is active. Testing today (6/18) we are seeing both false in a region/state where the law is now in effect. (3) How will we know when Apple adds more regions to the API enablement? Is there a communication channel for this?
0
0
252
Jun ’26
Third party payment service
Hi everyone, I have a question regarding App Store approval. In my country, Apple In-App Purchases are not supported, so for users in unsupported regions we need to use a third-party payment provider. For countries where In-App Purchases are supported, we plan to use Apple IAP. Could you please advise on the correct approach to ensure the app complies with App Store guidelines and can be approved?
1
0
351
Jun ’26
iOS Subscriptions in Russia – Is Apple In-App Purchase mandatory or can local providers be used?
Hello, We are working on integrating billing into our dating app, targeted at the Russian market. Our main requirement is to support subscriptions with automatic renewal and cancellation. We understand that, according to App Store Review Guideline, all digital subscriptions should use Apple In-App Purchase (IAP). However, we are unsure how this applies in Russia, where some local regulations may limit the use of non-Russian payment processors, and where not all Russian bank cards are accepted by Apple. Our question is: -For iOS apps in Russia, is it strictly required to use Apple IAP for subscriptions? -Are there any approved exceptions allowing integration with local processors such as Robokassa or YooKassa? -How are other developers currently handling subscriptions for the Russian market? We want to ensure full compliance and avoid any risk of rejection or removal. Thank you in advance for any clarification. Best regards, Dan
1
1
558
Jun ’26
AppTransaction.shared throws StoreKitError code=2 in macOS TestFlight while deviceVerificationID is available
I am implementing device authentication for a macOS app. Our iOS app uses App Attest, but App Attest is not available on macOS, so we are evaluating StoreKit's AppTransaction plus AppStore.deviceVerificationID as the macOS equivalent signal. The issue: in a macOS app installed through TestFlight, AppStore.deviceVerificationID is available, but AppTransaction.shared throws StoreKitError code=2. I reproduced this in a focused standalone macOS test app with no backend and no custom dependencies. Environment: Platform: macOS Distribution: TestFlight App Store Connect app ID: 6769568350 Bundle ID: com.soundcity.AppTransactionProbe App version: 1.0 Build: 1 Observed output from the TestFlight-installed app: Bundle ID: com.soundcity.AppTransactionProbe App version: 1.0 Build: 1 deviceVerificationID available: true deviceVerificationID prefix: CA91ED5D... AppTransaction.shared threw error: StoreKitError; domain=StoreKit.StoreKitError; code=2 The relevant code path is essentially: import StoreKit let deviceVerificationID = try? AppStore.deviceVerificationID let appTransaction = try await AppTransaction.shared In the TestFlight-installed build: AppStore.deviceVerificationID succeeds. AppTransaction.shared throws StoreKitError code=2. Questions: Is AppTransaction.shared expected to work for macOS apps distributed through TestFlight? If yes, what does StoreKitError code=2 indicate in this context, and what setup might be missing? If no, is there an Apple-supported way to obtain an AppTransaction JWS, or equivalent signed App Store/TestFlight app-install assertion, for macOS TestFlight builds? For macOS apps that need a device-bound trust signal comparable to iOS App Attest, is AppStore.deviceVerificationID intended to be used without AppTransaction.shared, or should these APIs be used together? I have a focused Xcode test project that demonstrates the issue and can share it if helpful.
4
0
651
Jun ’26
Sandbox testing - Clear Purchase History
Hi, Overview I have an app for which I have created a sandbox account. When I try to clear purchase history it doesn't work, it still shows the in-app purchase items (non-consumable in-app purchases) as purchased. I have tied tried the following ways, but none of them work. Any help on this would be much appreciated! Attempt 1: Go to https://appstoreconnect.apple.com/ Users and Access > Sandbox Check sandbox account > Tap Clear Purchase History button Attempt 2: Go to the iPhone > Settings > Developer > Sandbox Apple Account Tap on account > Manage > Clear Purchase History Attempt 3: Sign out of Sandbox account and sign back in Attempt 4: Delete app and re-run app from Xcode
2
2
564
Jun ’26
Advanced Commerce API SKU verification
Hello! In our app we use Advanced Commerce API with generic consumable products. Does Apple validate SKU of payment request? So if user have several pending purchase requests with same SKU (inside item) will Apple charge only for the latest one or all of pending requests even though SKU is the same?
7
0
360
Jun ’26
App Download Campaign Info and Other Sources Info
Is there any way to get the Campaign Token and the app sources, website sources, sources where the user is downloaded the app inside app using any APIs or Can we add this information along with the App Transaction or via some new API? This will help us to track the actual usage inside the app for each campaign and where from the app is downloaded (source) and position our app experiments better. We do have one for Search Attribution similarly we can add for this it will be more useful for us developers
1
0
304
Jun ’26
Scoping App Attest keys to an appTransactionID
Hi StoreKit team, I posted a question in the App Attest forum yesterday that is related to StoreKit [1]. The engineers there recommended I post here. I'd like to use StoreKit 2's appTransactionID [2] as an ID to tie App Attest keys to anonymous users (that is, users that I don't enforce signup/login of). The design I'm thinking of is basically: Get the appTransactionID at launch Look in keychain to see if I already have an attestation key for this appTransactionID (treating keychain as a k/v store where the key is appTransactionID) If yes, use that key for ongoing assertions as requests are made to my backend Else, go through the initial process of key generation and attestation Do you see any gotchas with using appTransactionID in this way? From the docs, it looks to be exactly what I need: The App Store generates a single, globally unique appTransactionID for each Apple Account that downloads your app and for each family group member for apps that support Family Sharing. This value remains the same for the same Apple Account and app if the customer redownloads the app on any device, receives a refund, repurchases the app, or changes the storefront. For apps that support Family Sharing, the appTransactionID is unique for each family group member. But I'm curious if this application of using appTransactionID as the key identifier to pull values out of keychain raises any flags for you. Thank you, Lou [1] https://developer.apple.com/forums/thread/831468 [2] https://developer.apple.com/documentation/storekit/apptransaction/apptransactionid
1
0
299
Jun ’26
Testing purchases Advanced Commerce API
Hello! Is it possible to test in Sandbox the flow of pending purchase request changes to succeed for Advanced Commerce API? As StoreKit configuration file can not be used with Advanced Commerce API, how to test for example flow "Ask to Buy" when child account ask parent account to buy generic consumable product? And also does Advanced Commerce API supports feature "Ask to Buy"?
2
0
305
Jun ’26
Requirement of Promotional Offer Signature
What is the requirement to generate promotional offer signature and use it for applying promotional offers to the purchase. We can directly pass the offer information to the purchase right? We don't understand what is the real purpose for this. If it's for any security reason and make sure to user doesn't misuse this offer then how can the user apply this offer if this app code are already compiled and secured with Apple Devices.
3
0
299
Jun ’26
Your first subscription must be submitted with a new app version.
I have seen this problem arise from multiple sources. I am trying to submit my app but a new app version must be bundled with the subscription. The guide consistently says (copy pasted from the "Submit an In-App Purchase" guide) _"On the right, scroll down to the In-App Purchases and Subscriptions section. Click Select In-App Purchases or Subscriptions, or if you’ve already started selecting In-App Purchases or subscriptions, click Edit."_ The problem is there IS NO In-App Purchases or subscription section in the the app section. I have submitted again but at this point I'm loosing hope. I am hoping that adding a StoreKit config file this time on the Xcode side will help however again reading "submission (1)" does not give much hope. Please help as this has delayed launch by quite a lot.
Replies
0
Boosts
0
Views
315
Activity
Jun ’26
Can Product.products / SKProductsRequest be used only for display metadata when EU storefront uses ExternalPurchaseCustomLink only?
This is a StoreKit / ExternalPurchaseCustomLink clarification. Apple DTS asked me to post the follow-up question here. We are designing an SDK for apps that support EU external purchase. In EU storefronts, the app will use ExternalPurchaseCustomLink only: No App Store In-App Purchase will be offered to users. No Product.purchase() will be called. No SKPaymentQueue.add(_:) will be called. The actual purchase will happen only on our external website through the ExternalPurchaseCustomLink flow. Question: In this EU ExternalPurchaseCustomLink-only setup, is it acceptable and supported to call Product.products(for:) / SKProductsRequest only to fetch product display metadata from App Store Connect? The metadata would only be used to display the product list UI, for example: product title / display name localized price currency / priceLocale formatting information The returned Product / SKProduct would not be used to start an App Store purchase. Or should apps avoid Product.products(for:) / SKProductsRequest entirely in EU storefronts where only ExternalPurchaseCustomLink is offered, and use their own product catalog instead?
Replies
1
Boosts
0
Views
430
Activity
Jun ’26
IAP products not loading in sandbox after activating Paid Apps Agreement
I activated the Paid Apps Agreement today along with banking and tax information. My app uses react-native-purchases (RevenueCat) with StoreKit 2. When tapping purchase buttons in TestFlight I still get "Product not available - Could not load this product." Products show "Waiting for Review" in App Store Connect. Sandbox tester is configured. Is there a delay after activating the Paid Apps Agreement before sandbox purchases work? How long should I expect to wait?
Replies
0
Boosts
0
Views
318
Activity
Jun ’26
New auto-renewable subscription not appearing in sandbox (getOfferings/StoreKit returns 0) after re-creating the product — new app, not yet approved
I have a new app (first version, not yet approved) with one auto-renewable subscription. Earlier in development, the subscription loaded and I could complete a sandbox purchase (the StoreKit sheet showed "Sandbox", the price, and my sandbox account). To resolve an App Store Connect submission deadlock, I deleted that subscription and created a new one with a new Product ID. Since then, the new subscription does NOT appear in the sandbox: StoreKit returns no products, so getOfferings (via RevenueCat) returns 0 packages — both during App Review and on my own development build signed into a sandbox account. Configuration (all verified): Subscription is "Ready to Submit" / "Waiting for Review" Available in all territories Paid Apps Agreement active; banking and tax complete Bundle ID and shared secret unchanged from when it worked App Review keeps rejecting under Guideline 2.1(b) ("プレミアムをはじめる" / purchase button unresponsive) because the product never loads. Questions: For a newly created IAP on a not-yet-approved app, how long does it take to become available in the sandbox? Is there a known propagation delay (24h+)? Does re-creating the product with a new Product ID reset or delay sandbox availability? Is anything required for a new product to be served in the sandbox before the app's first version is approved? Any guidance appreciated. Thanks!
Replies
1
Boosts
0
Views
429
Activity
Jun ’26
Help with Subscriptions and Localization
Let me start by saying i found 1000s of posts for similar topic and nothing so far worked for me so im here now. This is the first im i developed an app with subscriptions now the problem im facing it is showing missing metadata on all subscriptions i created. inside there is no error just on localization section it shows "Prepare for Submission" and hovering it says i have to submit localization seperately. Now the question is there is no way to submit localization and no way to select subscription when im submitting app for review which i believe is for above reason. I have followed almost everything available online since yesterday from business to screenshots to notes nothing so far worked for me. Need your support to resolve this issue asap Thank you
Replies
1
Boosts
0
Views
458
Activity
Jun ’26
initConnection() from react-native-iap throws "undefined is not a function" in TestFlight build — StoreKit not connecting
Platform & Versions React Native: 0.85.3 Expo SDK: 56 react-native-iap: 15.3.3 iOS: 18.7.8 Device: iPhone 16 Pro Distribution: TestFlight (distribution: "store" via EAS Build) Problem In a TestFlight build (App Store distribution, not ad-hoc), calling initConnection() from react-native-iap throws a TypeError: "undefined is not a function" on iOS. This happens on every app launch. The error is caught in a try/catch around initConnection() and we never reach getSubscriptions() or purchaseUpdatedListener(). The app never connects to StoreKit. All IAP attempts fail immediately with "Store unavailable." What we've confirmed Sandbox tester account is configured in Settings → App Store → Sandbox Account "Allow Purchases & Renewals" is ON in the Sandbox Testing screen An active sandbox subscription exists (visible in Settings → App Store → Sandbox Account → Subscriptions), meaning StoreKit was reachable at some earlier point react-native-iap is listed in the Expo config plugins in app.json — EAS should be linking StoreKit.framework and adding the com.apple.developer.in-app-payments entitlement Built with --clear-cache to force a clean native project generation All 5 IAP product IDs (2 subscriptions, 3 consumables) are linked to the app version in App Store Connect and are in "Ready to Submit" state ITSAppUsesNonExemptEncryption is set to false in Info.plist Code try { await initConnection(); // throws "undefined is not a function" // never reaches here await getSubscriptions({ skus: ['com.smartailearning.iem.pro.yearly', 'com.smartailearning.iem.pro.monthly'] }); } catch (e) { console.error(e.message); // "undefined is not a function" } Question Is react-native-iap v15 incompatible with React Native 0.85 / Expo SDK 56 on iOS? Is there a known issue with the StoreKit native module not loading in EAS-managed builds? Should we be using StoreKit directly via a custom native module instead?
Replies
0
Boosts
0
Views
263
Activity
Jun ’26
First app release rejected because IAPs didn’t appear, and now the In-App Purchases section is missing from the app version page
I’m trying to submit the first release of my iOS app together with the app’s first consumable in-app purchases, and I’m stuck in what looks like an App Store Connect state issue. My app was already rejected by App Review because the in-app purchases did not appear inside the app when the reviewer opened the paywall. Current setup: First app release Current app version page: iOS App Version 1.0.2 Current attached build: 5 App has never been released before 4 consumable IAPs: com.glowup.credits.100 com.glowup.credits.500 com.glowup.credits.1000 com.glowup.credits.2500 What I see in App Store Connect: All 4 IAPs show Waiting for Review On the iOS App Version 1.0.2 page, the In-App Purchases and Subscriptions section does not appear at all Because of that, I cannot explicitly select or attach the IAPs from the version page What I’ve already done: Uploaded a new build and attached build 5 to version 1.0.2 Removed my local StoreKit configuration file so the app now uses live App Store / StoreKit only Confirmed RevenueCat is configured correctly and sees the offering/packages RevenueCat logs show the products exist remotely, but StoreKit cannot fetch any live products and returns an “offerings empty / none of the products could be fetched” type error RevenueCat also reports the products are still in WAITING_FOR_REVIEW My questions: If the IAPs already show Waiting for Review, are they automatically linked to the current app submission? Is it expected that the In-App Purchases and Subscriptions section can disappear from the app version page in this state? For a first-release app that was already rejected, is attaching a new build and clicking Update Review enough, or is there another step required to associate the IAPs with the resubmission? Has anyone seen App Review reject an app for missing IAPs while the IAPs were still pending review and not yet fetchable from StoreKit? Any guidance from someone who has dealt with this exact first-release + first-IAP submission flow would help a lot.
Replies
2
Boosts
0
Views
596
Activity
Jun ’26
StoreKit returns 0 subscriptions on TestFlight — Apple IAP payment sheet never opens (Capacitor + RevenueCat)
Hello, I'm developing a Capacitor/Next.js iOS app with RevenueCat for auto-renewable subscriptions. On a real iPhone via TestFlight, StoreKit never returns my subscription products, so the Apple payment sheet never appears. App TestFlight builds tested: 110, 111, 112 (iOS 1.1.0) In-App Purchase capability enabled on App ID Paid Applications Agreement: active Banking/tax: active Subscription product IDs (auto-renewable, same subscription group) vytalai_premium_monthly vytalai_premium_yearly vytalai_premium_yearly_intro (exit offer) What happens Install app from TestFlight on physical iPhone Navigate to paywall App calls RevenueCat → Purchases.getProducts() with the 3 product IDs above StoreKit returns 0 products (or configure/getProducts times out) UI shows: "Apple Store: 0 subscriptions on this device — Sandbox popup cannot open" Tapping subscribe does not open the Apple payment sheet Fallback prices appear (3.49 / 29.99) instead of live App Store prices (3,49 € / 29,99 €), which suggests StoreKit is not returning products. What we already verified Correct bundle ID in build metadata NEXT_PUBLIC_REVENUECAT_API_KEY_IOS (appl_*) embedded in EAS production build Provisioning profile regenerated and active Subscription metadata corrected (was Rejected, now Waiting for Review) All 3 subscriptions attached to app version submission RevenueCat offering "default" with monthly, annual, and annual_intro packages App Store Server Notifications URL configured to RevenueCat Legal pages open in-app (no external cookie banner on native) Testing on TestFlight only (not Safari/web) App Review context We received Guideline 2.1(b) rejections because: Error on purchase page Exit offer (50% OFF / €1.91 per month equivalent) referenced product vytalai_premium_yearly_intro which was not submitted for review initially — now added and submitted with the app version. Question Even with subscriptions in "Waiting for Review" state and metadata completed, should StoreKit Sandbox/TestFlight return these products on device so we can test the payment sheet before approval? If not, what exact App Store Connect state is required for StoreKit to return products on TestFlight? Any guidance on why getProducts would return 0 for valid product IDs on a TestFlight build would be greatly appreciated. Thank you.
Replies
2
Boosts
0
Views
545
Activity
Jun ’26
StoreKit purchase cancelled after app backgrounding during bank authentication (3D Secure)
Hello, We are experiencing an issue with StoreKit purchases on iOS. Some users are required by their bank to complete an additional authentication step (3D Secure / banking app validation) during an in-app purchase subscription flow. The purchase starts correctly and StoreKit displays the purchase sheet. When the user temporarily leaves the app to validate the payment in their banking application and then returns, StoreKit eventually reports the purchase as cancelled. No transaction is delivered to StoreKit observers, no entitlement becomes active, and restoring purchases does not find any completed transaction. Steps to reproduce: Open the app. Start an auto-renewable subscription purchase using StoreKit. Authenticate with Apple ID if requested. When the bank authentication screen appears, leave the app and open the banking application. Approve the payment in the banking application. Return to the original app. Observed result: StoreKit reports the purchase as cancelled and no transaction is received. Expected result: The transaction should continue processing after bank authentication and eventually complete successfully. Environment: Xcode 26.3 (17C529) macOS Tahoe 26.3 iOS 26.2.1 Physical iPhone device Question: Is this expected StoreKit behavior when a user leaves the app for external banking authentication, or is there a recommended StoreKit integration pattern that should allow the purchase flow to continue successfully? Thank you.
Replies
12
Boosts
0
Views
727
Activity
Jun ’26
Apple Age Restriction API -
https://developer.apple.com/documentation/declaredagerange/ https://developer.apple.com/documentation/declaredagerange/agerangeservice/requiredregulatoryfeatures For these API, (1) How is Apple determining the user is in Texas? IP or Address on the account? (2) How do we know if an API is active. Testing today (6/18) we are seeing both false in a region/state where the law is now in effect. (3) How will we know when Apple adds more regions to the API enablement? Is there a communication channel for this?
Replies
0
Boosts
0
Views
252
Activity
Jun ’26
Third party payment service
Hi everyone, I have a question regarding App Store approval. In my country, Apple In-App Purchases are not supported, so for users in unsupported regions we need to use a third-party payment provider. For countries where In-App Purchases are supported, we plan to use Apple IAP. Could you please advise on the correct approach to ensure the app complies with App Store guidelines and can be approved?
Replies
1
Boosts
0
Views
351
Activity
Jun ’26
Retention Messaging API
Does anyone have info about the Retention Messaging API. We've requested access to it, but there's no answer.
Replies
2
Boosts
2
Views
562
Activity
Jun ’26
iOS Subscriptions in Russia – Is Apple In-App Purchase mandatory or can local providers be used?
Hello, We are working on integrating billing into our dating app, targeted at the Russian market. Our main requirement is to support subscriptions with automatic renewal and cancellation. We understand that, according to App Store Review Guideline, all digital subscriptions should use Apple In-App Purchase (IAP). However, we are unsure how this applies in Russia, where some local regulations may limit the use of non-Russian payment processors, and where not all Russian bank cards are accepted by Apple. Our question is: -For iOS apps in Russia, is it strictly required to use Apple IAP for subscriptions? -Are there any approved exceptions allowing integration with local processors such as Robokassa or YooKassa? -How are other developers currently handling subscriptions for the Russian market? We want to ensure full compliance and avoid any risk of rejection or removal. Thank you in advance for any clarification. Best regards, Dan
Replies
1
Boosts
1
Views
558
Activity
Jun ’26
AppTransaction.shared throws StoreKitError code=2 in macOS TestFlight while deviceVerificationID is available
I am implementing device authentication for a macOS app. Our iOS app uses App Attest, but App Attest is not available on macOS, so we are evaluating StoreKit's AppTransaction plus AppStore.deviceVerificationID as the macOS equivalent signal. The issue: in a macOS app installed through TestFlight, AppStore.deviceVerificationID is available, but AppTransaction.shared throws StoreKitError code=2. I reproduced this in a focused standalone macOS test app with no backend and no custom dependencies. Environment: Platform: macOS Distribution: TestFlight App Store Connect app ID: 6769568350 Bundle ID: com.soundcity.AppTransactionProbe App version: 1.0 Build: 1 Observed output from the TestFlight-installed app: Bundle ID: com.soundcity.AppTransactionProbe App version: 1.0 Build: 1 deviceVerificationID available: true deviceVerificationID prefix: CA91ED5D... AppTransaction.shared threw error: StoreKitError; domain=StoreKit.StoreKitError; code=2 The relevant code path is essentially: import StoreKit let deviceVerificationID = try? AppStore.deviceVerificationID let appTransaction = try await AppTransaction.shared In the TestFlight-installed build: AppStore.deviceVerificationID succeeds. AppTransaction.shared throws StoreKitError code=2. Questions: Is AppTransaction.shared expected to work for macOS apps distributed through TestFlight? If yes, what does StoreKitError code=2 indicate in this context, and what setup might be missing? If no, is there an Apple-supported way to obtain an AppTransaction JWS, or equivalent signed App Store/TestFlight app-install assertion, for macOS TestFlight builds? For macOS apps that need a device-bound trust signal comparable to iOS App Attest, is AppStore.deviceVerificationID intended to be used without AppTransaction.shared, or should these APIs be used together? I have a focused Xcode test project that demonstrates the issue and can share it if helpful.
Replies
4
Boosts
0
Views
651
Activity
Jun ’26
Sandbox testing - Clear Purchase History
Hi, Overview I have an app for which I have created a sandbox account. When I try to clear purchase history it doesn't work, it still shows the in-app purchase items (non-consumable in-app purchases) as purchased. I have tied tried the following ways, but none of them work. Any help on this would be much appreciated! Attempt 1: Go to https://appstoreconnect.apple.com/ Users and Access > Sandbox Check sandbox account > Tap Clear Purchase History button Attempt 2: Go to the iPhone > Settings > Developer > Sandbox Apple Account Tap on account > Manage > Clear Purchase History Attempt 3: Sign out of Sandbox account and sign back in Attempt 4: Delete app and re-run app from Xcode
Replies
2
Boosts
2
Views
564
Activity
Jun ’26
Advanced Commerce API SKU verification
Hello! In our app we use Advanced Commerce API with generic consumable products. Does Apple validate SKU of payment request? So if user have several pending purchase requests with same SKU (inside item) will Apple charge only for the latest one or all of pending requests even though SKU is the same?
Replies
7
Boosts
0
Views
360
Activity
Jun ’26
App Download Campaign Info and Other Sources Info
Is there any way to get the Campaign Token and the app sources, website sources, sources where the user is downloaded the app inside app using any APIs or Can we add this information along with the App Transaction or via some new API? This will help us to track the actual usage inside the app for each campaign and where from the app is downloaded (source) and position our app experiments better. We do have one for Search Attribution similarly we can add for this it will be more useful for us developers
Replies
1
Boosts
0
Views
304
Activity
Jun ’26
Scoping App Attest keys to an appTransactionID
Hi StoreKit team, I posted a question in the App Attest forum yesterday that is related to StoreKit [1]. The engineers there recommended I post here. I'd like to use StoreKit 2's appTransactionID [2] as an ID to tie App Attest keys to anonymous users (that is, users that I don't enforce signup/login of). The design I'm thinking of is basically: Get the appTransactionID at launch Look in keychain to see if I already have an attestation key for this appTransactionID (treating keychain as a k/v store where the key is appTransactionID) If yes, use that key for ongoing assertions as requests are made to my backend Else, go through the initial process of key generation and attestation Do you see any gotchas with using appTransactionID in this way? From the docs, it looks to be exactly what I need: The App Store generates a single, globally unique appTransactionID for each Apple Account that downloads your app and for each family group member for apps that support Family Sharing. This value remains the same for the same Apple Account and app if the customer redownloads the app on any device, receives a refund, repurchases the app, or changes the storefront. For apps that support Family Sharing, the appTransactionID is unique for each family group member. But I'm curious if this application of using appTransactionID as the key identifier to pull values out of keychain raises any flags for you. Thank you, Lou [1] https://developer.apple.com/forums/thread/831468 [2] https://developer.apple.com/documentation/storekit/apptransaction/apptransactionid
Replies
1
Boosts
0
Views
299
Activity
Jun ’26
Testing purchases Advanced Commerce API
Hello! Is it possible to test in Sandbox the flow of pending purchase request changes to succeed for Advanced Commerce API? As StoreKit configuration file can not be used with Advanced Commerce API, how to test for example flow "Ask to Buy" when child account ask parent account to buy generic consumable product? And also does Advanced Commerce API supports feature "Ask to Buy"?
Replies
2
Boosts
0
Views
305
Activity
Jun ’26
Requirement of Promotional Offer Signature
What is the requirement to generate promotional offer signature and use it for applying promotional offers to the purchase. We can directly pass the offer information to the purchase right? We don't understand what is the real purpose for this. If it's for any security reason and make sure to user doesn't misuse this offer then how can the user apply this offer if this app code are already compiled and secured with Apple Devices.
Replies
3
Boosts
0
Views
299
Activity
Jun ’26