The developer payment page is returning a 503 error, preventing me from making the payment. Why is this happening? I need to complete this payment urgently.
StoreKit
RSS for tagSupport in-app purchases and interactions with the App Store using StoreKit.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
When my app tries to access a subscription, StoreKit's products(for:) always returns zero results. Similarly, SubscriptionStoreView always shows "Subscription Unavailable" followed by "The subscription is unavailable in the current storefront".
The app is a watch-only app (no iPhone companion app).
The app and the subscription product were each approved in App Store Connect over two weeks ago.
The problem occurs when the app is installed from TestFlight, when the app is installed from the App Store (production), and when run in the Xcode debugger. The only time the app successfully accesses the subscription when simulating it in Xcode with a .storekit file.
How should my app access the subscription?
Repro:
App Store bundle ID: com.toolsay.hoopref
Phone app target (unused) bundle ID: com.toolsay.hoopref
Watch app bundle ID: com.toolsay.hoopref.watchapp
Subscription product ID: com.toolsay.hoopref.pro.annual
Subscription availability: All countries and regions
App Store listing
let products = try await Product.products(for: ["com.toolsay.hoopref.pro.annual"])
products.count is 0.
Hello Apple Developer Support,
We are seeing a payment issue affecting users on iOS 26.3 and 26.4.
Many users report that after a successful purchase flow, the purchased content is not delivered in-game.
After investigation, we found that storeController?.ConfirmPurchase(pendingOrder); does not always effectively complete the transaction. As a result, the same receipt is sent to the client again on the next purchase attempt or after app restart. This causes repeated pending transactions and prevents users from purchasing the item again.
Some affected users requested refunds from Apple, but those requests were rejected.
Among 19 reported users:
11 users are on iOS 26.4 (recently upgraded)
The remaining users are on iOS 26.3
We also received similar reports on earlier iOS 26 versions.
Development environment:
Unity
Unity In-App Purchasing (IAP) 4.13.0
Could you please help confirm whether there are known StoreKit / transaction completion issues on iOS 26.3+ and suggest the recommended handling for this case?
Thank you.
Topic:
App & System Services
SubTopic:
StoreKit
在iOS 26.4 beta3版本中,当前支付完成,获取的票据是上次支付的票据,在拉起一笔支付成,获取的又是上次支付的票据
Topic:
App & System Services
SubTopic:
StoreKit
Our game application is developed based on StoreKit 1, and an exception occurs on iOS 26.4: after players complete a payment, the finishTransaction method fails to properly remove the transaction from the SKPaymentQueue; as a result, when players restart the app, the system still triggers the retry process for this transaction (reconciliation of unpaid orders).
Has anyone encountered this issue? If there is a solution, we would appreciate it if you could share it with us.
Topic:
App & System Services
SubTopic:
StoreKit
Hi,
I am submitting auto-renewable subscriptions for the first time for a brand new iOS app (never approved before).
Setup:
App ID has In-App Purchase capability enabled
Subscriptions created under a subscription group
All metadata (pricing, localization, availability) completed
Subscriptions currently show In Review
Testing via TestFlight build
Bundle ID matches App Store Connect
Using react-native-iap (StoreKit under the hood)
When calling:
await getSubscriptions({ skus })
I consistently get:
products fetched: 0
ProductsUnavailableError
Also, the app version page does not show the “In-App Purchases and Subscriptions” section.
Question:
For a brand new app, will StoreKit return empty products while the first subscriptions are in review?
Do the first subscriptions need to be approved and/or attached to a new app version before they become available in TestFlight sandbox?
Thanks for any clarification.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit
In-App Purchase
TestFlight
'Guideline 2.1 - Performance - App Completeness' - "...could not be found in the submitted binary."
I have checked with internal and external testers and my devices and simulators, everyone sees the in app purchases but I just had my submitted rejected for the second time with the comment that these in-app none-consumable purchases cannot be found with the submitted binary.
I even attached a slow step by step screen recording for the review reply after the first rejection showing how to reach the purchasable packs by navigating through only 3 buttons:
"How to access the purchase flow:
Launch the app
Tap the bottom-center Settings button (icon: switch.2)
Tap “Customisation gallery”
Scroll to find any pack listed above
Tap the pack price chip
Tap “Buy pack – [price]” to start the StoreKit purchase flow"
I also attached a clear image along with detailed instruction (same as above) for the Review Information. and the second rejection was received today for the same reason.
I'm being guided to the localization 'Developer Action Needed'. I'm not sure what more can be done? I feel like my review replies aren't even looked at.
Hello Apple team,
We would like to access the user's available purchases from the keyboard extension.
Making purchases directly from the keyboard is a great benefit, but we assume it is intentionally disabled to prevent abuse or fraudulent purchase attempts.
What we care about the most is determining if the user has an item that contains a discount or a free trial to personalize messaging when we suggest the user go to the app and make a purchase.
We hope you'd consider revising your policy around StoreKit usage.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
Extensions
StoreKit
In-App Purchase
Hi - Using storekit2 on ios26.2 and using presentOfferCodeRedeemSheet to allow users to leverage Offer Codes.
The codes work (sandbox and production), however on the confirmation view that shows Redeem Special Offer, while my App Icon is properly displayed up top, the associated product subscription image is missing and I see a grey App Store image/icon instead.
I do successfully see the associated subscription and pricing to the right. My subscription product images are already reviewed/approved and have been live for a number of weeks. I see this in Sandbox and Production (with a live customer sending me the phone screenshot).
PS, my product icons/logos all show up successfully during normal checkout in sandbox/production, this only occurs on Offer Code Redemption views.
Topic:
App & System Services
SubTopic:
StoreKit
We began storing our users' appTransactionID as a quick lookup identifier for purchase history as it is back-dated and consistent between installs and can be signed by Apple.
We've read through both the Storekit documentation and the app transfer documentation, but wanted to verify that a users appTransactionID remains consistent after an app has been transferred from one Apple developer account to another (assuming they have the proper shared secret info)? Basically, would the new developer team be seeing the same appTransactionID our current team sees for an existing user post-transfer?
Topic:
App & System Services
SubTopic:
StoreKit
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
Hey y'all,
I'm reaching out because of an observed issue that I am experience both in sandbox and in production environments. This issue does not occur when using the Local StoreKit configurations.
For context, my app only implements auto-renewing subscriptions. I'm trying to track with my own analytics every time a successful purchase is made, whether in the app or externally through Subscription Settings. I'm seeming too many events for just one purchase.
My app is observing Transaction.updates. When I make a purchase with Product.purchase(_:), I successfully handle the purchase result. After about 10-20 seconds, I receive 2-3 new transactions in my Transaction.updates, even though I already handled and finished the Purchase result. This happens on production, where renewals are one week. This also happens in Sandbox, where at minimum renewals are every 3 minutes.
The transactions do not differ in transactionId, revocationDate, expirationDate, nor isUpgraded... so not sure why they're coming in through Transaction.updates if there are no "updates" to be processing.
For purchases made outside the app, I get the same issue. Transaction gets handled in updates several times.
Note that this is not an issue if a subscription renews. I use `Transaction.reason
I want to assume that StoreKit is a perfect API and can do no wrong (I know, a poor assumption but hear me out)... so where am I going wrong?
My current thought is a Swift concurrency issue. This is a contrived example:
// Assume Task is on MainActor
Task(priority: .background) { @MainActor in
for await result in Transaction.updates in {
// We suspend current process,
// so will we go to next item in the `for-await-in` loop?
// Because we didn't finish the first transaction, will we see it again in the updates queue?
await self.handle(result)
}
}
@MainActor
func handle(result) async {
...
await Analytics.sendEvent("purchase_success")
transaction.finish()
}
Hey y'all,
I'm reaching out because of an observed issue that I am experience both in sandbox and in production environments. This issue does not occur when using the Local StoreKit configurations.
For context, my app only implements auto-renewing subscriptions. I'm trying to track with my own analytics every time a successful purchase is made, whether in the app or externally through Subscription Settings. I'm seeming too many events for just one purchase.
My app is observing Transaction.updates. When I make a purchase with Product.purchase(_:), I successfully handle the purchase result. After a few seconds, I receive 2-3 new transactions in my Transaction.updates, even though I already handled and finished the Purchase result.
The transactions seem to have the same transactionId, and values such as revocationDate, expirationDate, and isUpgraded don't seem to change between any of them.
For purchases made outside the app, I get the same issue. Transaction gets handled in updates several times.
Note that this is not an issue if a subscription renews. I use `Transaction.reason
Environment
OS: iOS 26.2 ~ 26.3
SDK: Xcode 16.4 (Target: iOS 17.6)
Framework: StoreKit 2
Environment: Production (Cannot reproduce in Sandbox or Xcode Configuration)
Issue Description
We are encountering a critical purchase failure that occurs exclusively in the Production environment.
When a user who has a "Pending Downgrade" (scheduled for the next renewal date) attempts to re-purchase their current higher-tier product to cancel the downgrade, StoreKit 2 returns an error.
Steps to Reproduce
User is currently on "Product A" (Higher Tier).
User schedules a downgrade to "Product B" (Lower Tier). The status changes to "Pending Downgrade".
User attempts to purchase "Product A" again via Product.purchase().
The system purchase sheet appears, and the user confirms the purchase.
Immediately after authentication, a system alert from StoreKit appears saying: "Cannot process request at this time. Please try again later." (現在リクエストを一時的に処理できません。しばらくしてからもう一度お試しください。)
After dismissing the alert, the app receives StoreKitError code 2 (unknown) with the localized message: "Request could not be completed" (リクエストを完了できません).
Technical Observations
Transaction.currentEntitlements: Does not change.
App Store Server Notifications (V2): No notifications are sent to our server.
Sandbox Behavior: Works perfectly. Re-purchasing Product A successfully cancels the downgrade and the subscription remains at the Higher Tier.
AppStore.sync(): Running a manual sync does not resolve the pending state after the error.
Question
Since we cannot debug production-level logs, we are stuck. Is this a known regression in the StoreKit 2 commerce engine regarding state synchronization for downgrades? Has anyone found a workaround for this specific scenario?
Any insights would be greatly appreciated.
I am developing a mobile application using Flutter and plan to implement in-app subscriptions for both iOS platforms. I would like to request guidance on the following:
Technical Implementation:
Recommended best practices for implementing auto-renewable subscriptions in Flutter apps
StoreKit 2 integration requirements and compatibility considerations
Server-to-server notification setup and endpoint requirements
Testing Procedures:
Sandbox environment configuration and testing workflow
TestFlight testing requirements for subscription features
Recommended testing scenarios before production release
Required Documentation and Accounts:
Complete list of required agreements (Paid Applications Agreement, etc.)
Banking and tax information requirements
Privacy policy and terms of service specifications for subscription apps
App Review guidelines specific to subscription-based apps
Subscription Management:
Grace period implementation requirements
Handling subscription cancellations and refunds
Promotional offers and introductory pricing setup
Could you please provide documentation or direct me to the appropriate resources? Additionally, if there are any specific requirements for Flutter-based applications, I would appreciate that information.
Application Details:
Platform: iOS (Flutter framework)
Subscription Type: Auto-renewable subscriptions
Hello,
My app was rejected on iPad (iPad Air 11-inch M3, iPadOS 26.2.1) with two related issues:
Guideline 2.1 – Performance – App Completeness
“The app exhibited one or more bugs that would negatively impact users.
Bug description: the premium subscription cannot be loaded properly.”
Guideline 3.1.2 – Business – Payments – Subscriptions
“The submission did not include all the required information for apps offering auto-renewable subscriptions.”
I am using StoreKit 2 with SubscriptionStoreView to present the auto-renewable subscription.
During development:
Subscriptions load correctly in the simulator (sandbox).
On real devices, I test without a local StoreKit configuration file to fetch products from App Store Connect.
The subscription UI (title, duration, price) displays correctly when products are returned.
At the time of review, the Paid Apps Agreement was not active.
I suspect this may have caused the subscription products to fail loading on the review device.
Since then:
Paid Apps Agreement is now Active. SubscriptionStoreView should automatically show required metadata.
Because the subscription failed to load on iPad during review, the required information (title, price, duration) was not visible, which likely triggered the 3.1.2 rejection.
Additionally, in TestFlight I sometimes see inconsistent behavior where the app appears but cannot be installed (“App Not Available”).
Also, my app was rejected, but the subscription is still waiting for review.
I would really appreciate guidance on the following:
Am I potentially missing any required configuration that could prevent products from loading in production?
Is there any propagation delay after activating the Paid Apps Agreement that could affect product availability?
If I am overlooking something in configuration or testing, please let me know what I should specifically verify before resubmitting.
Thank you very much for your help.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit
In-App Purchase
TestFlight
Can anyone advise on this? We distributed promotional trial codes for our app Ask Dolly. These 1-month free trials are set to renew and charge users in March 2026.
A segment of users redeemed the promo codes but never created accounts or opened the app. We don't have their contact information to notify them. Our CEO has directed us to prevent these inactive subscriptions from renewing to avoid charging users who never engaged with the service.
We've downloaded the Subscription and Offer Code Redemption reports from App Store Connect, but cannot map Apple's Subscriber IDs to our user database (we only store Transaction IDs). This prevents us from identifying which specific subscriptions to cancel.
What We Need: Assistance preventing renewals for promotional subscriptions where users have had zero app sessions/opens as of the end of February.
These trials will start to renew on March 3, 2026. We need to resolve this before then to avoid charging inactive users.
Can you help us either:
Cancel subscriptions associated with promo codes that show zero app engagement, or
Provide guidance on how to programmatically identify and cancel these subscriptions?
Topic:
App & System Services
SubTopic:
StoreKit
Hi Everyone, Need help 🙌
Could someone help how to test pending purchases in Sandbox accounts ? Can test ask to buy flow ? if yes how, could not find any information about that.
Background:
My app uses a third-party SDK for payments, and it uses Original StoreKit internally for IAP payments. Now I'm getting ready to migrate to StoreKit2, and during the transition, users may use either method to initiate payments, and there's no way to avoid the coexistence of StoreKit2 and Original StoreKit.
Problem:
When a user has an unfinished transaction, if the app is restarted, both StoreKit2 and Original StoreKit will receive a notification of the transaction:
Original StoreKit's '-paymentQueue:updatedTransactions:' method
StoreKit2's 'Transaction.updated' method
resulting in duplicate calls to the shipping API.
My current treatment is to only add '-paymentQueue:updatedTransactions:' to listen for unfinished transactions. Even if the user is using StoreKit2 to initiate the payment, if the transaction is not Finished, it will be fetched via this method after restarting the app to process this transaction.
Is this approach feasible and are there any best practices for this scenario?
To summarize:
Is it feasible to fetch unfinished StoreKit2 transactions via Original StoreKit methods when StoreKit2 coexists with Original StoreKit? Is there a recommended way
I’d like to confirm the expected behavior of StoreKit 2 in the Sandbox environment regarding unfinished consumable transactions across devices.
Scenario:
Device A and Device B are signed in with the same Sandbox Apple ID
A consumable in-app purchase is completed on Device A
The transaction may be verified or unverified, but transaction.finish() is not called
The app is then launched on Device B and listens for Transaction.updates
Question:
In this scenario, is it expected that Device B will or will not receive a callback for this unfinished consumable transaction?
Or is it by design that unfinished consumable transactions are not guaranteed to be delivered across devices, regardless of verification state?
Topic:
App & System Services
SubTopic:
StoreKit