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

StoreKit testing not working on iOS26.5 simulator
Hi, I'm trying to run our StoreKit unit tests with Xcode26.5 on an iOS26.5 simulator. Host computer has macOS26.5. All tests are failing and in the console I see logs such as [SKTestSession] Error saving configuration file: Error Domain=SKInternalErrorDomain Code=3 "(null)" [SKTestSession] Error deleting all transactions: Error Domain=SKInternalErrorDomain Code=3 "(null)" [SKTestSession] Error clearing overrides: Error Domain=SKInternalErrorDomain Code=3 "(null)" [SKTestSession] Error setting value to 1 for identifier 2 for jp.unext.mediaplayer: Error Domain=SKInternalErrorDomain Code=3 "(null)" And the simulator asks me to provide my AppleID. Tests have been broken since at least 26.4 The release notes claims that it has been fixed but not for me. https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_5-release-notes#StoreKit-Testing-in-Xcode Does anyone else have the same issue? Reported FB22774836 just in case.
6
8
444
3h
Can't fetch products from App Store connect
I had everything working with Revenue Cat. Then my app got rejected for not loading subscriptions, which was odd because a previous built was rejected for wording on that same paywall. I checked, and realised I suddenly can't fetch products in testFlight either. I can only see products in Xcode using the store kit configuration file. I've found many issues like this online and everybody point to the same solutions (that seem to work for most), but here's what I tried so far: Checked that all my agreements in App Store Connect are active Checked that ids match between Xcode / revenue cat / App Store connect Store kit config file is syncing with App Store Connect correctly I removed revenue cat and used the store kit api directly to fetch products. The array of products is empty in all environments that don't have access to store kit config file. Checked status of all subscriptions (all waiting for review -- as they were when the paywall worked) Nothing seems to work... Any suggestions? Many thanks
5
2
1k
3h
original_transaction_id associated to web_order_line_item_id of auto-renewable subscription changed
Our app offers auto-renewable subscriptions using StoreKit Original API for In-App Purchase and App Store Server Notifications V1. Starting around 2025-03-15, we found some cases where original_transaction_id which was associated to web_order_line_item_id of already purchased subscription had changed in the receipt information of verifyReceipt response or App Store Server Notifications V1. The detailed steps are: Around February 2025, re-purchase from the app the same subscription product which was canceled and expired some time ago, using StoreKit Original API for In-App Purchase Receive the following 2 notifications from App Store Server Notifications V1 almost at the same time INITIAL_BUY DID_CHANGE_RENEWAL_STATUS In both notifications, latest_receipt_info contains the receipt for the re-purchased subscription period with new original_transaction_id and web_order_line_item_id pending_renewal_info contains both new original_transaction_id and original one which was generated at first purchase, and original one has "is_in_billing_retry_period": "1" Starting around 2025-03-15, the following happens When we receive another "DID_CHANGE_RENEWAL_STATUS" notification from App Store Server Notifications V1, original_transaction_id which is associated to web_order_line_item_id of the re-purchased subscription period has changed back to the original one (the one which was generated at first purchase) in latest_receipt_info. When we call verifyReceipt with the receipt obtained from appStoreReceiptURL, the response does not seem to contain new original_transaction_id which was generated at re-purchase We have some questions regarding this original_transaction_id behavior. When a user re-purchase the same subscription product which was canceled and expired some time ago, it seems that new original_transaction_id is generated. Is this an expected behavior? If yes, it seems that, at some point, original_transaction_id which is associated to web_order_line_item_id of the re-purchased subscription changed back to the original original_transaction_id which had been generated at first purchase. Is this an expected behavior? What triggers the original_transaction_id change to the original one? Is it related to some user actions or subscription status change?
4
0
475
15h
watchOS-Only App First Submission — IAP Rejected Multiple Times, Works in TestFlight Sandbox but Not in Review
Hi everyone, I'm submitting my watchOS-only app and its In-App Purchase for the very first time (both app and IAP submitted simultaneously). After multiple rejections, I still can't resolve the issue and would appreciate any guidance. Environment: App type: watchOS-only (no iOS companion app) First submission of both the app and IAP IAP type: Non-Consumable, Product Apple ID: 6770497337 The problem: The reviewer (App Review) states that the IAP product information cannot be retrieved in the review environment. According to the reviewer, they are testing in the production environment, not the sandbox. However: In my TestFlight build, the app correctly retrieves the IAP product I have successfully completed the full purchase flow using a sandbox account All business agreements (including Paid Apps Agreement) are accepted and active in The Bundle ID and Product ID are correctly configured in both Xcode and App Store Connect Current IAP status in App Store Connect: Overall status: "Developer Action Needed" All localizations (English US/UK/AU/CA, Japanese, Simplified Chinese, Traditional Chinese): "Rejected" No specific rejection reason is shown anywhere in App Store Connect Any help would be greatly appreciated. Thank you! 🙏
1
0
40
19h
"In-App Purchases and Subscriptions" section missing from version page — cannot submit subscriptions with binary
I have an iOS app with two auto-renewable subscriptions (monthly and annual) that are fully configured and ready for their first submission. Both products have complete metadata, pricing, localizations, review screenshots, and review notes. The problem: The "In-App Purchases and Subscriptions" section does not appear on the version preparation page. It should appear between "App Review Information" and "App Store Version Release," but it's missing entirely. This means I cannot link the subscriptions to my app version for a combined submission. How I got here: I initially submitted the subscriptions for review independently (via the "Submit for Review" button on the subscription product page), not realizing they needed to be submitted alongside a binary. This resulted in a Guideline 3.1.1 rejection. I then created a new app version with a build, but the "In-App Purchases and Subscriptions" section did not appear on the version page. Not realizing this section should exist, I submitted the app — it was approved and published without the subscriptions. I have since created another new version with a fresh build. The app version, monthly subscription, and yearly subscription are all in "Ready to Submit" state. The section still does not appear. What I've verified: All subscription metadata is complete (pricing, localizations, review screenshots, review notes) Subscription group has a localization A new app version is in "Prepare for Submission" with a build uploaded All business/agreements/tax/banking setup is complete The app has no consumable or non-consumable IAPs — only auto-renewable subscriptions All subscription testing appears to work I've reviewed other forum threads with the same issue (e.g., https://developer.apple.com/forums/thread/778258) and followed all suggestions Environment: App uses StoreKit 2 via Flutter in_app_purchase plugin Two products: monthly and annual auto-renewable subscriptions First-time IAP submission for this app App is currently live on the App Store I opened a Developer Support ticket 7 days ago and have not yet received a resolution. Has anyone encountered this issue and found a workaround? Is there a way to reset the subscription review state so they can be properly linked to a version?
0
0
91
20h
First auto-renewable subscriptions stuck In Review for more than a week after app approval
Hello, I’m looking for guidance on a first auto-renewable subscription review issue that appears to be stuck. Our app “Skinora: AI Skincare Routine” has already been approved and is live on the App Store, but both of our first auto-renewable subscriptions are still stuck in “In Review”. App version: 1.0.1 Build: 6 Subscriptions: Skinora Pro Annual — product ID: skinora_pro_annual Skinora Pro Weekly — product ID: skinora_pro_weekly_Access Current App Store Connect state: App version 1.0.1 is approved/live Subscription group localization is Approved Both subscription products still show In Review There are no visible Resolution Center messages or Notes from App Review requiring action from us Background: The subscriptions were originally returned because the first subscriptions needed to be submitted with a new app version/binary. We then submitted them together with app version 1.0.1 build 6. The app was approved, but the subscriptions have remained In Review for several working days. (8 days) This is blocking our launch because the live app depends on these subscriptions for Pro access, and users cannot purchase/unlock Pro until Apple approves the products. I have already contacted Apple Developer Support multiple times and also called support. The support representative said they would escalate it internally, but the status has not changed yet. Is this a known App Store Connect issue with first auto-renewable subscriptions? Is there any way to confirm whether the subscriptions are actually being reviewed or stuck in an inconsistent state? Should I continue waiting, or is there a specific action needed to reset or move the subscription review forward? Any guidance would be appreciated.
1
0
31
23h
xcodebuild test (CLI) does not sync .storekit to storekitd on iOS 26.5 — SKTestSession unusable in CI
On iOS 26.5 simulator runtime, running UI tests via xcodebuild test from the command line does not push the scheme's StoreKitConfigurationFileReference to the destination simulator's storekitd AppGroup Octane container. As a consequence, SKTestSession(configurationFileNamed:) either silently falls through to the production App Store (surfacing a "Sign in to Apple Account" SpringBoard alert during paywall tests), or throws SKInternalErrorDomain Code=3 "Error saving configuration file" if you call any SKTestSession instance method. The same project, same scheme, same .storekit file works correctly when launched via Xcode IDE (Cmd+R / Cmd+U) — which uses DVTDevice.handleStoreKitConfigurationSyncForBundleID:configurationFilePath: via an internal IDELaunchSession XPC path that the public xcodebuild CLI does not invoke. This regression makes StoreKit Test unusable in CI for any project using xcodebuild test or xcodebuild test-without-building against an iOS 26.5 simulator. Environment macOS: 26.x Xcode: 26.4.1 (25E253) iOS Simulator runtime affected: 26.5 iOS Simulator runtime that does not exhibit the bug: 26.1 Test target: XCTest UI tests Test plan: *.xctestplan with "storeKitConfiguration": "MyApp.storekit" in defaultOptions Affected scheme actions: Test (CLI) Not affected: Run, Test (Xcode IDE) Steps to Reproduce Create a SwiftUI iOS app com.example.MyApp. Add a MyApp.storekit with one auto-renewable subscription. Add a UI test target. In the xctestplan: defaultOptions.storeKitConfiguration = "MyApp.storekit". In the UI test base case: private var storeKitSession: SKTestSession? override func setUpWithError() throws { storeKitSession = try SKTestSession(configurationFileNamed: "MyApp") app.launch() } Boot a fresh iOS 26.5 simulator. Run via CLI: xcodebuild test \ -project MyApp.xcodeproj \ -scheme MyApp \ -testPlan MyAppUITests \ -destination "platform=iOS Simulator,name=iPhone 17 Pro" In the test, trigger paywall and call Product.purchase(). Expected Product.purchase() presents the StoreKit Test sheet labeled "[Environment] Xcode". Same behavior as Xcode IDE Cmd+U. Actual Production App Store flow triggers. SpringBoard alert "Sign in to Apple Account" appears. Tests waiting on the "Xcode"-labeled sheet fail with Element does not exist. Evidence The simulator's ~/Library/Developer/CoreSimulator/Devices/<UDID>/data/Containers/Shared/AppGroup/<storekit-AGID>/Documents/Persistence/Octane/com.example.MyApp/Configuration.storekit: Present (≈100 KB) when launched via Xcode IDE. Missing when launched via xcodebuild test CLI on the same simulator UDID. Workarounds Attempted (all fail on iOS 26.5) No-op XCTestCase "warmup" that calls XCUIApplication.launch() + sleep — does not trigger the sync because XCUIApplication.launch() routes through XCTRunner, not IDELaunchSession. Multi-destination xcodebuild test with -parallelize-tests-among-destinations. Manually cp-ing the .storekit file into the AppGroup Octane container — storekitd only loads via the XPC channel. launchctl kickstart -k system/com.apple.storekitd — wipes in-memory state, does not pick up disk file. Only working workaround: open project in Xcode IDE, Cmd+R, wait ~20–30 sec, Cmd+., then Cmd+U. Not viable for CI. Related Open Feedback FB22237318 — SKTestSession instance methods (clearTransactions(), failTransactionsEnabled = true) throw SKInternalErrorDomain Code=3 "Error saving configuration file". Discussion thread: https://developer.apple.com/forums/thread/808030 The iOS 26.5 Release Notes (https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_5-release-notes) under StoreKit Test list this issue as resolved in 26.5: "Fixed: SKTestSession may fail to save its configuration file when invoked outside of an Xcode debug session." However, on the public iOS 26.5 simulator runtime the behavior is unchanged — SKTestSession still hits Code=3 on any mutation, and xcodebuild test from CLI still does not sync the .storekit configuration. The 26.5 fix either did not actually ship, or this report describes a distinct but related issue that the fix did not cover. Impact Any CI/CD pipeline running UI tests for apps with StoreKit subscriptions is broken when targeting an iOS 26.5 simulator. Workarounds are either: Pin CI simulator runtime to iOS 26.1. Manually run the project in Xcode IDE before each test run (impossible headless). Has anyone found a CLI-friendly workaround? Or is there an undocumented xcodebuild flag / simctl command that can trigger the same DVTDevice sync from outside the IDE?
1
0
58
1d
When user goes to Settings>Their name>Subscriptions and wanna cancel the app, a "Don't go" widget is shown - is this a win back offer or a promotional offer?
When i went on to try to cancel some app's subscription, I saw this. I wanna implement the same thing for my app, but there is literally zero information online or in any docs whether this is a win-back offer, a promotional offer, or something else. And if it is a win-back offer, how to test it?
1
0
31
2d
SKPaymentQueue.restoreCompletedTransactions returns 0 transactions for auto-renewable subscriptions on iOS 26.4
Is anybody else seeing this? Since iOS 26.4, calling SKPaymentQueue.restoreCompletedTransactions() no longer returns any transactions for active auto-renewable subscriptions. The success callback is invoked correctly, but the transactions array is empty. The same device and the same Apple ID return the expected transactions on iOS 26.3.1 and earlier. Environment Affected: iOS 26.4.x (confirmed on 26.4.2) Working: iOS 26.3.1 and earlier Product type: Auto-renewable subscriptions Deployment target: iOS 14.0 Steps to reproduce Have an active auto-renewable subscription on an Apple ID (sandbox or production) Run on a device with iOS 26.4 or later Call SKPaymentQueue.default().restoreCompletedTransactions() (or the equivalent via a wrapper such as RMStore) Observe the paymentQueueRestoreCompletedTransactionsFinished delegate callback Expected behaviour The delegate receives the restored transactions via paymentQueue(_:updatedTransactions:) before paymentQueueRestoreCompletedTransactionsFinished is called, as documented. Actual behaviour paymentQueueRestoreCompletedTransactionsFinished is called immediately with no prior transaction updates. The transactions array is empty.
0
0
79
4d
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.
0
0
124
6d
First auto-renewable subscription stuck in “Waiting for Review”, missing “In-App Purchases and Subscriptions” section, and TestFlight shows “The offer is not available yet
Hello, I am trying to ship the first auto-renewable subscription for my iOS app and I am facing what seems to be a workflow / availability issue involving App Store Connect and TestFlight. Product ID: seka_premium_yearly_ Current situation: The subscription exists in App Store Connect. Its status remains “Waiting for Review”. The subscription page says that the first subscription must be submitted with a new app version and attached through the “In-App Purchases and Subscriptions” section on the app version page. 4. However, this section does not appear on my iOS app version page in App Store Connect. 5. In TestFlight, when tapping “Subscribe”, the app shows: “The offer is not available yet. Please try again in a moment.” Additional context: Paid Apps Agreement is active The app uses expo-iap The product ID configured in the app is seka_premium_yearly_ We are not restricting access by storefront, region, or device configuration Sandbox testing has been attempted, but the issue remains reproducible in TestFlight Question: Is it expected that the subscription is unavailable in TestFlight while the first subscription is still in “Waiting for Review”? Does the missing “In-App Purchases and Subscriptions” section on the app version page indicate an App Store Connect issue? Has anyone encountered this specific first-subscription workflow problem? Any guidance would be appreciated.
2
0
376
1w
Wrong value for storekit custom purchase link allowed regions entitlement
Greetings fellow devs, After accepting the Alternative Terms Addendum for Apps in the EU and adding the Storekit External Purchases or Offers capability via App Store Connect in our app identifier, the entitlement showing up in xcode is com.apple.developer.storekit.custom-purchase-link.allowed-regions and has the value 'jp'. How can we change the value for that entitlement to 'gr'? We tried changing it in xcode, but we get the error <Provisioning profile "iOS Team Provisioning Profile: [app identifier]" doesn't match the entitlements file's value for the com.apple.developer.storekit.custom-purchase-link.allowed-regions entitlement.>. In Certificates, Identifiers and Profiles in the developer account there is no way to configure that capability. We sent a request to support and they only gave a link to documentation and to the forum here. We have a completed every business agreement requested and we have chosen Greece as the organisation region and the app's availability region wherever possible. We haven't found anywhere that Japan would be chosen to explain the entitlement given. So where can this entitlement about allowed regions be configured? Xcode version is 16.4 and iOS minimum deployments is 18
2
0
217
1w
How can I differentiate 12-month commitment subscriptions from standard yearly subscriptions in App Store Connect analytics?
Unable to filter 12-month commitment vs regular yearly subscriptions in Sales and Trends reports How to track different types of yearly subscription users in App Store Connect analytics? App Store Connect: Cannot separate subscription offer types under the same yearly plan How to identify 12-month commitment subscribers separately from normal yearly subscribers in analytics?
0
0
103
1w
Store Kit 2 iOS system purchase confirmation dialog not consistent.
I'm running into an issue where it appears the product transaction is being cached and not showing a new iOS system popup dialog to confirm the purchase. This is affecting testing, and I need a solution to have iOS issue a new purchase transaction every time. Here's what happens, I call the following which always succeeds. try await product.purchase(options: [.appAccountToken(appToken)]) I'm signed into a developer sandbox account with a resubscribe every 5 minutes. After cancelling a subscription, I attempt to resubscribe using the same code as above. Frequently, the code executes without iOS showing the popup system dialog to confirm the purchaser. After waiting a period of time, iOS then resets itself and allows me to purchase again. What I want is an option the forces the iOS system confirm purchase dialog to show up every time the code executes. How do I fix this? iOs 26.4.1, iPhone 17 Pro.
2
0
191
1w
StoreKit2 does not provide an update when subscription was cancelled
I am testing a situation when user cancels auto renewable subscription (via StoreKit->Manage Transactions window). The problem is StoreKit2 does not provide an update when subscription was cancelled. I started using demo from apple developer.apple.com/documentation/storekit/in-app_purchase/implementing_a_store_in_your_app_using_the_storekit_api to test this behaviour in order to get rid of possible mistakes in my implementation, but result is the same - when user cancels subscription app does not receive any storekit events (change in renewal info, update in current entitlements, transaction status - nothing) and only after app's relaunch it fetches everything from scratch and finally updates UI. I tried to wait for up to 20 minutes to check whether this update in transaction (subscription) status will be delivered to the app - still nothing. So the problem, as I see it, is that if user cancels subscription and then does not relaunch the app he can continue to use the app for free for a long time. In this regard I have several questions: is it expected behavior of StoreKit2? If yes - why? Does it happen in Test Flight mode or in production env as well? If it's not expected behavior then is it correct to fix it with checking (lets say once in an hour) user's current entitlements (I tried and it seems to work ok) or there are better solutions?
2
3
680
1w
First subscription stuck in "Developer Action Needed", no IAP section on version page, reviewer hits "product is not available for purchase" — works fine on my own TestFlight install
I'm preparing my first App Store submission and have hit a chain of issues that appear to be backend state problems I can't resolve from the App Store Connect UI. I've already opened a DTS case but wanted to ask here in case anyone has seen this combination before. Setup: iOS app with first-time subscriptions (auto-renewable, 7-day free trial) Two products: bitcoinhq_pro_monthly and bitcoinhq_pro_annual Both in the same subscription group "Bitcoin HQ Pro" Paid Apps Agreement is Active Bundle ID, prices (all 175 territories including United States), intro offers ("Free for the first week" in all territories), localizations all configured Important context: On my own iPad (TestFlight build, signed into my normal sandbox account), the full flow works perfectly — paywall loads on first launch after install, both products show with correct prices, tapping Subscribe opens the StoreKit sheet, purchase completes, the entitlement grants, and Pro features unlock. So the app code and RevenueCat configuration are working. The issues below appear to be App Store Connect backend state problems. The issues, in the order I hit them: bitcoinhq_pro_monthly is stuck in "Developer Action Needed." I cannot identify which field is flagged — all required sections (price, availability, localization, screenshot, review notes, tax category) appear complete. Cannot save edits to the English (U.S.) localization for the monthly subscription. The localization editor returns: "There was an error with editing your App Store localization. Try again later." This has persisted across multiple browsers (Safari, Chrome, incognito), sign-out/sign-in cycles, multiple days, with Apple System Status reporting all services green, and with the description retyped manually rather than pasted. Cannot submit the monthly subscription standalone. Clicking "Submit for Review" returns: "Your subscription cannot be submitted for review. Your first subscription must be submitted with a new app version." The annual subscription is in "Waiting for Review" — saved successfully when first created. The "In-App Purchases and Subscriptions" section is missing from my App Version 1.0 page. Per ASC's own messaging, this is where I'm supposed to attach my first subscriptions before submitting the version. The section is not present anywhere on the version page. Reviewer rejection with "The product is not available for purchase." App Review Guideline 2.1(b). Tapping Subscribe in the reviewer's environment results in this StoreKit error on iPad Air 11" M3 / iPadOS 26.4.2 — but the same build on my own devices completes the purchase without issue. My read: issues 1–4 appear to be a single backend state problem with the monthly product or subscription group. Issue 5 appears to be downstream — sandbox returns the products for fetch but refuses the purchase from the reviewer's clean environment because the product isn't in a properly submittable state. Has anyone seen this combination? Any way to surface the "In-App Purchases and Subscriptions" section, or work around the localization save error? Or is the only path through DTS? Thanks in advance.
0
0
88
1w
"Unable to Manage Sandbox Test Account - Popup Closes on 'Manage' Click"
Issue: Sandbox test account stuck in a loop when trying to access account management Environment: iOS version: [iOS 26.4.2] Device: iPhone 12 Steps to Reproduce: Created sandbox test credentials on Apple Developer site (App Store Connect → Users and Access → Sandbox → Testers) On iPhone, navigated to Settings → Developer → Sandbox Apple Account Clicked "Sign In" and entered sandbox test email and password Successfully verified using verification codes (both email and phone number) Clicked on the signed-in sandbox account A popup appears with "Manage" option Clicked "Manage" Expected Behavior:- Should open sandbox account management interface Actual Behavior:- Popup immediately closes and the same popup reappears. Clicking "Manage" again produces the same result - an endless loop preventing access to account management. Has anyone encountered this issue with sandbox test accounts? Is there a known workaround or fix for this behavior?
1
1
100
1w
Can I use Product.products(for:) for display-only on EU storefronts with External Purchase?
I'm implementing EU external purchase using ExternalPurchaseCustomLink. No IAP transactions are offered on EU storefronts — payment happens entirely on our external website. I want to call Product.products(for:) on EU storefronts solely to fetch localized product metadata (displayName, displayPrice, currency formatting) for display. Product.purchase() will never be called. Is it acceptable to use Product.products(for:) for read-only product info display on EU storefronts where only external purchase is offered?
2
0
175
1w
StoreKit 2: Transaction.all and Transaction.currentEntitlements return empty for valid non-consumable purchases in production
FB: https://feedbackassistant.apple.com/feedback/22556883 We're seeing a small number of production users where both Transaction.currentEntitlements and Transaction.all return zero transactions for a valid, active, non-refunded non-consumable IAP. This makes it impossible to restore the purchase via any StoreKit 2 API. Environment: Xcode 26.4 (Build 17E192) iOS 26.4.1 Direct call to SK2 Transactions.all & Flutter in_app_purchase package v3.2.3 (uses SK2 on iOS 15+) Non-consumable IAP (one-time purchase) What we observe: AppStore.sync() triggers but the purchase stream returns 0 transactions Transaction.all returns empty Transaction.currentEntitlements also returns empty User is confirmed on the correct Apple ID Issue reproduces on both iPhone and Mac for the same Apple ID Issue appears to have started recently for users who previously had no problems Debug log from affected production user: [2026-04-20T08:50:10.744115Z] init: iapAvailable=true [2026-04-20T08:50:10.744566Z] init: isPremium=false [2026-04-20T08:50:10.744567Z] init: triggering silent restorePurchases [2026-04-20T08:50:45.974566Z] restore: started [2026-04-20T08:50:45.986848Z] restore: sk2Transactions count=0 [2026-04-20T08:50:45.993004Z] restore: sk2Direct isVerified=false active=null [2026-04-20T08:50:45.993011Z] restore: sk2Direct inconclusive — falling back to standard restore [2026-04-20T08:51:16.000851Z] restore: timed out after 30s — fallback isPremium=false [2026-04-20T08:51:16.000910Z] restore: completed — succeeded=false foundPurchase=false Unable to reproduce in sandbox — Transaction.all works correctly there. Appears specific to production for a small subset of users. Has anyone else seen this?
19
3
1.2k
1w
error occured when to use apple in app purchase
Hi, I got the error( IAPError(code: storekit_no_response, source: app_store, message: StoreKit: Failed to get response from platform., details: null) ) when run the code ( final InAppPurchase _iap = InAppPurchase.instance; Set kids = {‘some_available_product_id’} _iap.queryProductDetails(_kIds); ) from flutter I don’t know why this happened, can you let me know this?
0
0
82
1w
StoreKit testing not working on iOS26.5 simulator
Hi, I'm trying to run our StoreKit unit tests with Xcode26.5 on an iOS26.5 simulator. Host computer has macOS26.5. All tests are failing and in the console I see logs such as [SKTestSession] Error saving configuration file: Error Domain=SKInternalErrorDomain Code=3 "(null)" [SKTestSession] Error deleting all transactions: Error Domain=SKInternalErrorDomain Code=3 "(null)" [SKTestSession] Error clearing overrides: Error Domain=SKInternalErrorDomain Code=3 "(null)" [SKTestSession] Error setting value to 1 for identifier 2 for jp.unext.mediaplayer: Error Domain=SKInternalErrorDomain Code=3 "(null)" And the simulator asks me to provide my AppleID. Tests have been broken since at least 26.4 The release notes claims that it has been fixed but not for me. https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_5-release-notes#StoreKit-Testing-in-Xcode Does anyone else have the same issue? Reported FB22774836 just in case.
Replies
6
Boosts
8
Views
444
Activity
3h
Can't fetch products from App Store connect
I had everything working with Revenue Cat. Then my app got rejected for not loading subscriptions, which was odd because a previous built was rejected for wording on that same paywall. I checked, and realised I suddenly can't fetch products in testFlight either. I can only see products in Xcode using the store kit configuration file. I've found many issues like this online and everybody point to the same solutions (that seem to work for most), but here's what I tried so far: Checked that all my agreements in App Store Connect are active Checked that ids match between Xcode / revenue cat / App Store connect Store kit config file is syncing with App Store Connect correctly I removed revenue cat and used the store kit api directly to fetch products. The array of products is empty in all environments that don't have access to store kit config file. Checked status of all subscriptions (all waiting for review -- as they were when the paywall worked) Nothing seems to work... Any suggestions? Many thanks
Replies
5
Boosts
2
Views
1k
Activity
3h
original_transaction_id associated to web_order_line_item_id of auto-renewable subscription changed
Our app offers auto-renewable subscriptions using StoreKit Original API for In-App Purchase and App Store Server Notifications V1. Starting around 2025-03-15, we found some cases where original_transaction_id which was associated to web_order_line_item_id of already purchased subscription had changed in the receipt information of verifyReceipt response or App Store Server Notifications V1. The detailed steps are: Around February 2025, re-purchase from the app the same subscription product which was canceled and expired some time ago, using StoreKit Original API for In-App Purchase Receive the following 2 notifications from App Store Server Notifications V1 almost at the same time INITIAL_BUY DID_CHANGE_RENEWAL_STATUS In both notifications, latest_receipt_info contains the receipt for the re-purchased subscription period with new original_transaction_id and web_order_line_item_id pending_renewal_info contains both new original_transaction_id and original one which was generated at first purchase, and original one has "is_in_billing_retry_period": "1" Starting around 2025-03-15, the following happens When we receive another "DID_CHANGE_RENEWAL_STATUS" notification from App Store Server Notifications V1, original_transaction_id which is associated to web_order_line_item_id of the re-purchased subscription period has changed back to the original one (the one which was generated at first purchase) in latest_receipt_info. When we call verifyReceipt with the receipt obtained from appStoreReceiptURL, the response does not seem to contain new original_transaction_id which was generated at re-purchase We have some questions regarding this original_transaction_id behavior. When a user re-purchase the same subscription product which was canceled and expired some time ago, it seems that new original_transaction_id is generated. Is this an expected behavior? If yes, it seems that, at some point, original_transaction_id which is associated to web_order_line_item_id of the re-purchased subscription changed back to the original original_transaction_id which had been generated at first purchase. Is this an expected behavior? What triggers the original_transaction_id change to the original one? Is it related to some user actions or subscription status change?
Replies
4
Boosts
0
Views
475
Activity
15h
watchOS-Only App First Submission — IAP Rejected Multiple Times, Works in TestFlight Sandbox but Not in Review
Hi everyone, I'm submitting my watchOS-only app and its In-App Purchase for the very first time (both app and IAP submitted simultaneously). After multiple rejections, I still can't resolve the issue and would appreciate any guidance. Environment: App type: watchOS-only (no iOS companion app) First submission of both the app and IAP IAP type: Non-Consumable, Product Apple ID: 6770497337 The problem: The reviewer (App Review) states that the IAP product information cannot be retrieved in the review environment. According to the reviewer, they are testing in the production environment, not the sandbox. However: In my TestFlight build, the app correctly retrieves the IAP product I have successfully completed the full purchase flow using a sandbox account All business agreements (including Paid Apps Agreement) are accepted and active in The Bundle ID and Product ID are correctly configured in both Xcode and App Store Connect Current IAP status in App Store Connect: Overall status: "Developer Action Needed" All localizations (English US/UK/AU/CA, Japanese, Simplified Chinese, Traditional Chinese): "Rejected" No specific rejection reason is shown anywhere in App Store Connect Any help would be greatly appreciated. Thank you! 🙏
Replies
1
Boosts
0
Views
40
Activity
19h
"In-App Purchases and Subscriptions" section missing from version page — cannot submit subscriptions with binary
I have an iOS app with two auto-renewable subscriptions (monthly and annual) that are fully configured and ready for their first submission. Both products have complete metadata, pricing, localizations, review screenshots, and review notes. The problem: The "In-App Purchases and Subscriptions" section does not appear on the version preparation page. It should appear between "App Review Information" and "App Store Version Release," but it's missing entirely. This means I cannot link the subscriptions to my app version for a combined submission. How I got here: I initially submitted the subscriptions for review independently (via the "Submit for Review" button on the subscription product page), not realizing they needed to be submitted alongside a binary. This resulted in a Guideline 3.1.1 rejection. I then created a new app version with a build, but the "In-App Purchases and Subscriptions" section did not appear on the version page. Not realizing this section should exist, I submitted the app — it was approved and published without the subscriptions. I have since created another new version with a fresh build. The app version, monthly subscription, and yearly subscription are all in "Ready to Submit" state. The section still does not appear. What I've verified: All subscription metadata is complete (pricing, localizations, review screenshots, review notes) Subscription group has a localization A new app version is in "Prepare for Submission" with a build uploaded All business/agreements/tax/banking setup is complete The app has no consumable or non-consumable IAPs — only auto-renewable subscriptions All subscription testing appears to work I've reviewed other forum threads with the same issue (e.g., https://developer.apple.com/forums/thread/778258) and followed all suggestions Environment: App uses StoreKit 2 via Flutter in_app_purchase plugin Two products: monthly and annual auto-renewable subscriptions First-time IAP submission for this app App is currently live on the App Store I opened a Developer Support ticket 7 days ago and have not yet received a resolution. Has anyone encountered this issue and found a workaround? Is there a way to reset the subscription review state so they can be properly linked to a version?
Replies
0
Boosts
0
Views
91
Activity
20h
First auto-renewable subscriptions stuck In Review for more than a week after app approval
Hello, I’m looking for guidance on a first auto-renewable subscription review issue that appears to be stuck. Our app “Skinora: AI Skincare Routine” has already been approved and is live on the App Store, but both of our first auto-renewable subscriptions are still stuck in “In Review”. App version: 1.0.1 Build: 6 Subscriptions: Skinora Pro Annual — product ID: skinora_pro_annual Skinora Pro Weekly — product ID: skinora_pro_weekly_Access Current App Store Connect state: App version 1.0.1 is approved/live Subscription group localization is Approved Both subscription products still show In Review There are no visible Resolution Center messages or Notes from App Review requiring action from us Background: The subscriptions were originally returned because the first subscriptions needed to be submitted with a new app version/binary. We then submitted them together with app version 1.0.1 build 6. The app was approved, but the subscriptions have remained In Review for several working days. (8 days) This is blocking our launch because the live app depends on these subscriptions for Pro access, and users cannot purchase/unlock Pro until Apple approves the products. I have already contacted Apple Developer Support multiple times and also called support. The support representative said they would escalate it internally, but the status has not changed yet. Is this a known App Store Connect issue with first auto-renewable subscriptions? Is there any way to confirm whether the subscriptions are actually being reviewed or stuck in an inconsistent state? Should I continue waiting, or is there a specific action needed to reset or move the subscription review forward? Any guidance would be appreciated.
Replies
1
Boosts
0
Views
31
Activity
23h
xcodebuild test (CLI) does not sync .storekit to storekitd on iOS 26.5 — SKTestSession unusable in CI
On iOS 26.5 simulator runtime, running UI tests via xcodebuild test from the command line does not push the scheme's StoreKitConfigurationFileReference to the destination simulator's storekitd AppGroup Octane container. As a consequence, SKTestSession(configurationFileNamed:) either silently falls through to the production App Store (surfacing a "Sign in to Apple Account" SpringBoard alert during paywall tests), or throws SKInternalErrorDomain Code=3 "Error saving configuration file" if you call any SKTestSession instance method. The same project, same scheme, same .storekit file works correctly when launched via Xcode IDE (Cmd+R / Cmd+U) — which uses DVTDevice.handleStoreKitConfigurationSyncForBundleID:configurationFilePath: via an internal IDELaunchSession XPC path that the public xcodebuild CLI does not invoke. This regression makes StoreKit Test unusable in CI for any project using xcodebuild test or xcodebuild test-without-building against an iOS 26.5 simulator. Environment macOS: 26.x Xcode: 26.4.1 (25E253) iOS Simulator runtime affected: 26.5 iOS Simulator runtime that does not exhibit the bug: 26.1 Test target: XCTest UI tests Test plan: *.xctestplan with "storeKitConfiguration": "MyApp.storekit" in defaultOptions Affected scheme actions: Test (CLI) Not affected: Run, Test (Xcode IDE) Steps to Reproduce Create a SwiftUI iOS app com.example.MyApp. Add a MyApp.storekit with one auto-renewable subscription. Add a UI test target. In the xctestplan: defaultOptions.storeKitConfiguration = "MyApp.storekit". In the UI test base case: private var storeKitSession: SKTestSession? override func setUpWithError() throws { storeKitSession = try SKTestSession(configurationFileNamed: "MyApp") app.launch() } Boot a fresh iOS 26.5 simulator. Run via CLI: xcodebuild test \ -project MyApp.xcodeproj \ -scheme MyApp \ -testPlan MyAppUITests \ -destination "platform=iOS Simulator,name=iPhone 17 Pro" In the test, trigger paywall and call Product.purchase(). Expected Product.purchase() presents the StoreKit Test sheet labeled "[Environment] Xcode". Same behavior as Xcode IDE Cmd+U. Actual Production App Store flow triggers. SpringBoard alert "Sign in to Apple Account" appears. Tests waiting on the "Xcode"-labeled sheet fail with Element does not exist. Evidence The simulator's ~/Library/Developer/CoreSimulator/Devices/<UDID>/data/Containers/Shared/AppGroup/<storekit-AGID>/Documents/Persistence/Octane/com.example.MyApp/Configuration.storekit: Present (≈100 KB) when launched via Xcode IDE. Missing when launched via xcodebuild test CLI on the same simulator UDID. Workarounds Attempted (all fail on iOS 26.5) No-op XCTestCase "warmup" that calls XCUIApplication.launch() + sleep — does not trigger the sync because XCUIApplication.launch() routes through XCTRunner, not IDELaunchSession. Multi-destination xcodebuild test with -parallelize-tests-among-destinations. Manually cp-ing the .storekit file into the AppGroup Octane container — storekitd only loads via the XPC channel. launchctl kickstart -k system/com.apple.storekitd — wipes in-memory state, does not pick up disk file. Only working workaround: open project in Xcode IDE, Cmd+R, wait ~20–30 sec, Cmd+., then Cmd+U. Not viable for CI. Related Open Feedback FB22237318 — SKTestSession instance methods (clearTransactions(), failTransactionsEnabled = true) throw SKInternalErrorDomain Code=3 "Error saving configuration file". Discussion thread: https://developer.apple.com/forums/thread/808030 The iOS 26.5 Release Notes (https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-26_5-release-notes) under StoreKit Test list this issue as resolved in 26.5: "Fixed: SKTestSession may fail to save its configuration file when invoked outside of an Xcode debug session." However, on the public iOS 26.5 simulator runtime the behavior is unchanged — SKTestSession still hits Code=3 on any mutation, and xcodebuild test from CLI still does not sync the .storekit configuration. The 26.5 fix either did not actually ship, or this report describes a distinct but related issue that the fix did not cover. Impact Any CI/CD pipeline running UI tests for apps with StoreKit subscriptions is broken when targeting an iOS 26.5 simulator. Workarounds are either: Pin CI simulator runtime to iOS 26.1. Manually run the project in Xcode IDE before each test run (impossible headless). Has anyone found a CLI-friendly workaround? Or is there an undocumented xcodebuild flag / simctl command that can trigger the same DVTDevice sync from outside the IDE?
Replies
1
Boosts
0
Views
58
Activity
1d
When user goes to Settings>Their name>Subscriptions and wanna cancel the app, a "Don't go" widget is shown - is this a win back offer or a promotional offer?
When i went on to try to cancel some app's subscription, I saw this. I wanna implement the same thing for my app, but there is literally zero information online or in any docs whether this is a win-back offer, a promotional offer, or something else. And if it is a win-back offer, how to test it?
Replies
1
Boosts
0
Views
31
Activity
2d
SKPaymentQueue.restoreCompletedTransactions returns 0 transactions for auto-renewable subscriptions on iOS 26.4
Is anybody else seeing this? Since iOS 26.4, calling SKPaymentQueue.restoreCompletedTransactions() no longer returns any transactions for active auto-renewable subscriptions. The success callback is invoked correctly, but the transactions array is empty. The same device and the same Apple ID return the expected transactions on iOS 26.3.1 and earlier. Environment Affected: iOS 26.4.x (confirmed on 26.4.2) Working: iOS 26.3.1 and earlier Product type: Auto-renewable subscriptions Deployment target: iOS 14.0 Steps to reproduce Have an active auto-renewable subscription on an Apple ID (sandbox or production) Run on a device with iOS 26.4 or later Call SKPaymentQueue.default().restoreCompletedTransactions() (or the equivalent via a wrapper such as RMStore) Observe the paymentQueueRestoreCompletedTransactionsFinished delegate callback Expected behaviour The delegate receives the restored transactions via paymentQueue(_:updatedTransactions:) before paymentQueueRestoreCompletedTransactionsFinished is called, as documented. Actual behaviour paymentQueueRestoreCompletedTransactionsFinished is called immediately with no prior transaction updates. The transactions array is empty.
Replies
0
Boosts
0
Views
79
Activity
4d
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
0
Boosts
0
Views
124
Activity
6d
First auto-renewable subscription stuck in “Waiting for Review”, missing “In-App Purchases and Subscriptions” section, and TestFlight shows “The offer is not available yet
Hello, I am trying to ship the first auto-renewable subscription for my iOS app and I am facing what seems to be a workflow / availability issue involving App Store Connect and TestFlight. Product ID: seka_premium_yearly_ Current situation: The subscription exists in App Store Connect. Its status remains “Waiting for Review”. The subscription page says that the first subscription must be submitted with a new app version and attached through the “In-App Purchases and Subscriptions” section on the app version page. 4. However, this section does not appear on my iOS app version page in App Store Connect. 5. In TestFlight, when tapping “Subscribe”, the app shows: “The offer is not available yet. Please try again in a moment.” Additional context: Paid Apps Agreement is active The app uses expo-iap The product ID configured in the app is seka_premium_yearly_ We are not restricting access by storefront, region, or device configuration Sandbox testing has been attempted, but the issue remains reproducible in TestFlight Question: Is it expected that the subscription is unavailable in TestFlight while the first subscription is still in “Waiting for Review”? Does the missing “In-App Purchases and Subscriptions” section on the app version page indicate an App Store Connect issue? Has anyone encountered this specific first-subscription workflow problem? Any guidance would be appreciated.
Replies
2
Boosts
0
Views
376
Activity
1w
Wrong value for storekit custom purchase link allowed regions entitlement
Greetings fellow devs, After accepting the Alternative Terms Addendum for Apps in the EU and adding the Storekit External Purchases or Offers capability via App Store Connect in our app identifier, the entitlement showing up in xcode is com.apple.developer.storekit.custom-purchase-link.allowed-regions and has the value 'jp'. How can we change the value for that entitlement to 'gr'? We tried changing it in xcode, but we get the error <Provisioning profile "iOS Team Provisioning Profile: [app identifier]" doesn't match the entitlements file's value for the com.apple.developer.storekit.custom-purchase-link.allowed-regions entitlement.>. In Certificates, Identifiers and Profiles in the developer account there is no way to configure that capability. We sent a request to support and they only gave a link to documentation and to the forum here. We have a completed every business agreement requested and we have chosen Greece as the organisation region and the app's availability region wherever possible. We haven't found anywhere that Japan would be chosen to explain the entitlement given. So where can this entitlement about allowed regions be configured? Xcode version is 16.4 and iOS minimum deployments is 18
Replies
2
Boosts
0
Views
217
Activity
1w
How can I differentiate 12-month commitment subscriptions from standard yearly subscriptions in App Store Connect analytics?
Unable to filter 12-month commitment vs regular yearly subscriptions in Sales and Trends reports How to track different types of yearly subscription users in App Store Connect analytics? App Store Connect: Cannot separate subscription offer types under the same yearly plan How to identify 12-month commitment subscribers separately from normal yearly subscribers in analytics?
Replies
0
Boosts
0
Views
103
Activity
1w
Store Kit 2 iOS system purchase confirmation dialog not consistent.
I'm running into an issue where it appears the product transaction is being cached and not showing a new iOS system popup dialog to confirm the purchase. This is affecting testing, and I need a solution to have iOS issue a new purchase transaction every time. Here's what happens, I call the following which always succeeds. try await product.purchase(options: [.appAccountToken(appToken)]) I'm signed into a developer sandbox account with a resubscribe every 5 minutes. After cancelling a subscription, I attempt to resubscribe using the same code as above. Frequently, the code executes without iOS showing the popup system dialog to confirm the purchaser. After waiting a period of time, iOS then resets itself and allows me to purchase again. What I want is an option the forces the iOS system confirm purchase dialog to show up every time the code executes. How do I fix this? iOs 26.4.1, iPhone 17 Pro.
Replies
2
Boosts
0
Views
191
Activity
1w
StoreKit2 does not provide an update when subscription was cancelled
I am testing a situation when user cancels auto renewable subscription (via StoreKit->Manage Transactions window). The problem is StoreKit2 does not provide an update when subscription was cancelled. I started using demo from apple developer.apple.com/documentation/storekit/in-app_purchase/implementing_a_store_in_your_app_using_the_storekit_api to test this behaviour in order to get rid of possible mistakes in my implementation, but result is the same - when user cancels subscription app does not receive any storekit events (change in renewal info, update in current entitlements, transaction status - nothing) and only after app's relaunch it fetches everything from scratch and finally updates UI. I tried to wait for up to 20 minutes to check whether this update in transaction (subscription) status will be delivered to the app - still nothing. So the problem, as I see it, is that if user cancels subscription and then does not relaunch the app he can continue to use the app for free for a long time. In this regard I have several questions: is it expected behavior of StoreKit2? If yes - why? Does it happen in Test Flight mode or in production env as well? If it's not expected behavior then is it correct to fix it with checking (lets say once in an hour) user's current entitlements (I tried and it seems to work ok) or there are better solutions?
Replies
2
Boosts
3
Views
680
Activity
1w
First subscription stuck in "Developer Action Needed", no IAP section on version page, reviewer hits "product is not available for purchase" — works fine on my own TestFlight install
I'm preparing my first App Store submission and have hit a chain of issues that appear to be backend state problems I can't resolve from the App Store Connect UI. I've already opened a DTS case but wanted to ask here in case anyone has seen this combination before. Setup: iOS app with first-time subscriptions (auto-renewable, 7-day free trial) Two products: bitcoinhq_pro_monthly and bitcoinhq_pro_annual Both in the same subscription group "Bitcoin HQ Pro" Paid Apps Agreement is Active Bundle ID, prices (all 175 territories including United States), intro offers ("Free for the first week" in all territories), localizations all configured Important context: On my own iPad (TestFlight build, signed into my normal sandbox account), the full flow works perfectly — paywall loads on first launch after install, both products show with correct prices, tapping Subscribe opens the StoreKit sheet, purchase completes, the entitlement grants, and Pro features unlock. So the app code and RevenueCat configuration are working. The issues below appear to be App Store Connect backend state problems. The issues, in the order I hit them: bitcoinhq_pro_monthly is stuck in "Developer Action Needed." I cannot identify which field is flagged — all required sections (price, availability, localization, screenshot, review notes, tax category) appear complete. Cannot save edits to the English (U.S.) localization for the monthly subscription. The localization editor returns: "There was an error with editing your App Store localization. Try again later." This has persisted across multiple browsers (Safari, Chrome, incognito), sign-out/sign-in cycles, multiple days, with Apple System Status reporting all services green, and with the description retyped manually rather than pasted. Cannot submit the monthly subscription standalone. Clicking "Submit for Review" returns: "Your subscription cannot be submitted for review. Your first subscription must be submitted with a new app version." The annual subscription is in "Waiting for Review" — saved successfully when first created. The "In-App Purchases and Subscriptions" section is missing from my App Version 1.0 page. Per ASC's own messaging, this is where I'm supposed to attach my first subscriptions before submitting the version. The section is not present anywhere on the version page. Reviewer rejection with "The product is not available for purchase." App Review Guideline 2.1(b). Tapping Subscribe in the reviewer's environment results in this StoreKit error on iPad Air 11" M3 / iPadOS 26.4.2 — but the same build on my own devices completes the purchase without issue. My read: issues 1–4 appear to be a single backend state problem with the monthly product or subscription group. Issue 5 appears to be downstream — sandbox returns the products for fetch but refuses the purchase from the reviewer's clean environment because the product isn't in a properly submittable state. Has anyone seen this combination? Any way to surface the "In-App Purchases and Subscriptions" section, or work around the localization save error? Or is the only path through DTS? Thanks in advance.
Replies
0
Boosts
0
Views
88
Activity
1w
"Unable to Manage Sandbox Test Account - Popup Closes on 'Manage' Click"
Issue: Sandbox test account stuck in a loop when trying to access account management Environment: iOS version: [iOS 26.4.2] Device: iPhone 12 Steps to Reproduce: Created sandbox test credentials on Apple Developer site (App Store Connect → Users and Access → Sandbox → Testers) On iPhone, navigated to Settings → Developer → Sandbox Apple Account Clicked "Sign In" and entered sandbox test email and password Successfully verified using verification codes (both email and phone number) Clicked on the signed-in sandbox account A popup appears with "Manage" option Clicked "Manage" Expected Behavior:- Should open sandbox account management interface Actual Behavior:- Popup immediately closes and the same popup reappears. Clicking "Manage" again produces the same result - an endless loop preventing access to account management. Has anyone encountered this issue with sandbox test accounts? Is there a known workaround or fix for this behavior?
Replies
1
Boosts
1
Views
100
Activity
1w
Can I use Product.products(for:) for display-only on EU storefronts with External Purchase?
I'm implementing EU external purchase using ExternalPurchaseCustomLink. No IAP transactions are offered on EU storefronts — payment happens entirely on our external website. I want to call Product.products(for:) on EU storefronts solely to fetch localized product metadata (displayName, displayPrice, currency formatting) for display. Product.purchase() will never be called. Is it acceptable to use Product.products(for:) for read-only product info display on EU storefronts where only external purchase is offered?
Replies
2
Boosts
0
Views
175
Activity
1w
StoreKit 2: Transaction.all and Transaction.currentEntitlements return empty for valid non-consumable purchases in production
FB: https://feedbackassistant.apple.com/feedback/22556883 We're seeing a small number of production users where both Transaction.currentEntitlements and Transaction.all return zero transactions for a valid, active, non-refunded non-consumable IAP. This makes it impossible to restore the purchase via any StoreKit 2 API. Environment: Xcode 26.4 (Build 17E192) iOS 26.4.1 Direct call to SK2 Transactions.all & Flutter in_app_purchase package v3.2.3 (uses SK2 on iOS 15+) Non-consumable IAP (one-time purchase) What we observe: AppStore.sync() triggers but the purchase stream returns 0 transactions Transaction.all returns empty Transaction.currentEntitlements also returns empty User is confirmed on the correct Apple ID Issue reproduces on both iPhone and Mac for the same Apple ID Issue appears to have started recently for users who previously had no problems Debug log from affected production user: [2026-04-20T08:50:10.744115Z] init: iapAvailable=true [2026-04-20T08:50:10.744566Z] init: isPremium=false [2026-04-20T08:50:10.744567Z] init: triggering silent restorePurchases [2026-04-20T08:50:45.974566Z] restore: started [2026-04-20T08:50:45.986848Z] restore: sk2Transactions count=0 [2026-04-20T08:50:45.993004Z] restore: sk2Direct isVerified=false active=null [2026-04-20T08:50:45.993011Z] restore: sk2Direct inconclusive — falling back to standard restore [2026-04-20T08:51:16.000851Z] restore: timed out after 30s — fallback isPremium=false [2026-04-20T08:51:16.000910Z] restore: completed — succeeded=false foundPurchase=false Unable to reproduce in sandbox — Transaction.all works correctly there. Appears specific to production for a small subset of users. Has anyone else seen this?
Replies
19
Boosts
3
Views
1.2k
Activity
1w
error occured when to use apple in app purchase
Hi, I got the error( IAPError(code: storekit_no_response, source: app_store, message: StoreKit: Failed to get response from platform., details: null) ) when run the code ( final InAppPurchase _iap = InAppPurchase.instance; Set kids = {‘some_available_product_id’} _iap.queryProductDetails(_kIds); ) from flutter I don’t know why this happened, can you let me know this?
Replies
0
Boosts
0
Views
82
Activity
1w