StoreKit

RSS for tag

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

Posts under StoreKit tag

200 Posts

Post

Replies

Boosts

Views

Activity

In-App Purchase Resources
General: Forums topic: StoreKit Forums tag: In-App Purchase App Store Pathway Simple and safe In-App Purchases Auto-renewable subscriptions In-App Purchase documentation Getting started with In-App Purchase using StoreKit views documentation Supporting business model changes by using the app transaction documentation Testing at all stages of development with Xcode and the sandbox documentation App Store Server Notifications documentation App Store Server API documentation Simplifying your implementation by using the App Store Server Library documentation TN3185: Troubleshooting In-App Purchases availability in Xcode technote TN3186: Troubleshooting In-App Purchases availability in the sandbox technote TN3188: Troubleshooting In-App Purchases availability in the App Store technote Understanding StoreKit workflows sample code Implementing a store in your app using the StoreKit API sample code What’s new in StoreKit and In-App Purchase video
0
0
2.2k
Jun ’26
Issues with StoreKit
I am a long time developer but have never incorporated an IAP into any of my work so this is very new to me. So to save time I have used some AI for coding, but the code is having an issue and I'm not sure whether it is in the code or in Xcode. Xcode 27 on macOS 27.0.1 for iOS 27.0.1. IAP is to unlock full access after a 14-day trial. DESCRIPTION OF PROBLEM In local Xcode StoreKit testing, Product.purchase() returns .pending (as expected, since "Ask to Buy" is enabled), and Xcode’s transaction manager continues to show “Pending Approval.” After closing and reopening the app’s purchase sheet, the same transaction appears as verified and non-revoked in Transaction.currentEntitlements and is delivered through Transaction.updates, giving full access to the app. This reproduces in a standalone UIKit test app (linked below). The source file in question is AppAccessManager.swift. The relevant functions are: AppAccessManager.purchaseProduct() Calls product.purchase(). Handles .pending by recording a request reminder and displaying feedback. AppAccessWindowViewController.viewDidLoad() Runs when the purchase-options sheet is opened. Calls manager.start() followed by manager.refreshAccessState(). This is the sheet-opening path associated with the unexpected transaction delivery. AppAccessManager.refreshAccessState() Iterates Transaction.currentEntitlements. A transaction still labeled “Pending Approval” in Xcode is returned here as verified and nonrevoked. AppAccessManager.startListeningForTransactionUpdates() and handleTransactionUpdate(_:) The same pending transaction is also delivered through this sequence as verified and nonrevoked. The handler applies access before calling transaction.finish(). AppAccessManager.applyVerifiedPurchase(_:) Applies verified transactions received from successful purchases or the listener. STEPS TO REPRODUCE https://avliscoding.com/storekittest.zip Launch app Select "Open Purchase Sheet" Start trial Quit app, enable "Ask to Buy" in StoreKit file configuration settings Restart app. Select Purchase (will give a pending message in response) Close sheet Reopen sheet The app now believes it has made that purchase even though the purchase is still "Pending" in Xcode.
1
0
153
6m
Can Screen Time data be used to determine eligibility for StoreKit subscription discounts?
Family Controls: Can Screen Time performance determine StoreKit promotional-offer eligibility? I'm developing an iOS app that helps individuals reduce recreational screen time. The app would use DeviceActivityMonitor to evaluate whether users meet their own screen-time goals. Users who succeed could redeem a discounted one-month subscription through StoreKit promotional offers. The calculation would occur locally on the user's device. No raw usage data, app names, or browsing history would be transmitted. Two questions: Is it permissible under the Family Controls framework's data-use restrictions to use on-device activity outcomes to determine eligibility for a discount on the same app's subscription? Can the resulting discount tier or promotional-offer identifier be sent to our server solely to authorize the StoreKit offer, without violating those restrictions? I'd appreciate clarification from Apple staff about this specific use case before implementing it.
0
0
15
46m
“Account Not In This Store” error when trying to purchase non-consumable IAP within TestFlight
I have simple non-consumable IAPs set up for an app on macOS. Testing in development with a local .storekit configuration file, everything works as expected. Testing in development with a remote Sandbox, everything also seems to work fine. Product names and prices fetch correctly, I am able to make purchases with a Sandbox account (both US and UK). Once I upload a build into TestFlight, IAPs no longer work. The tester would download the Beta app from TestFlight. They open a license manager and can see all the product names, descriptions and prices are pulled from Apple servers correctly (with the correct local currency as well!). So far so good. When trying to purchase any of the IAP, the following error appears: This is TestFlight so testers are using their real Apple ID. My understanding is that they should continue using their production credentials and a TestFlight Sandbox would be configured behind the scenes automatically. This error always says the users cannot purchase from a US store and must switch to [whatever user’s actual store location is] store. For example, my account is based in the UK, has got a UK billing address and a UK payment method, and the error tells me to switch to the UK store. People in Canada get a similar error - you must switch from the US store to Canadian. The error makes no sense, the account is already in the desired country. Clicking on the “Change Store” button opens the App Store app and displays another error: “Cannot Connect to App Store”. Clicking Retry just results in this errors showing again and again. Clicking OK takes us back to the failed IAP purchase and the final error message appears: “Purchase Error - Unable to Complete Request”. Things I’ve done / checked: IAPs are configured in App Store Connect and available for all regions prices are set for all regions in App Store Connect IAP name and description localisation in English (UK) IAP status is Ready to Submit, I don’t think I can go past that unless I make a production release (which I can’t until we fix the problem) IAP capabilities added in xcode the problem is not account, machine, or location dependent - every beta tester testing my app on TestFlight has the same issue, they each use a different account and have accounts in different countries double checked the App Store account location in the App Store settings - it is definitely matching the store this error is asking to switch to application exits at startup with error 173 if app receipt cannot be found - this one was suggested by the review team, I could not really find any documentation for it review team also suggested I should add com.apple.security.network.client to enable IAP connectivity. I did add that to one of the builds and it did not help. I am not really convinced this is necessary Any suggestions on what to check and what to try? I have run out of ideas.
18
11
3.2k
4h
Padel Tempo iOS 1.0 — Waiting for Review nearly 5 days after metadata-only resubmission
Hello App Review team and fellow developers, Our Padel Tempo: Padel Score iOS 1.0 submission has been in Waiting for Review for nearly five days after a metadata-only resubmission, and I would like to make sure that nothing else is required from our side. App: Padel Tempo: Padel ScoreVersion: iOS 1.0Submission ID: cbc83032-2f7a-4f80-bc2c-e54a5c9f68b3Resubmitted: October 26, 2026 at 5:04 PMCurrent status: Waiting for Review What happened Our initial submission was reviewed on October 26. We received an automated App Review message regarding the auto-renewable subscriptions Premium Monthly and Premium Yearly. The only issue identified was a missing functional link to the standard Apple Terms of Use (EULA) in the App Store metadata. We corrected the issue immediately: added the standard Apple Terms of Use (EULA) link to the App Description; made sure the required metadata was complete; no binary changes were necessary; resubmitted the same app version approximately 12 minutes after receiving the review message. Since then, the submission has remained in Waiting for Review. Why I am posting I understand that review times can vary, and I am not asking to skip the queue. I would simply like to confirm that: the resubmission is correctly queued for App Review; the previous metadata issue is considered resolved; no additional action or information is currently required from us. Since this was a metadata-only correction following an already completed first review, I wanted to make sure the resubmission did not end up waiting because of something we may have missed. If App Review needs any additional information, screenshots, test instructions, or clarification, I can provide it immediately. Thank you for your time, and I would also appreciate hearing from other developers who have recently experienced longer-than-usual Waiting for Review times. Best regards,MykolaPadel Tempo
0
0
164
1d
App Store Server Notification returns successful purchase while customer's payment remains Pending
App Store Server Notification returns successful purchase while customer's payment remains Pending We have encountered an edge case with a Non-Renewing Subscription and would appreciate clarification on the expected developer behavior. Steps to reproduce User initiates an in-app purchase using a credit card. The purchase succeeds in the app. Our backend receives an App Store Server Notification V2 (ONE_TIME_CHARGE). We successfully verify the signed JWS transaction. The same transaction is also returned by the App Store Server API. Based on the verified transaction, we grant the user's entitlement. However, on the customer's Apple account: The purchase is shown as Pending in Purchase History / Report a Problem. The customer reports that their credit card has not yet been charged. Question From a developer's perspective, should entitlement be granted immediately after receiving a valid App Store Server Notification and successfully verifying the transaction, even if the customer's purchase is still shown as Pending? Is there any App Store Server API or transaction field that indicates the payment has not yet been settled, allowing developers to delay granting entitlement until the payment is finalized? Or is the expected implementation to grant entitlement upon successful transaction verification and revoke it only if Apple later sends a refund notification? Any clarification on the expected workflow would be greatly appreciated. Thanks in advance. :)
2
1
779
2d
Receipt validation: Under what circumstances can receipt.in_app be empty after a successful consumable purchase?
Hi everyone, I'm investigating an issue related to StoreKit 1 receipt validation and would appreciate any insight from Apple engineers or developers who have encountered this before. Environment StoreKit 1 Consumable In-App Purchase iOS 16 / iOS 17 / iOS 18 (observed on multiple versions) Receipt validation performed on our server Receipt is read from the app bundle after the transaction completes Issue Occasionally, after a purchase succeeds and the transaction reaches the SKPaymentTransactionStatePurchased state, the App Receipt exists and can be decoded successfully, but the receipt contains: { "receipt": { ... "in_app": [] } } The in_app array is completely empty. As a result, our server cannot find the purchased product in the receipt and cannot complete receipt validation. Questions I'd like to understand under what circumstances Apple may return an App Receipt where receipt.in_app is empty. Specifically: Is it expected behavior that receipt.in_app can be empty after a successful consumable purchase? Could this happen if the app reads the receipt before the receipt has been updated? Is there any possibility that calling finishTransaction: before reading the receipt could cause the purchase record not to appear in receipt.in_app? If receipt synchronization is delayed, what is Apple's recommended approach? Wait and retry? Issue an SKReceiptRefreshRequest? Or validate using another mechanism? Are there any documented scenarios where Apple intentionally returns an empty in_app array? Additional Information The transaction state is Purchased. The purchase callback is received successfully. We have confirmed that the receipt file exists. The issue occurs only occasionally and cannot be reproduced consistently. Most purchases contain the expected in_app entry. Any clarification about the expected behavior of the App Receipt or recommended best practices would be greatly appreciated. Thank you!
1
0
768
2d
Subscriptions unavailable during App Review, but loading and sandbox purchases work in our tests (RevenueCat / StoreKit)
Hello, Our first release was rejected under Guideline 2.1(b) because subscriptions were unavailable during App Review. We have been unable to reproduce the issue and would appreciate guidance on further diagnostics. Review environment App version: 1.0.0 (9) Device: iPad Air 11-inch (M3) OS: iPadOS 27.0.1 Internet connection: Active, according to the review message The app integrates StoreKit through RevenueCat and offers three auto-renewable subscriptions. We verified that : The Paid Apps Agreement, banking information, and tax forms are active. All three subscriptions and their subscription group are included in the submission. The subscriptions are available in all countries and regions. The submitted build uses the RevenueCat App Store SDK key, rather than a Test Store key. We tested subscription loading 15 times across two networks, including on iPad. Prices loaded successfully, and we completed a sandbox purchase that unlocked Premium. Additional diagnostics on an iPad Air 11-inch (M3) simulator running iPadOS 26.5 returned all three products both through a direct StoreKit Product.products(for:) request and through RevenueCat. No local StoreKit configuration file was attached. We have not reproduced the exact iPadOS 27.0.1 review environment. The simulator runtime is unavailable through our installed Xcode. The rejection message states that subscriptions were unavailable, but does not identify whether product retrieval failed, the subscription options were missing, or a purchase attempt failed. We are asking App Review for those details and a retry. We were wondering: What additional diagnostics would help investigate product availability failures that occur only during App Review? Are there sandbox account or storefront conditions we should test beyond successful product loading and sandbox purchases? Is there a recommended way to collect useful StoreKit error information from a review session when the failure cannot be reproduced locally? Thanks !
1
0
68
2d
Xcode 27.2: Deprecated API warning in Apple's SKTestTransaction.h
After updating to the public release of Xcode 27.2 (27B52), I'm seeing this warning in Apple's StoreKitTest framework: **File**: `SKTestTransaction.h`, line 34 **Warning**: `'SKPaymentTransactionState' is deprecated: first deprecated in iOS 18.0` The warning recommends using `PurchaseResult` from `Product.purchase(confirmIn:options:)`. Is this a known issue?
0
0
75
2d
Sandbox can purchase auto-renewable subscriptions but non-consumable IAP is always invalid
I’m testing In-App Purchases in the sandbox on a real iPhone. Auto-renewable subscriptions work correctly with the same app build, bundle ID, and sandbox tester account: com.aifalling.sides.vip.monthly com.aifalling.sides.vip.yearly However, a non-consumable product can’t be purchased: Product ID: com.aifalling.sides.vip.onetime App Store Connect IAP Apple ID: 6794812888 Type: Non-Consumable Status: Ready to Submit Bundle ID: com.aifalling.sides The native StoreKit payment request fails immediately with: The purchase identifier was invalid. The wrapper reports error code 700605. I verified the non-consumable product through the App Store Connect API: Product ID exists and is returned by the API One localization exists: zh-Hans A price schedule is configured, including a base territory and prices Availability includes China (CHN) and many other territories availableInNewTerritories is true I waited more than one hour after the latest metadata changes I completely removed the app, rebuilt/reinstalled the custom development build, and retried The same signed build can successfully purchase the two auto-renewable subscriptions This is the first non-consumable IAP type for this app. The app and IAPs have not been submitted for App Review yet because I’m trying to complete sandbox testing first. Does a non-consumable IAP require any additional App Store Connect setup or association that an auto-renewable subscription doesn’t require for sandbox testing? Is Ready to Submit sufficient for sandbox testing of a non-consumable product in this situation? Any guidance would be appreciated.
2
0
891
2d
Sandbox errorCode 4040004 "App not found" — one app works, identical app doesn't
I have 2 iOS app products. One can fetch subscription product information normally, while the other fails with the error errorCode 4040004 'App not found' in Sandbox. The App Store Connect backend configuration should be fine, and the subscription code on the app side is the same codebase for both. I really can't find the root cause anymore — if anyone knows what's going on, please point me in the right direction. Also, I'm able to sync/download the StoreKit product configuration file from App Store Connect directly in Xcode, which should also confirm that my App Store Connect backend configuration is correct.
7
1
1.3k
3d
Sandbox products load, but purchases fail with productUnavailable
We have a new iOS app in App Store Connect with six consumable in-app purchases. Environment: Bundle ID: live.mymi.ios TestFlight version: 1.0.4 (70) Storefront: KOR Environment: Sandbox Example product ID: ios_spark_5000 StoreKit product queries return all six products with localized KRW prices. For example, ios_spark_10000 is returned as ₩12,000. However, requesting a purchase fails with Product.PurchaseError.productUnavailable / “This item is not available.” The issue can also be reproduced independently of the app: Settings > Developer > Sandbox Apple Account > Test Transactions Entering bundle ID live.mymi.ios and product ID ios_spark_5000 is rejected with a message stating that the product ID or bundle ID is invalid. The previous app/product pair live.mymi.app + spark_5000 still works on the same device and with the same Sandbox tester. We verified the following: Paid Apps Agreement, banking, and tax information are active The explicit App ID has the In-App Purchase capability enabled The TestFlight build uses the correct bundle ID Product pricing, localization, and availability in all 175 storefronts are configured All six IAPs are attached to the first app version review submission No local StoreKit configuration is involved This has persisted for multiple days. It appears that the product-query catalog contains the products, while the Sandbox transaction service does not recognize the product-to-bundle association. Has anyone seen this with a newly created App Store app/IAP catalog? Did Apple need to re-index the products?We have a new iOS app in App Store Connect with six consumable in-app purchases. Environment: Bundle ID: live.mymi.ios TestFlight version: 1.0.4 (70) Storefront: KOR Environment: Sandbox Example product ID: ios_spark_5000 StoreKit product queries return all six products with localized KRW prices. For example, ios_spark_10000 is returned as ₩12,000. However, requesting a purchase fails with Product.PurchaseError.productUnavailable / “This item is not available.” The issue can also be reproduced independently of the app: Settings > Developer > Sandbox Apple Account > Test Transactions Entering bundle ID live.mymi.ios and product ID ios_spark_5000 is rejected with a message stating that the product ID or bundle ID is invalid. The previous app/product pair live.mymi.app + spark_5000 still works on the same device and with the same Sandbox tester. We verified the following: Paid Apps Agreement, banking, and tax information are active The explicit App ID has the In-App Purchase capability enabled The TestFlight build uses the correct bundle ID Product pricing, localization, and availability in all 175 storefronts are configured All six IAPs are attached to the first app version review submission No local StoreKit configuration is involved This has persisted for multiple days. It appears that the product-query catalog contains the products, while the Sandbox transaction service does not recognize the product-to-bundle association. Has anyone seen this with a newly created App Store app/IAP catalog? Did Apple need to re-index the products?
1
0
554
3d
Product.products(for:) returns one subscription group's products but not return the other
I'm stuck on this and genuinely don't know what's wrong. I have two auto-renewable subscription groups in one app. I pass all six product IDs to a single Product.products(for:) call. It succeeds, doesn't throw, and returns three products — all from group A. The three from group B just aren't in the array. No error, they're simply absent. All six show Approved in App Store Connect. [PlusStore] probe — storefront: USA [PlusStore] probe — OK ...plus.monthly (group A) [PlusStore] probe — OK ...plus.quarterly (group A) [PlusStore] probe — OK ...plus.yearly (group A) [PlusStore] probe — MISSING ...plus.founding.monthly (group B) [PlusStore] probe — MISSING ...plus.founding.quarterly (group B) [PlusStore] probe — MISSING ...plus.founding.yearly (group B) Retried three times with backoff, so it isn't cold-launch timing. I don't think it can be the Paid Applications Agreement, the sandbox account, a network failure, or a wrong bundle prefix, since group A comes back fine. I've checked the group B IDs character-for-character against the Product ID field in App Store Connect, confirmed United States is enabled with an active price and no future-dated schedule on all three, and confirmed there's no .storekit file attached to the scheme. So the only difference I can find between the two groups is the group itself.
1
0
670
3d
Sandbox purchase completion reported, but Transaction.all is empty — how to investigate without another purchase?
Hello, We are investigating a discrepancy during an auto-renewable subscription test in Apple’s Sandbox. We would appreciate guidance on read-only diagnostics that preserve the original attempt. Environment: A development-signed, unpublished QA app on a physical iPhone, separate from our production app. A monthly auto-renewable subscription. The original purchase flow uses RevenueCat. The Apple purchase sheet displayed “Environment: Sandbox” and indicated that no charge would occur. Observed behavior: After entering the Sandbox account password, the tester reported seeing a purchase-completion message. The app subsequently displayed a cancellation message. We did not capture a verified StoreKit success transaction, so we cannot establish that the purchase actually completed. The dedicated QA RevenueCat project showed no purchases or subscriptions, and no actual purchase webhook arrived. The next day, subscription management for the same Sandbox account showed no subscription for this QA app. Read-only investigation: RevenueCat’s purchase and subscription queries returned HTTP 200 with empty results and no additional page. We updated the same app, retaining its bundle identifier and installation, with a native StoreKit diagnostic. Enumerating StoreKit.Transaction.all completed normally with zero results. There were no unverified results, filtered-out transactions, timeouts, or count limits. This diagnostic did not invoke purchase, synchronization, or transaction-finishing operations. One earlier restore attempt also returned no purchase. We have not made another purchase, cleared purchase history, or recreated the Sandbox account. We understand that an empty result in this app context does not prove that no transaction exists anywhere in Apple’s systems. No transaction identifier or signed transaction has been recovered. Questions: What read-only checks can distinguish an incomplete or cancelled purchase from an account/environment mismatch or a transaction-delivery issue? Is there a supported way to investigate the original attempt without a transaction identifier and without making another purchase? Which existing device logs or diagnostic captures would be useful? If investigation requires identifiers or unredacted diagnostics, what private Apple reporting channel should we use? Our goal is to investigate the original attempt while preserving purchase history and leaving production untouched. Thank you.
0
0
85
3d
External Link Account Modal language
Hello everyone! We are currently developing our application with an approved "External Link Account Entitlement." During development, we encountered an issue regarding the display language of the modal window triggered by the ExternalLinkAccount.open() function. It consistently appears in English when installed via Xcode or TestFlight. The physical device is located in Israel, the account is set to the Israel region, and the selected language is Hebrew. We have tried changing the language and region settings on the device, but nothing has changed. Since the application is intended for the Israeli market, it is crucial that the window appears in Hebrew. I have reviewed the relevant forum threads and tried the solution suggested by an Apple engineer, but it did not resolve the issue: External Link Account Modal language My main questions are as follows: Does this modal window support Hebrew? Could the absence of Hebrew be a specific behavior related to using Xcode and TestFlight, while the language will display correctly in the App Store version? Which account settings influence the language of the triggered modal window?
1
0
97
4d
"StoreKit Testing in Xcode" certificate is not trusted on iOS 26
Hello. I have setup a StoreKit testing in the app that was and still is perfectly working on iOS 18. Unfortunately when run on iOS 26 the following error gets printed in the console after calling Transaction.currentEntitlement(for:) method: Failed to verify certificate chain due to client recoverable failure: Error Domain=NSOSStatusErrorDomain Code=-67843 "“StoreKit Testing in Xcode” certificate is not trusted" UserInfo={NSLocalizedDescription=“StoreKit Testing in Xcode” certificate is not trusted, NSUnderlyingError=0x109de7e10 {Error Domain=NSOSStatusErrorDomain Code=-67843 "Certificate 0 “StoreKit Testing in Xcode” has errors: Root is not trusted;" UserInfo={NSLocalizedDescription=Certificate 0 “StoreKit Testing in Xcode” has errors: Root is not trusted;}}} I'm not seeting any StoreKit Testing certificates in phone's certificate trust settings. This test was performed on iOS 26.0 (23A341) with app built in Xcode 16.4. FB20339145
8
2
1k
5d
Unable to submit already approved subscription groups with error "New subscription groups must be submitted with an auto-renewable subscription from within that group.
Issue: Since Sept 10, 2026, my existing, already-approved auto-renewable subscription group cannot be submitted for review. This is not a new group: all 9 subscriptions in it show Approved, and my app has been live since July 2026. How it started: I changed only the introductory offer (7-day to 14-day free trial) on the monthly products. What App Store Connect shows now: The group is marked “Prepare for Submission” with the banner “Your first subscription group must be submitted with a new app version.” The Draft Submission contains only the group, and Submit for Review is disabled with: “New subscription groups must be submitted with an auto-renewable subscription from within that group.” “Add for Review” is greyed out on every one of the 9 subscriptions, so there is nothing to add to the draft. Impact: I can’t sell a subscription on any tier or billing period, and it has now been 6 weeks of lost revenue. Not the app binary: Builds 497 and 501 were both approved within hours, with no effect on the group’s status. What I’ve already tried, without success: Attaching each subscription individually, with all metadata and review screenshots complete. A forced re-save (editing a description, saving, reverting and saving again) to clear a stale validation state. Removing and re-adding the draft submission. Deleting and re-creating the introductory offer. Resubmitting the app. Accepting the latest agreements (all show Active). Support status: Developer Support case 102961055291, opened Sept 12. I’ve provided screen recordings and screenshots. I was told the case would go to engineering, but in six weeks I haven’t had a reply from an engineer, a name or a timeline. Two older threads describe the same stuck state and say it needed an Apple-side reset: 844425 and 818349. https://developer.apple.com/forums/thread/844425 https://developer.apple.com/forums/thread/818349 Has anyone seen this resolved without Apple resetting it? And if an Apple engineer sees this, could the case be routed to the team that can reset the subscription group’s submission state?
0
0
56
5d
StoreKit Test Transactions fail with “App not found” / ASDServerErrorDomain 3504 for one Bundle ID, while another app works
Hello Apple Developer Support / StoreKit team, I am testing auto-renewable subscriptions on a real iPhone device using Settings > Developer > Sandbox Apple Account > Test Transactions. I found that subscriptions work correctly for one of my apps, but fail for another app under the same Apple Developer account. Working app Bundle ID: com.benbendou.pinyincharacter Product ID: xpyxhz.quarterly Result: The sandbox purchase sheet appears and the subscription flow can be completed successfully. Failing app Bundle ID: com.benbendou.chengyudaquan Product ID: cydq.quarterly Result: The Test Transactions flow fails. In my app, Product.products(for:) can load some subscription products successfully. However, when trying to purchase cydq.quarterly, the purchase fails with: errorCode = 4040004 errorMessage = "App not found. Please try again." Because the same issue also happens in iPhone Settings > Developer > Sandbox Apple Account > Test Transactions, using the exact Bundle ID and Product ID, this does not seem to be caused by my app’s StoreKit code. The strange part is that another app under the same developer account works correctly with Test Transactions, but this app does not. Could Apple please help check whether the Bundle ID / app record / subscription group / in-app purchase products for com.benbendou.chengyudaquan are correctly linked in the StoreKit Sandbox backend? It looks like the sandbox environment can load the product metadata, but cannot complete the purchase or find the app during transaction lookup. Thank you.
1
0
643
5d
Sandbox Apple Account sign-in asks for phone verification, then fails with “Could not connect to iCloud”
Hi, I created a Sandbox Apple Account in App Store Connect for testing StoreKit / Age Assurance sandbox scenarios. When I try to sign in on an iPhone through: Settings -> Developer -> Sandbox Apple Account I can enter the sandbox account email/password and I successfully receive the email verification code. After entering the email verification code, iOS asks me to add/verify a phone number. When I enter the phone number, I get this error: “Could not connect to iCloud. Verification codes cannot be sent to this phone number at this time. Please try again later.” I did not set any phone number when creating the sandbox tester in App Store Connect. The sandbox tester was created with only name, email, password, and country/region. Context: iPhone has Developer Mode enabled I am signing in via Settings -> Developer -> Sandbox Apple Account I am not trying to sign in through normal iCloud / Apple Account settings The sandbox account email is not used as a normal Apple Account Email verification works Phone verification has failed for more than a day Questions: Is phone verification expected when signing in with a Sandbox Apple Account? Is there a way to use Sandbox Apple Accounts / Age Assurance sandbox scenarios without adding a trusted phone number? Does this error usually mean the phone number is rate-limited/blocked, or that the sandbox account is stuck? Should this be handled by Apple Developer Program Support instead? Thanks!
1
0
589
5d
Non-consumable In-App Purchases return no products during App Review only (works in TestFlight and sandbox)
My app has been rejected twice under Guideline 2.1(b) because its In-App Purchases did not load during review. Both reviews used an iPad Air 11-inch (M3); the latest was on iPadOS 27.0.1. The reviewer's screenshots show the app's fallback state, which appears when StoreKit 2's Product.products(for:) returns none of the products. I can't reproduce it The same build loads all four products with their prices in every test I've run: TestFlight on iPhone and iPad (iPadOS 27.0), with a US account Run from Xcode with StoreKit Testing disabled, using a brand-new US sandbox account and a fresh install Starting offline and then reconnecting Signed out of the sandbox With In-App Purchases restricted in Screen Time Setup Four non-consumables, $0.49 USD, available in all countries, with localizations and review screenshots Submitted together with the app version (status: Waiting for Review) Paid Apps Agreement, banking and tax all active I've worked through Technote TN3186 (Troubleshooting In-App Purchases availability in the sandbox) Code Loading is a single call, retried a few times, and the user can tap Try Again: let products = try await Product.products(for: productIDs)Questions Is there anything that can stop products from being returned in the App Review environment but not in the sandbox? Is there a way to check what the review environment sees? Any help is appreciated.
0
0
96
6d
Increased StoreKit errors “Unable to Complete Request”
Since January 28, 2026, we’ve noticed an increase in StoreKit-related errors during purchase flows. Specifically, we’re seeing a spike in errors reported as “Unable to Complete Request”, categorized as unknown StoreKit errors. This correlates with a noticeable drop in the overall purchase success rate. A few observations: The issue is not limited to the latest app version, it also affects older versions. It appears to occur only on iOS 17+. The impact seems country-specific: some regions are affected more heavily, while others show no significant change compared to previous days. At the moment, there are no related incidents reported on Apple’s System Status page. Given these symptoms, this looks like a potential StoreKit / Apple API issue, but we haven’t found any official confirmation yet. Has anyone else observed similar StoreKit behavior recently on iOS 17+? Any insights or known issues would be greatly appreciated.
6
2
1.7k
6d
In-App Purchase Resources
General: Forums topic: StoreKit Forums tag: In-App Purchase App Store Pathway Simple and safe In-App Purchases Auto-renewable subscriptions In-App Purchase documentation Getting started with In-App Purchase using StoreKit views documentation Supporting business model changes by using the app transaction documentation Testing at all stages of development with Xcode and the sandbox documentation App Store Server Notifications documentation App Store Server API documentation Simplifying your implementation by using the App Store Server Library documentation TN3185: Troubleshooting In-App Purchases availability in Xcode technote TN3186: Troubleshooting In-App Purchases availability in the sandbox technote TN3188: Troubleshooting In-App Purchases availability in the App Store technote Understanding StoreKit workflows sample code Implementing a store in your app using the StoreKit API sample code What’s new in StoreKit and In-App Purchase video
Replies
0
Boosts
0
Views
2.2k
Activity
Jun ’26
Issues with StoreKit
I am a long time developer but have never incorporated an IAP into any of my work so this is very new to me. So to save time I have used some AI for coding, but the code is having an issue and I'm not sure whether it is in the code or in Xcode. Xcode 27 on macOS 27.0.1 for iOS 27.0.1. IAP is to unlock full access after a 14-day trial. DESCRIPTION OF PROBLEM In local Xcode StoreKit testing, Product.purchase() returns .pending (as expected, since "Ask to Buy" is enabled), and Xcode’s transaction manager continues to show “Pending Approval.” After closing and reopening the app’s purchase sheet, the same transaction appears as verified and non-revoked in Transaction.currentEntitlements and is delivered through Transaction.updates, giving full access to the app. This reproduces in a standalone UIKit test app (linked below). The source file in question is AppAccessManager.swift. The relevant functions are: AppAccessManager.purchaseProduct() Calls product.purchase(). Handles .pending by recording a request reminder and displaying feedback. AppAccessWindowViewController.viewDidLoad() Runs when the purchase-options sheet is opened. Calls manager.start() followed by manager.refreshAccessState(). This is the sheet-opening path associated with the unexpected transaction delivery. AppAccessManager.refreshAccessState() Iterates Transaction.currentEntitlements. A transaction still labeled “Pending Approval” in Xcode is returned here as verified and nonrevoked. AppAccessManager.startListeningForTransactionUpdates() and handleTransactionUpdate(_:) The same pending transaction is also delivered through this sequence as verified and nonrevoked. The handler applies access before calling transaction.finish(). AppAccessManager.applyVerifiedPurchase(_:) Applies verified transactions received from successful purchases or the listener. STEPS TO REPRODUCE https://avliscoding.com/storekittest.zip Launch app Select "Open Purchase Sheet" Start trial Quit app, enable "Ask to Buy" in StoreKit file configuration settings Restart app. Select Purchase (will give a pending message in response) Close sheet Reopen sheet The app now believes it has made that purchase even though the purchase is still "Pending" in Xcode.
Replies
1
Boosts
0
Views
153
Activity
6m
Can Screen Time data be used to determine eligibility for StoreKit subscription discounts?
Family Controls: Can Screen Time performance determine StoreKit promotional-offer eligibility? I'm developing an iOS app that helps individuals reduce recreational screen time. The app would use DeviceActivityMonitor to evaluate whether users meet their own screen-time goals. Users who succeed could redeem a discounted one-month subscription through StoreKit promotional offers. The calculation would occur locally on the user's device. No raw usage data, app names, or browsing history would be transmitted. Two questions: Is it permissible under the Family Controls framework's data-use restrictions to use on-device activity outcomes to determine eligibility for a discount on the same app's subscription? Can the resulting discount tier or promotional-offer identifier be sent to our server solely to authorize the StoreKit offer, without violating those restrictions? I'd appreciate clarification from Apple staff about this specific use case before implementing it.
Replies
0
Boosts
0
Views
15
Activity
46m
“Account Not In This Store” error when trying to purchase non-consumable IAP within TestFlight
I have simple non-consumable IAPs set up for an app on macOS. Testing in development with a local .storekit configuration file, everything works as expected. Testing in development with a remote Sandbox, everything also seems to work fine. Product names and prices fetch correctly, I am able to make purchases with a Sandbox account (both US and UK). Once I upload a build into TestFlight, IAPs no longer work. The tester would download the Beta app from TestFlight. They open a license manager and can see all the product names, descriptions and prices are pulled from Apple servers correctly (with the correct local currency as well!). So far so good. When trying to purchase any of the IAP, the following error appears: This is TestFlight so testers are using their real Apple ID. My understanding is that they should continue using their production credentials and a TestFlight Sandbox would be configured behind the scenes automatically. This error always says the users cannot purchase from a US store and must switch to [whatever user’s actual store location is] store. For example, my account is based in the UK, has got a UK billing address and a UK payment method, and the error tells me to switch to the UK store. People in Canada get a similar error - you must switch from the US store to Canadian. The error makes no sense, the account is already in the desired country. Clicking on the “Change Store” button opens the App Store app and displays another error: “Cannot Connect to App Store”. Clicking Retry just results in this errors showing again and again. Clicking OK takes us back to the failed IAP purchase and the final error message appears: “Purchase Error - Unable to Complete Request”. Things I’ve done / checked: IAPs are configured in App Store Connect and available for all regions prices are set for all regions in App Store Connect IAP name and description localisation in English (UK) IAP status is Ready to Submit, I don’t think I can go past that unless I make a production release (which I can’t until we fix the problem) IAP capabilities added in xcode the problem is not account, machine, or location dependent - every beta tester testing my app on TestFlight has the same issue, they each use a different account and have accounts in different countries double checked the App Store account location in the App Store settings - it is definitely matching the store this error is asking to switch to application exits at startup with error 173 if app receipt cannot be found - this one was suggested by the review team, I could not really find any documentation for it review team also suggested I should add com.apple.security.network.client to enable IAP connectivity. I did add that to one of the builds and it did not help. I am not really convinced this is necessary Any suggestions on what to check and what to try? I have run out of ideas.
Replies
18
Boosts
11
Views
3.2k
Activity
4h
Padel Tempo iOS 1.0 — Waiting for Review nearly 5 days after metadata-only resubmission
Hello App Review team and fellow developers, Our Padel Tempo: Padel Score iOS 1.0 submission has been in Waiting for Review for nearly five days after a metadata-only resubmission, and I would like to make sure that nothing else is required from our side. App: Padel Tempo: Padel ScoreVersion: iOS 1.0Submission ID: cbc83032-2f7a-4f80-bc2c-e54a5c9f68b3Resubmitted: October 26, 2026 at 5:04 PMCurrent status: Waiting for Review What happened Our initial submission was reviewed on October 26. We received an automated App Review message regarding the auto-renewable subscriptions Premium Monthly and Premium Yearly. The only issue identified was a missing functional link to the standard Apple Terms of Use (EULA) in the App Store metadata. We corrected the issue immediately: added the standard Apple Terms of Use (EULA) link to the App Description; made sure the required metadata was complete; no binary changes were necessary; resubmitted the same app version approximately 12 minutes after receiving the review message. Since then, the submission has remained in Waiting for Review. Why I am posting I understand that review times can vary, and I am not asking to skip the queue. I would simply like to confirm that: the resubmission is correctly queued for App Review; the previous metadata issue is considered resolved; no additional action or information is currently required from us. Since this was a metadata-only correction following an already completed first review, I wanted to make sure the resubmission did not end up waiting because of something we may have missed. If App Review needs any additional information, screenshots, test instructions, or clarification, I can provide it immediately. Thank you for your time, and I would also appreciate hearing from other developers who have recently experienced longer-than-usual Waiting for Review times. Best regards,MykolaPadel Tempo
Replies
0
Boosts
0
Views
164
Activity
1d
App Store Server Notification returns successful purchase while customer's payment remains Pending
App Store Server Notification returns successful purchase while customer's payment remains Pending We have encountered an edge case with a Non-Renewing Subscription and would appreciate clarification on the expected developer behavior. Steps to reproduce User initiates an in-app purchase using a credit card. The purchase succeeds in the app. Our backend receives an App Store Server Notification V2 (ONE_TIME_CHARGE). We successfully verify the signed JWS transaction. The same transaction is also returned by the App Store Server API. Based on the verified transaction, we grant the user's entitlement. However, on the customer's Apple account: The purchase is shown as Pending in Purchase History / Report a Problem. The customer reports that their credit card has not yet been charged. Question From a developer's perspective, should entitlement be granted immediately after receiving a valid App Store Server Notification and successfully verifying the transaction, even if the customer's purchase is still shown as Pending? Is there any App Store Server API or transaction field that indicates the payment has not yet been settled, allowing developers to delay granting entitlement until the payment is finalized? Or is the expected implementation to grant entitlement upon successful transaction verification and revoke it only if Apple later sends a refund notification? Any clarification on the expected workflow would be greatly appreciated. Thanks in advance. :)
Replies
2
Boosts
1
Views
779
Activity
2d
Receipt validation: Under what circumstances can receipt.in_app be empty after a successful consumable purchase?
Hi everyone, I'm investigating an issue related to StoreKit 1 receipt validation and would appreciate any insight from Apple engineers or developers who have encountered this before. Environment StoreKit 1 Consumable In-App Purchase iOS 16 / iOS 17 / iOS 18 (observed on multiple versions) Receipt validation performed on our server Receipt is read from the app bundle after the transaction completes Issue Occasionally, after a purchase succeeds and the transaction reaches the SKPaymentTransactionStatePurchased state, the App Receipt exists and can be decoded successfully, but the receipt contains: { "receipt": { ... "in_app": [] } } The in_app array is completely empty. As a result, our server cannot find the purchased product in the receipt and cannot complete receipt validation. Questions I'd like to understand under what circumstances Apple may return an App Receipt where receipt.in_app is empty. Specifically: Is it expected behavior that receipt.in_app can be empty after a successful consumable purchase? Could this happen if the app reads the receipt before the receipt has been updated? Is there any possibility that calling finishTransaction: before reading the receipt could cause the purchase record not to appear in receipt.in_app? If receipt synchronization is delayed, what is Apple's recommended approach? Wait and retry? Issue an SKReceiptRefreshRequest? Or validate using another mechanism? Are there any documented scenarios where Apple intentionally returns an empty in_app array? Additional Information The transaction state is Purchased. The purchase callback is received successfully. We have confirmed that the receipt file exists. The issue occurs only occasionally and cannot be reproduced consistently. Most purchases contain the expected in_app entry. Any clarification about the expected behavior of the App Receipt or recommended best practices would be greatly appreciated. Thank you!
Replies
1
Boosts
0
Views
768
Activity
2d
Subscriptions unavailable during App Review, but loading and sandbox purchases work in our tests (RevenueCat / StoreKit)
Hello, Our first release was rejected under Guideline 2.1(b) because subscriptions were unavailable during App Review. We have been unable to reproduce the issue and would appreciate guidance on further diagnostics. Review environment App version: 1.0.0 (9) Device: iPad Air 11-inch (M3) OS: iPadOS 27.0.1 Internet connection: Active, according to the review message The app integrates StoreKit through RevenueCat and offers three auto-renewable subscriptions. We verified that : The Paid Apps Agreement, banking information, and tax forms are active. All three subscriptions and their subscription group are included in the submission. The subscriptions are available in all countries and regions. The submitted build uses the RevenueCat App Store SDK key, rather than a Test Store key. We tested subscription loading 15 times across two networks, including on iPad. Prices loaded successfully, and we completed a sandbox purchase that unlocked Premium. Additional diagnostics on an iPad Air 11-inch (M3) simulator running iPadOS 26.5 returned all three products both through a direct StoreKit Product.products(for:) request and through RevenueCat. No local StoreKit configuration file was attached. We have not reproduced the exact iPadOS 27.0.1 review environment. The simulator runtime is unavailable through our installed Xcode. The rejection message states that subscriptions were unavailable, but does not identify whether product retrieval failed, the subscription options were missing, or a purchase attempt failed. We are asking App Review for those details and a retry. We were wondering: What additional diagnostics would help investigate product availability failures that occur only during App Review? Are there sandbox account or storefront conditions we should test beyond successful product loading and sandbox purchases? Is there a recommended way to collect useful StoreKit error information from a review session when the failure cannot be reproduced locally? Thanks !
Replies
1
Boosts
0
Views
68
Activity
2d
Xcode 27.2: Deprecated API warning in Apple's SKTestTransaction.h
After updating to the public release of Xcode 27.2 (27B52), I'm seeing this warning in Apple's StoreKitTest framework: **File**: `SKTestTransaction.h`, line 34 **Warning**: `'SKPaymentTransactionState' is deprecated: first deprecated in iOS 18.0` The warning recommends using `PurchaseResult` from `Product.purchase(confirmIn:options:)`. Is this a known issue?
Replies
0
Boosts
0
Views
75
Activity
2d
Sandbox can purchase auto-renewable subscriptions but non-consumable IAP is always invalid
I’m testing In-App Purchases in the sandbox on a real iPhone. Auto-renewable subscriptions work correctly with the same app build, bundle ID, and sandbox tester account: com.aifalling.sides.vip.monthly com.aifalling.sides.vip.yearly However, a non-consumable product can’t be purchased: Product ID: com.aifalling.sides.vip.onetime App Store Connect IAP Apple ID: 6794812888 Type: Non-Consumable Status: Ready to Submit Bundle ID: com.aifalling.sides The native StoreKit payment request fails immediately with: The purchase identifier was invalid. The wrapper reports error code 700605. I verified the non-consumable product through the App Store Connect API: Product ID exists and is returned by the API One localization exists: zh-Hans A price schedule is configured, including a base territory and prices Availability includes China (CHN) and many other territories availableInNewTerritories is true I waited more than one hour after the latest metadata changes I completely removed the app, rebuilt/reinstalled the custom development build, and retried The same signed build can successfully purchase the two auto-renewable subscriptions This is the first non-consumable IAP type for this app. The app and IAPs have not been submitted for App Review yet because I’m trying to complete sandbox testing first. Does a non-consumable IAP require any additional App Store Connect setup or association that an auto-renewable subscription doesn’t require for sandbox testing? Is Ready to Submit sufficient for sandbox testing of a non-consumable product in this situation? Any guidance would be appreciated.
Replies
2
Boosts
0
Views
891
Activity
2d
Sandbox errorCode 4040004 "App not found" — one app works, identical app doesn't
I have 2 iOS app products. One can fetch subscription product information normally, while the other fails with the error errorCode 4040004 'App not found' in Sandbox. The App Store Connect backend configuration should be fine, and the subscription code on the app side is the same codebase for both. I really can't find the root cause anymore — if anyone knows what's going on, please point me in the right direction. Also, I'm able to sync/download the StoreKit product configuration file from App Store Connect directly in Xcode, which should also confirm that my App Store Connect backend configuration is correct.
Replies
7
Boosts
1
Views
1.3k
Activity
3d
Sandbox products load, but purchases fail with productUnavailable
We have a new iOS app in App Store Connect with six consumable in-app purchases. Environment: Bundle ID: live.mymi.ios TestFlight version: 1.0.4 (70) Storefront: KOR Environment: Sandbox Example product ID: ios_spark_5000 StoreKit product queries return all six products with localized KRW prices. For example, ios_spark_10000 is returned as ₩12,000. However, requesting a purchase fails with Product.PurchaseError.productUnavailable / “This item is not available.” The issue can also be reproduced independently of the app: Settings > Developer > Sandbox Apple Account > Test Transactions Entering bundle ID live.mymi.ios and product ID ios_spark_5000 is rejected with a message stating that the product ID or bundle ID is invalid. The previous app/product pair live.mymi.app + spark_5000 still works on the same device and with the same Sandbox tester. We verified the following: Paid Apps Agreement, banking, and tax information are active The explicit App ID has the In-App Purchase capability enabled The TestFlight build uses the correct bundle ID Product pricing, localization, and availability in all 175 storefronts are configured All six IAPs are attached to the first app version review submission No local StoreKit configuration is involved This has persisted for multiple days. It appears that the product-query catalog contains the products, while the Sandbox transaction service does not recognize the product-to-bundle association. Has anyone seen this with a newly created App Store app/IAP catalog? Did Apple need to re-index the products?We have a new iOS app in App Store Connect with six consumable in-app purchases. Environment: Bundle ID: live.mymi.ios TestFlight version: 1.0.4 (70) Storefront: KOR Environment: Sandbox Example product ID: ios_spark_5000 StoreKit product queries return all six products with localized KRW prices. For example, ios_spark_10000 is returned as ₩12,000. However, requesting a purchase fails with Product.PurchaseError.productUnavailable / “This item is not available.” The issue can also be reproduced independently of the app: Settings > Developer > Sandbox Apple Account > Test Transactions Entering bundle ID live.mymi.ios and product ID ios_spark_5000 is rejected with a message stating that the product ID or bundle ID is invalid. The previous app/product pair live.mymi.app + spark_5000 still works on the same device and with the same Sandbox tester. We verified the following: Paid Apps Agreement, banking, and tax information are active The explicit App ID has the In-App Purchase capability enabled The TestFlight build uses the correct bundle ID Product pricing, localization, and availability in all 175 storefronts are configured All six IAPs are attached to the first app version review submission No local StoreKit configuration is involved This has persisted for multiple days. It appears that the product-query catalog contains the products, while the Sandbox transaction service does not recognize the product-to-bundle association. Has anyone seen this with a newly created App Store app/IAP catalog? Did Apple need to re-index the products?
Replies
1
Boosts
0
Views
554
Activity
3d
Product.products(for:) returns one subscription group's products but not return the other
I'm stuck on this and genuinely don't know what's wrong. I have two auto-renewable subscription groups in one app. I pass all six product IDs to a single Product.products(for:) call. It succeeds, doesn't throw, and returns three products — all from group A. The three from group B just aren't in the array. No error, they're simply absent. All six show Approved in App Store Connect. [PlusStore] probe — storefront: USA [PlusStore] probe — OK ...plus.monthly (group A) [PlusStore] probe — OK ...plus.quarterly (group A) [PlusStore] probe — OK ...plus.yearly (group A) [PlusStore] probe — MISSING ...plus.founding.monthly (group B) [PlusStore] probe — MISSING ...plus.founding.quarterly (group B) [PlusStore] probe — MISSING ...plus.founding.yearly (group B) Retried three times with backoff, so it isn't cold-launch timing. I don't think it can be the Paid Applications Agreement, the sandbox account, a network failure, or a wrong bundle prefix, since group A comes back fine. I've checked the group B IDs character-for-character against the Product ID field in App Store Connect, confirmed United States is enabled with an active price and no future-dated schedule on all three, and confirmed there's no .storekit file attached to the scheme. So the only difference I can find between the two groups is the group itself.
Replies
1
Boosts
0
Views
670
Activity
3d
Sandbox purchase completion reported, but Transaction.all is empty — how to investigate without another purchase?
Hello, We are investigating a discrepancy during an auto-renewable subscription test in Apple’s Sandbox. We would appreciate guidance on read-only diagnostics that preserve the original attempt. Environment: A development-signed, unpublished QA app on a physical iPhone, separate from our production app. A monthly auto-renewable subscription. The original purchase flow uses RevenueCat. The Apple purchase sheet displayed “Environment: Sandbox” and indicated that no charge would occur. Observed behavior: After entering the Sandbox account password, the tester reported seeing a purchase-completion message. The app subsequently displayed a cancellation message. We did not capture a verified StoreKit success transaction, so we cannot establish that the purchase actually completed. The dedicated QA RevenueCat project showed no purchases or subscriptions, and no actual purchase webhook arrived. The next day, subscription management for the same Sandbox account showed no subscription for this QA app. Read-only investigation: RevenueCat’s purchase and subscription queries returned HTTP 200 with empty results and no additional page. We updated the same app, retaining its bundle identifier and installation, with a native StoreKit diagnostic. Enumerating StoreKit.Transaction.all completed normally with zero results. There were no unverified results, filtered-out transactions, timeouts, or count limits. This diagnostic did not invoke purchase, synchronization, or transaction-finishing operations. One earlier restore attempt also returned no purchase. We have not made another purchase, cleared purchase history, or recreated the Sandbox account. We understand that an empty result in this app context does not prove that no transaction exists anywhere in Apple’s systems. No transaction identifier or signed transaction has been recovered. Questions: What read-only checks can distinguish an incomplete or cancelled purchase from an account/environment mismatch or a transaction-delivery issue? Is there a supported way to investigate the original attempt without a transaction identifier and without making another purchase? Which existing device logs or diagnostic captures would be useful? If investigation requires identifiers or unredacted diagnostics, what private Apple reporting channel should we use? Our goal is to investigate the original attempt while preserving purchase history and leaving production untouched. Thank you.
Replies
0
Boosts
0
Views
85
Activity
3d
External Link Account Modal language
Hello everyone! We are currently developing our application with an approved "External Link Account Entitlement." During development, we encountered an issue regarding the display language of the modal window triggered by the ExternalLinkAccount.open() function. It consistently appears in English when installed via Xcode or TestFlight. The physical device is located in Israel, the account is set to the Israel region, and the selected language is Hebrew. We have tried changing the language and region settings on the device, but nothing has changed. Since the application is intended for the Israeli market, it is crucial that the window appears in Hebrew. I have reviewed the relevant forum threads and tried the solution suggested by an Apple engineer, but it did not resolve the issue: External Link Account Modal language My main questions are as follows: Does this modal window support Hebrew? Could the absence of Hebrew be a specific behavior related to using Xcode and TestFlight, while the language will display correctly in the App Store version? Which account settings influence the language of the triggered modal window?
Replies
1
Boosts
0
Views
97
Activity
4d
"StoreKit Testing in Xcode" certificate is not trusted on iOS 26
Hello. I have setup a StoreKit testing in the app that was and still is perfectly working on iOS 18. Unfortunately when run on iOS 26 the following error gets printed in the console after calling Transaction.currentEntitlement(for:) method: Failed to verify certificate chain due to client recoverable failure: Error Domain=NSOSStatusErrorDomain Code=-67843 "“StoreKit Testing in Xcode” certificate is not trusted" UserInfo={NSLocalizedDescription=“StoreKit Testing in Xcode” certificate is not trusted, NSUnderlyingError=0x109de7e10 {Error Domain=NSOSStatusErrorDomain Code=-67843 "Certificate 0 “StoreKit Testing in Xcode” has errors: Root is not trusted;" UserInfo={NSLocalizedDescription=Certificate 0 “StoreKit Testing in Xcode” has errors: Root is not trusted;}}} I'm not seeting any StoreKit Testing certificates in phone's certificate trust settings. This test was performed on iOS 26.0 (23A341) with app built in Xcode 16.4. FB20339145
Replies
8
Boosts
2
Views
1k
Activity
5d
Unable to submit already approved subscription groups with error "New subscription groups must be submitted with an auto-renewable subscription from within that group.
Issue: Since Sept 10, 2026, my existing, already-approved auto-renewable subscription group cannot be submitted for review. This is not a new group: all 9 subscriptions in it show Approved, and my app has been live since July 2026. How it started: I changed only the introductory offer (7-day to 14-day free trial) on the monthly products. What App Store Connect shows now: The group is marked “Prepare for Submission” with the banner “Your first subscription group must be submitted with a new app version.” The Draft Submission contains only the group, and Submit for Review is disabled with: “New subscription groups must be submitted with an auto-renewable subscription from within that group.” “Add for Review” is greyed out on every one of the 9 subscriptions, so there is nothing to add to the draft. Impact: I can’t sell a subscription on any tier or billing period, and it has now been 6 weeks of lost revenue. Not the app binary: Builds 497 and 501 were both approved within hours, with no effect on the group’s status. What I’ve already tried, without success: Attaching each subscription individually, with all metadata and review screenshots complete. A forced re-save (editing a description, saving, reverting and saving again) to clear a stale validation state. Removing and re-adding the draft submission. Deleting and re-creating the introductory offer. Resubmitting the app. Accepting the latest agreements (all show Active). Support status: Developer Support case 102961055291, opened Sept 12. I’ve provided screen recordings and screenshots. I was told the case would go to engineering, but in six weeks I haven’t had a reply from an engineer, a name or a timeline. Two older threads describe the same stuck state and say it needed an Apple-side reset: 844425 and 818349. https://developer.apple.com/forums/thread/844425 https://developer.apple.com/forums/thread/818349 Has anyone seen this resolved without Apple resetting it? And if an Apple engineer sees this, could the case be routed to the team that can reset the subscription group’s submission state?
Replies
0
Boosts
0
Views
56
Activity
5d
StoreKit Test Transactions fail with “App not found” / ASDServerErrorDomain 3504 for one Bundle ID, while another app works
Hello Apple Developer Support / StoreKit team, I am testing auto-renewable subscriptions on a real iPhone device using Settings > Developer > Sandbox Apple Account > Test Transactions. I found that subscriptions work correctly for one of my apps, but fail for another app under the same Apple Developer account. Working app Bundle ID: com.benbendou.pinyincharacter Product ID: xpyxhz.quarterly Result: The sandbox purchase sheet appears and the subscription flow can be completed successfully. Failing app Bundle ID: com.benbendou.chengyudaquan Product ID: cydq.quarterly Result: The Test Transactions flow fails. In my app, Product.products(for:) can load some subscription products successfully. However, when trying to purchase cydq.quarterly, the purchase fails with: errorCode = 4040004 errorMessage = "App not found. Please try again." Because the same issue also happens in iPhone Settings > Developer > Sandbox Apple Account > Test Transactions, using the exact Bundle ID and Product ID, this does not seem to be caused by my app’s StoreKit code. The strange part is that another app under the same developer account works correctly with Test Transactions, but this app does not. Could Apple please help check whether the Bundle ID / app record / subscription group / in-app purchase products for com.benbendou.chengyudaquan are correctly linked in the StoreKit Sandbox backend? It looks like the sandbox environment can load the product metadata, but cannot complete the purchase or find the app during transaction lookup. Thank you.
Replies
1
Boosts
0
Views
643
Activity
5d
Sandbox Apple Account sign-in asks for phone verification, then fails with “Could not connect to iCloud”
Hi, I created a Sandbox Apple Account in App Store Connect for testing StoreKit / Age Assurance sandbox scenarios. When I try to sign in on an iPhone through: Settings -> Developer -> Sandbox Apple Account I can enter the sandbox account email/password and I successfully receive the email verification code. After entering the email verification code, iOS asks me to add/verify a phone number. When I enter the phone number, I get this error: “Could not connect to iCloud. Verification codes cannot be sent to this phone number at this time. Please try again later.” I did not set any phone number when creating the sandbox tester in App Store Connect. The sandbox tester was created with only name, email, password, and country/region. Context: iPhone has Developer Mode enabled I am signing in via Settings -> Developer -> Sandbox Apple Account I am not trying to sign in through normal iCloud / Apple Account settings The sandbox account email is not used as a normal Apple Account Email verification works Phone verification has failed for more than a day Questions: Is phone verification expected when signing in with a Sandbox Apple Account? Is there a way to use Sandbox Apple Accounts / Age Assurance sandbox scenarios without adding a trusted phone number? Does this error usually mean the phone number is rate-limited/blocked, or that the sandbox account is stuck? Should this be handled by Apple Developer Program Support instead? Thanks!
Replies
1
Boosts
0
Views
589
Activity
5d
Non-consumable In-App Purchases return no products during App Review only (works in TestFlight and sandbox)
My app has been rejected twice under Guideline 2.1(b) because its In-App Purchases did not load during review. Both reviews used an iPad Air 11-inch (M3); the latest was on iPadOS 27.0.1. The reviewer's screenshots show the app's fallback state, which appears when StoreKit 2's Product.products(for:) returns none of the products. I can't reproduce it The same build loads all four products with their prices in every test I've run: TestFlight on iPhone and iPad (iPadOS 27.0), with a US account Run from Xcode with StoreKit Testing disabled, using a brand-new US sandbox account and a fresh install Starting offline and then reconnecting Signed out of the sandbox With In-App Purchases restricted in Screen Time Setup Four non-consumables, $0.49 USD, available in all countries, with localizations and review screenshots Submitted together with the app version (status: Waiting for Review) Paid Apps Agreement, banking and tax all active I've worked through Technote TN3186 (Troubleshooting In-App Purchases availability in the sandbox) Code Loading is a single call, retried a few times, and the user can tap Try Again: let products = try await Product.products(for: productIDs)Questions Is there anything that can stop products from being returned in the App Review environment but not in the sandbox? Is there a way to check what the review environment sees? Any help is appreciated.
Replies
0
Boosts
0
Views
96
Activity
6d
Increased StoreKit errors “Unable to Complete Request”
Since January 28, 2026, we’ve noticed an increase in StoreKit-related errors during purchase flows. Specifically, we’re seeing a spike in errors reported as “Unable to Complete Request”, categorized as unknown StoreKit errors. This correlates with a noticeable drop in the overall purchase success rate. A few observations: The issue is not limited to the latest app version, it also affects older versions. It appears to occur only on iOS 17+. The impact seems country-specific: some regions are affected more heavily, while others show no significant change compared to previous days. At the moment, there are no related incidents reported on Apple’s System Status page. Given these symptoms, this looks like a potential StoreKit / Apple API issue, but we haven’t found any official confirmation yet. Has anyone else observed similar StoreKit behavior recently on iOS 17+? Any insights or known issues would be greatly appreciated.
Replies
6
Boosts
2
Views
1.7k
Activity
6d