In-App Purchase

RSS for tag

Offer extra content, digital goods, and features directly within your app using in-app purchases.

Posts under In-App Purchase tag

200 Posts

Post

Replies

Boosts

Views

Activity

[StoreKit 2] finish() does not durably remove an active subscription transaction on iOS 26 - same transactionId reappears in Transaction.unfinished
On iOS 26 in Production (StoreKit 2), a transaction we have already finished keeps reappearing in Transaction.unfinished on later launches. We call await Transaction.finish() and confirm in the same session (by re-reading Transaction.unfinished) that it is removed - but on a later cold launch the SAME transactionId is yielded again. This makes our unfinished-purchase recovery UI fire repeatedly for customers who are already active, paying subscribers. Related to existing thread 792933 (same symptom; iOS 18.4-18.5 and iOS 26). Feedback Assistant: FB23736625 (sysdiagnose attached). Environment iOS 26.x (mostly 26.5). Negligible on iOS 17/18. Production. StoreKit 2. Built with Xcode 26.3. Not device-specific (iPhone 12-17). Seen in two apps. What we observe Reappearing transaction: SAME transactionId, active (future expiresDate), not revoked, transactionReason = PURCHASE. Verified via App Store Server API (Get Transaction Info, Production). Immediately after finish(), the transaction is gone from Transaction.unfinished (verified by re-query). It reappears only on a later cold launch / sign-in. (We have not confirmed whether AppStore.sync() also triggers it.) Affects both non-original and first-purchase (id == originalId) transactions. Scale (2-day analytics) 1,456 occurrences, 1,078 users. 230 users (21%) hit it 2+ times (up to 11). Among repeat users, 224/230 (97%) show the identical transactionId every time - i.e., re-presentation of the same finished transaction, not new ones. How we finish (verified transactions, awaited) // Enumerated from Transaction.unfinished (launch) and Transaction.updates (long-lived task). private func finishAndVerify(_ transaction: Transaction) async { await transaction.finish() // awaited if await isStillUnfinished(transaction.id) == false { return } // confirmed GONE here try? await Task.sleep(nanoseconds: 1_000_000_000) await transaction.finish() // retry once // Even after eviction is confirmed above, the SAME transactionId // is yielded again by Transaction.unfinished on a later cold launch. } private func isStillUnfinished(_ txId: UInt64) async -> Bool { for await result in Transaction.unfinished { let id: UInt64 switch result { case .verified(let t): id = t.id case .unverified(let t, _): id = t.id } if id == txId { return true } } return false } Questions For an active auto-renewable subscription, is the current transaction expected to be re-presented in Transaction.unfinished across launches even after finish()? If so, what is the intended handling? Is there a guaranteed way to durably remove it so it does not reappear? Can AppStore.sync() / background re-sync reintroduce an already-finished transaction? Is this a regression in iOS 26? Notes Not reproducible on demand; observed only in Production analytics across many users. sysdiagnose available (attached to FB23736625). The app also links legacy SKPaymentQueue (StoreKit 1) for older flows - could dual SK1/SK2 usage affect finished-state persistence?
0
0
306
Jul ’26
Unable to submit first auto-renewable subscription because existing SubscriptionGroupVersion is in unsupported legacy state
Hi everyone, I'm hoping someone from Apple or another developer has seen this before because I'm completely blocked from submitting my first auto-renewable subscription. Setup First app submission App version: 1.0 (Build 34) One auto-renewable subscription Five consumable IAPs Everything configured in App Store Connect StoreKit works correctly in TestFlight Subscription purchases complete successfully in TestFlight RevenueCat configuration has been verified Subscription review screenshot is uploaded and processed successfully Problem App Store Connect shows: "There are errors with one or more of your items. To fix them, you need to remove the items and add them again to your submission." The draft contains: App Version 5 Consumable IAPs 1 Subscription When I submit through the App Store Connect API I receive: STATE_ERROR.SUBSCRIPTION_SUBMISSION_REQUIRES_GROUP_VERSION A subscription must be submitted with its subscription group version when the group has no prior approved version. That makes sense because this is my first subscription. However, when I attempt to create a subscription group version I receive: STATE_ERROR.ALREADY_EXISTS Version already exists. There is already an inflight version with id: bf2f7b5b-7fbd-44fc-9c67-af1297f3d76a So I then attempted to add that existing SubscriptionGroupVersion to the review submission. Apple responds with: STATE_ERROR.SUBSCRIPTION_GROUP_VERSION_NOT_SUPPORTED Subscription group version bf2f7b5b-7fbd-44fc-9c67-af1297f3d76a is using an older format that is not supported for review submission. Please update before submitting. and also: STATE_ERROR.SUBSCRIPTION_GROUP_VERSION_INVALID_STATE Subscription group version bf2f7b5b-7fbd-44fc-9c67-af1297f3d76a cannot be submitted. Only versions in Prepare for Submission or Developer Rejected can be submitted. The issue I'm now stuck because: Apple says I must submit a SubscriptionGroupVersion. Apple says one already exists. Apple will not allow me to create a replacement. Apple will not allow me to submit the existing one. Apple says the existing one is using an older format. I cannot find any way in App Store Connect to update, replace or delete this SubscriptionGroupVersion. Things I've already verified Build 34 is attached correctly. Subscription Product ID is correct. RevenueCat configuration is correct. StoreKit loads the subscription successfully. Purchases work in TestFlight. Subscription review screenshot exists and is COMPLETE. Localizations, pricing and availability are all configured. The issue occurs both in App Store Connect and when submitting via the App Store Connect API. Question Has anyone encountered this before? Is there a way to regenerate or migrate a SubscriptionGroupVersion into the new format from App Store Connect, or is this something Apple Developer Support has to reset on the backend? Any advice would be greatly appreciated. Thanks!
0
0
514
Jul ’26
TestFlight App uses wrong sandbox account for payment
I'm using TestFlight to test an app with payment/subscription functionality. I created sandbox accounts in AppStore Connect accordingly to be able to test the subscriptions. I'm logged in with the sandbox account. When I try to subscribe in the App the wrong account (this is my actual real AppleID) is used for the subscription although it is recognized that this is just a sandbox subscription. I tried: logging off/on into the sandbox account creating a totally new sandbox account trying to trigger the payment with no logged in sandbox account The result is always: in the payment popup it is stated that the purchase account will be my original AppleID and not a sandbox account. How can I switch the accounts? Is this a bug at Apple's side somehow?
20
13
27k
Jul ’26
TestFlight returned no subscription products until I added the group first
I ran into a strange issue while testing my subscriptions through TestFlight. RevenueCat returned the correct monthly and yearly product IDs, but StoreKit returned zero products. Pricing, availability, agreements, bundle ID, and product configuration were all correct. The problem was the order I added items to the App Review draft. I initially added the subscription products first and the subscription group afterward. What fixed it, Removed everything from the draft. Added the subscription group first. Added the monthly and yearly products afterward. The products then appeared in TestFlight sandbox and purchases worked. No new build or App Review approval was needed. Has anyone else experienced this? I couldn’t find this ordering requirement in Apple’s documentation.
0
0
571
Jul ’26
App Store Connect – URGENT! Missing “In-App Purchases and Subscriptions” Section + Cannot Create New Version (Blocking Submission)
Hi everyone, I’m currently stuck with a blocking issue in App Store Connect and would really appreciate any guidance or insight. Issue: My app version (iOS App 1.0) is missing the “In-App Purchases and Subscriptions” section entirely. Because of this, I cannot attach my subscriptions to the version, which is preventing me from submitting the app for review. Additionally, I also do not have the option to create a new version, so I can’t work around the issue by moving to 1.0.1. What happened before this: I uploaded a build (Build 24) Submitted the app for review Then removed the submission After that, the IAP section disappeared completely Since then, I cannot attach subscriptions or create a new version Current state: Subscriptions are created and show “Waiting for Review” New Build is attached to Version 1.0 All metadata and screenshots are complete “In-App Purchases and Subscriptions” section is missing “Add Version” option is not available What I’ve tried: Removing and re-adding the build Waiting for UI refresh/processing Contacting Apple Developer Support (case has been escalated for 6 days with no response) Impact: This is currently blocking my app launch because I would be rejected since the subscriptions are not linked, as I cannot submit my first subscription with the app. Questions: Has anyone experienced a missing IAP section after removing a submission? Is there any way to force reset the app version state from the developer side? Is this a known App Store Connect issue? Any help or suggestions would be greatly appreciated. Thanks in advance.
4
3
1.3k
Jul ’26
Can developers customize the minimum payment threshold for in-app purchase revenue?
Isn't there a way for developers to make custom adjustments to the transferred revenue, such as changing the minimum payment amount to 100,000 yen? Looking at the site below, I thought that the minimum payment amount determined by Apple for each region and currency is fixed and cannot be customized. Is this correct? https://developer.apple.com/help/app-store-connect/reference/reporting/minimum-payment-threshold
0
0
141
Jul ’26
In-App Purchases and Subscriptions section missing from version page — cannot attach subscriptions to submission
I have been rejected twice under Guideline 2.1(b) because my In-App Purchase subscriptions are not submitted for review. I cannot figure out how to attach them to my submission. Here is my situation: I have 6 auto-renewable subscriptions fully configured in App Store Connect under "Barrel Pro Subscriptions" — all have screenshots, pricing, descriptions, and review notes My app is iOS only, built with React Native/Expo My current version is 1.1, Build 10 (1.1.0) The problem: The "In-App Purchases and Subscriptions" section does not appear anywhere on my version page. I have scrolled to the very bottom and it is not there. I cannot find any way to attach my subscriptions to my submission before clicking "Submit for Review." The blue info box on the Subscriptions page says: "Your first subscription must be submitted with a new app version. Select it from the app's In-App Purchases and Subscriptions section on the version page." But that section does not exist on my version page. What I have tried: Cancelling the rejected submission and starting fresh Creating a new version (1.1) manually Uploading a new build (Build 10) Checking both "In-App Purchases" and "Subscriptions" sections in the sidebar Has Apple removed this section from the version page? How do I attach my subscriptions to my submission in 2026? Any help is greatly appreciated. Thank you.
5
1
952
Jul ’26
Subscription IAP's stuck in review despite expiring/removing past builds
Build 1 of my first app was rejected. With it I submitted a monthly subscription IAP. For build 2 I made the corrections outlined in the rejection letter but also change the UI of my payment sheet, therefore I wanted to update the app screenshot and notes for the reviewer, and edit the localization. But, the fields are locked and the IAP is marked as under review. I haven't found a way to remove it from review for editing and resubmission with build 2. I successfully added a new annual subscription IAP for build 2 for my submission but when I pressed submit it said there was an error and I had to try re-attaching it. Very buggy and frustrating experience. Any help is appreciated. Already emailed apple about these issues.
0
0
292
Jul ’26
Status Update Request: In-App Purchase Submission
I am writing to inquire about the review status of a new In-App Purchase (IAP) item for our app. The IAP was submitted seven days ago, and it has been in the "In Review" status for over six days. I submitted inquiries twice through the Conncet Inquiry, but there has been no change in status or reply. As the release of this new content is time-sensitive, we are concerned about the delay in its availability to our users. The assistance in expediting the process would be greatly appreciated.
0
0
143
Jul ’26
Status Update Request: In-App Purchase Submission
Dear. App Store I am writing to inquire about the review status of a new In-App Purchase (IAP) item for our app. The IAP was submitted seven days ago, and it has been in the "In Review" status for over six days. I submitted inquiries twice through the Conncet's Inquiry, but there has been no change in status or reply. As the release of this new content is time-sensitive, we are concerned about the delay in its availability to our users.
0
0
69
Jul ’26
Refund requests failing in production
We offer an in-app way for customers to request an Apple refund for an auto-renewable subscription using StoreKit2. Everything worked during testing and verification in the Sandbox and TestFlight phases, but now consistently fails in Production. We present the refund sheet on a button press: .refundRequestSheet(for: transactionID, isPresented: $isPresenting) { result in switch result { case .success(let status): // .success / .userCancelled handled here case .failure(let error): // -> .failed for every user } } We log the outcome of all the requests, success and cancel behaves as expected. Since RefundRequestError only has .duplicateRequest .failed and the localizedDescription is generic, we don't know why it is failing. We have already checked that the transaction are for verified, not revoked, non-upgraded and active subscriptions. The issue only happens in Production. Is there any way to get more information about why a refund request fails or what other configuration needs to verified for this to work? Is there an eligibility window or other non-specified limit that might result in these errors?
1
0
543
Jul ’26
StoreKit 2 currentEntitlements persists after Sandbox Purchase History reset in TestFlight
I am testing a StoreKit 2 non-consumable IAP through TestFlight. Product ID: com.metabolla.plus.lifetime Type: Non-Consumable Environment: TestFlight / Sandbox Transaction.currentEntitlements keeps returning an active entitlement for this product even after: configuring a Sandbox Apple Account clearing Sandbox Purchase History reinstalling the app rebooting the device Important detail: the first TestFlight purchase was completed before configuring the Sandbox Apple Account on the device. If I temporarily change the Product ID in code, the entitlement disappears, so the issue seems tied to the original Product ID/account/receipt. Question: Can a non-consumable TestFlight purchase made before Sandbox Apple Account configuration remain associated with the original TestFlight/Apple ID identity? Is there any supported way to clear this entitlement for testing?
4
0
1.1k
Jul ’26
Production StoreKit silently omits one approved auto-renewable subscription product — sandbox returns it correctly, sudden onset 2026-05-09
Hi all, Reporting an active production issue in case anyone else is seeing the same pattern, or has insight into what could cause this. Symptom As of 2026-05-09 morning, one specific auto-renewable subscription product is silently absent from Production StoreKit responses on our live App Store build. The product is still 'Approved' in App Store Connect, all metadata is intact, no error code is returned — the product simply does not appear in the products array. The other 3 products in the same subscription group continue to work normally. 100% of production users are affected. Setup App: live on App Store, version 1.0.0 (build 8) Subscription group with 4 auto-renewable products: standard_monthly_799 ✅ returns correctly standard_annual_6999 ✅ returns correctly unlimited_monthly_1299 ❌ MISSING from production response unlimited_annual_9999 ✅ returns correctly SDK: purchases_flutter (RevenueCat) → StoreKit Same physical device, same code, same RC config behaves correctly in Sandbox — all 4 products are returned and a sandbox purchase of unlimited_monthly_1299 succeeds. Timeline 2026-05-08: working correctly, purchases succeeding normally 2026-05-09 morning: product silently disappears from production StoreKit responses No app update was submitted between those dates No App Store Connect changes were made Onset was simultaneous across all production users at one timestamp What I've verified App Store Connect: Product status: Approved All territories enabled, all prices configured (no N/A in any territory) Subscription group correctly contains all 4 products No 'Submit for Review' pending changes Product attached to live app version 1.0.0 (8) Tax category: Match to parent app Family Sharing: Off (consistent with the working products) Paid Applications Agreement: Status: Active Banking and Tax forms: Active RevenueCat dashboard: All 4 products show Store Status: Approved Default offering contains all 4 packages iOS attachment for the affected product is intact No warnings or sync errors Sandbox StoreKit (today): flutter run (debug) on physical device → all 4 products returned flutter run --release on physical device → all 4 products returned Sandbox purchase of unlimited_monthly_1299 succeeds Production StoreKit (today, broken): App Store-downloaded 1.0.0 (8) on multiple users' devices Multiple Apple IDs / multiple devices / multiple regions — all reproduce Only unlimited_monthly_1299 affected; other 3 products fine Why this looks server-side Sudden simultaneous onset across all users No code or config change preceded onset Sandbox unaffected, only Production affected Single product affected, not the whole subscription group or app No error returned — silent omission only Cannot reproduce with locally signed builds, only with App Store-distributed binary This pattern is consistent with a server-side product indexing or fronting issue specific to one product in Production StoreKit. As a developer I don't have visibility into Apple's product-serving infrastructure to investigate further — looking for guidance from anyone who has seen this before. Questions for the community Has anyone else seen a single auto-renewable subscription silently drop out of Production StoreKit responses while remaining Approved in ASC, with no error code returned? Is there any internal product-state flag (beyond what's exposed in the ASC UI) that could cause Production StoreKit to silently omit a product? Anything similar to a hidden 'review hold' or 'price tier reconciliation' state? Has the asymmetry between RevenueCat package identifiers (Standard uses RC's $rc_monthly/$rc_annual default identifiers, Premium uses custom premium_monthly/premium_annual identifiers) ever been implicated in this kind of failure? RC support has been notified, but worth asking publicly. For anyone who has resolved a similar issue: what action ended up clearing it — ASC re-save, RC re-sync, Apple Support escalation, or did it self-resolve after Apple-side cache propagation? Filings in progress ASC Contact Us ticket: filed Apple DTS technical incident: filed RevenueCat support ticket: filed Feedback Assistant report: in progress Will update this thread with the resolution path once we have one. Thanks, — Kin Pong Lo (developer, Alice: AI English Tutor)
1
0
750
Jul ’26
Guideline 3.1.1 – Consumable IAPs rejected after binary approved; asked for “new binary” though 1.8 already submitted
Hi, We received App Review feedback under Guideline 3.1.1 for our in-app purchases, and we’d appreciate guidance on the expected next step. What we submitted; We created and completed metadata for the new consumable IAPs (pricing, availability, review screenshots, localizations). We uploaded and submitted app version 1.8 with a recent binary (build processed/VALID in App Store Connect). We also submitted the consumable IAPs for review. Outcome: App version 1.8 was approved (currently Pending Developer Release). The consumable IAPs were returned with Developer Action Needed. Our confusion We already uploaded/submitted a new binary (1.8) for this release, and the consumable purchase flows are implemented in that binary (Store / offers). The app binary itself was approved, but the consumable IAPs were rejected with a request for another new binary. For a first-time expansion from Non-Consumable-only to Consumables, is a separate / subsequent binary submission always required even if the approved version already contains the purchase UI?
1
0
279
Jul ’26
Approved in-app purchase not returned by on-device StoreKit (SK1 & SK2), visible on public listing
I have a non-consumable in-app purchase that is Approved and visible on my app's public App Store product page, but on-device StoreKit returns no product for its identifier — for 5+ days now. App: Élec NF C 15-100 — Apple ID 6784323130 — bundle com.comptoirstudio.elec Product ID: elec_pro_avie (non-consumable, 9.99 EUR) What is confirmed correct: IAP status: Approved, Cleared for Sale in all territories Paid Applications Agreement: Active; Banking and Tax forms: complete, nothing pending The IAP appears in the "In-App Purchases" section of my live App Store listing The App Store Server API returns the product correctly (verified via RevenueCat) An In-App Purchase Key (.p8) is configured The failure: On-device SKProductsRequest (StoreKit 1) and Product.products(for:) (StoreKit 2) both return an empty product list for elec_pro_avie Reproduced in production (live v1.1.0/1.2.0) and TestFlight/sandbox Reproduced on multiple devices and Apple IDs (FR and US) Product identifier matches exactly; bundle ID matches This looks like a StoreKit product-catalog sync issue on Apple's side: server-side everything resolves, but the device-facing catalog never serves the product. Could an Apple engineer force a re-sync of this product, or advise what else could block on-device delivery? A TSI/ticket (submitted last Friday) has had no response yet. Thank you.
0
0
98
Jul ’26
In-App Purchase availability for the Russia region - recommended payment approach?
Hello, we are preparing an app that sells digital subscriptions consumed within the app and we fully understand that Guideline 3.1.1 requires such content to be sold through In-App Purchase. Our question concerns one specific case: In-App Purchase does not appear to be available for App Store accounts in the Russia region. For users in that region, what is the compliant way to offer a digital subscription? Would using an approved local third-party payment provider be acceptable when IAP is not available and if so, are there any conditions or entitlements we should be aware of? For all other regions where IAP is available, we plan to use In-App Purchase as required. Thank you! Kind regards
0
0
235
Jul ’26
Promotional offer error while testing with sandbox account
Hello everyone I'm testing promotional offers on for my app. I've setup a product with a promotional offer for it. I've also have our backend developer setup signature generating. However when I tried to purchase the offer from my app, I'm getting the error: `Error Domain=SKErrorDomain Code=0 "An unknown error occurred" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x149a7c330 {Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={NSUnderlyingError=0x149a7cba0 {Error Domain=AMSErrorDomain Code=305 "(null)"}}}} ` Also during the purchase process, I noticed the Xcode console printed out this: <SKPaymentQueue: 0x10d3fc210>: Payment completed with error: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={client-environment-type=Sandbox, storefront-country-code=VNM, NSUnderlyingError=0x149a7d320 {Error Domain=AMSErrorDomain Code=305 "Purchase Failed Server canceled the purchase" UserInfo={AMSURL=https://sandbox.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy?guid=00008110-0001549C36BA401E, AMSDescription=Purchase Failed, NSDebugDescription=Purchase Failed Server canceled the purchase, AMSServerCorrelationKey=3Y44VA33BIC5CZCH5I7WLTQ5DA, AMSStatusCode=200, AMSServerPayload={ "cancel-purchase-batch" = 1; customerMessage = "Unable to process your request."; dialog = { defaultButton = ok; explanation = "Please try again later.\n\n[Environment: Sandbox]"; initialCheckboxValue = 1; "m-allowed" = 0; message = "Unable to process your request."; okButtonString = OK; }; failureType = ""; "m-allowed" = 0; metrics = { actionUrl = "sandbox.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy"; asnState = 0; dialogId = "MZCommerce.SystemError"; eventType = dialog; message = "Unable to process your re"; mtEventTime = "2026-07-15 06:14:16 Etc/GMT"; mtTopic = "xp_ase_payments/appstore_payments_ue"; options = ( OK ); }; pings = ( ); }, AMSFailureReason=Server canceled the purchase}}} Could someone please help me figure out what the problem is? Thanks in advance!.
0
0
91
Jul ’26
Paid Apps agreement option missing in App Store Connect — can't enable paid agreements
Hello, I need to set up the Paid Apps agreement in App Store Connect (to offer in-app purchases), but I don't see any button or link to request it. In App Store Connect under Business (Agreements, Tax, and Banking) I only see the Free Apps agreement as Active. There is no "View and Agree to Terms" banner and no option to add or activate the Paid Apps agreement anywhere. What I already checked: I'm signed in as the Account Holder (not Admin or another role). The Apple Developer Program membership is active and paid. I tried both the new "Business" section and the old "Agreements, Tax, and Banking" page — no Paid Apps row, no request button. Tried different browsers and clearing cache, same result. Questions: What conditions must be met for the Paid Apps agreement option to appear for an account? Is there a known delay or eligibility/verification step (e.g., for individual accounts or specific regions) before it shows up? Is contacting Apple Developer Support the only way to resolve this, or is there something I can do myself in the account? Thanks in advance for any pointers.
0
0
227
Jul ’26
In app purchase not available in my country
Hi, I was creating an iOS app for my country Ethiopia that has in app purchase to unlock app features. The apple policy says for such payment, we must use Apple IAP but not external payment methods such as stripe or local. However, in my country, Ethiopia, Apple IAP is not available. My question is can I use local payment methods or guide users on how to pay using available payment methods in the country where Apple IAP is not available? I need to make sure my app is acceptable during review using local payment method just because Apple IAP is not available in my country. Thank you
0
0
237
Jul ’26
In App Purchase UI difference for tvOS
We're seeing differences in the purchase dialog and overall presentation when testing with Sandbox accounts compared to commercially available apps. Are these UI differences are expected and are simply a characteristic of the Sandbox testing environment, or if there are any configuration requirements that affect the purchase sheet appearance? It would be helpful to know whether developers should expect the production purchase UI to match App Store apps once the app is distributed through TestFlight/App Store, or if there are additional factors involved. Sandbox UI Expected UI
0
0
452
Jul ’26
[StoreKit 2] finish() does not durably remove an active subscription transaction on iOS 26 - same transactionId reappears in Transaction.unfinished
On iOS 26 in Production (StoreKit 2), a transaction we have already finished keeps reappearing in Transaction.unfinished on later launches. We call await Transaction.finish() and confirm in the same session (by re-reading Transaction.unfinished) that it is removed - but on a later cold launch the SAME transactionId is yielded again. This makes our unfinished-purchase recovery UI fire repeatedly for customers who are already active, paying subscribers. Related to existing thread 792933 (same symptom; iOS 18.4-18.5 and iOS 26). Feedback Assistant: FB23736625 (sysdiagnose attached). Environment iOS 26.x (mostly 26.5). Negligible on iOS 17/18. Production. StoreKit 2. Built with Xcode 26.3. Not device-specific (iPhone 12-17). Seen in two apps. What we observe Reappearing transaction: SAME transactionId, active (future expiresDate), not revoked, transactionReason = PURCHASE. Verified via App Store Server API (Get Transaction Info, Production). Immediately after finish(), the transaction is gone from Transaction.unfinished (verified by re-query). It reappears only on a later cold launch / sign-in. (We have not confirmed whether AppStore.sync() also triggers it.) Affects both non-original and first-purchase (id == originalId) transactions. Scale (2-day analytics) 1,456 occurrences, 1,078 users. 230 users (21%) hit it 2+ times (up to 11). Among repeat users, 224/230 (97%) show the identical transactionId every time - i.e., re-presentation of the same finished transaction, not new ones. How we finish (verified transactions, awaited) // Enumerated from Transaction.unfinished (launch) and Transaction.updates (long-lived task). private func finishAndVerify(_ transaction: Transaction) async { await transaction.finish() // awaited if await isStillUnfinished(transaction.id) == false { return } // confirmed GONE here try? await Task.sleep(nanoseconds: 1_000_000_000) await transaction.finish() // retry once // Even after eviction is confirmed above, the SAME transactionId // is yielded again by Transaction.unfinished on a later cold launch. } private func isStillUnfinished(_ txId: UInt64) async -> Bool { for await result in Transaction.unfinished { let id: UInt64 switch result { case .verified(let t): id = t.id case .unverified(let t, _): id = t.id } if id == txId { return true } } return false } Questions For an active auto-renewable subscription, is the current transaction expected to be re-presented in Transaction.unfinished across launches even after finish()? If so, what is the intended handling? Is there a guaranteed way to durably remove it so it does not reappear? Can AppStore.sync() / background re-sync reintroduce an already-finished transaction? Is this a regression in iOS 26? Notes Not reproducible on demand; observed only in Production analytics across many users. sysdiagnose available (attached to FB23736625). The app also links legacy SKPaymentQueue (StoreKit 1) for older flows - could dual SK1/SK2 usage affect finished-state persistence?
Replies
0
Boosts
0
Views
306
Activity
Jul ’26
Unable to submit first auto-renewable subscription because existing SubscriptionGroupVersion is in unsupported legacy state
Hi everyone, I'm hoping someone from Apple or another developer has seen this before because I'm completely blocked from submitting my first auto-renewable subscription. Setup First app submission App version: 1.0 (Build 34) One auto-renewable subscription Five consumable IAPs Everything configured in App Store Connect StoreKit works correctly in TestFlight Subscription purchases complete successfully in TestFlight RevenueCat configuration has been verified Subscription review screenshot is uploaded and processed successfully Problem App Store Connect shows: "There are errors with one or more of your items. To fix them, you need to remove the items and add them again to your submission." The draft contains: App Version 5 Consumable IAPs 1 Subscription When I submit through the App Store Connect API I receive: STATE_ERROR.SUBSCRIPTION_SUBMISSION_REQUIRES_GROUP_VERSION A subscription must be submitted with its subscription group version when the group has no prior approved version. That makes sense because this is my first subscription. However, when I attempt to create a subscription group version I receive: STATE_ERROR.ALREADY_EXISTS Version already exists. There is already an inflight version with id: bf2f7b5b-7fbd-44fc-9c67-af1297f3d76a So I then attempted to add that existing SubscriptionGroupVersion to the review submission. Apple responds with: STATE_ERROR.SUBSCRIPTION_GROUP_VERSION_NOT_SUPPORTED Subscription group version bf2f7b5b-7fbd-44fc-9c67-af1297f3d76a is using an older format that is not supported for review submission. Please update before submitting. and also: STATE_ERROR.SUBSCRIPTION_GROUP_VERSION_INVALID_STATE Subscription group version bf2f7b5b-7fbd-44fc-9c67-af1297f3d76a cannot be submitted. Only versions in Prepare for Submission or Developer Rejected can be submitted. The issue I'm now stuck because: Apple says I must submit a SubscriptionGroupVersion. Apple says one already exists. Apple will not allow me to create a replacement. Apple will not allow me to submit the existing one. Apple says the existing one is using an older format. I cannot find any way in App Store Connect to update, replace or delete this SubscriptionGroupVersion. Things I've already verified Build 34 is attached correctly. Subscription Product ID is correct. RevenueCat configuration is correct. StoreKit loads the subscription successfully. Purchases work in TestFlight. Subscription review screenshot exists and is COMPLETE. Localizations, pricing and availability are all configured. The issue occurs both in App Store Connect and when submitting via the App Store Connect API. Question Has anyone encountered this before? Is there a way to regenerate or migrate a SubscriptionGroupVersion into the new format from App Store Connect, or is this something Apple Developer Support has to reset on the backend? Any advice would be greatly appreciated. Thanks!
Replies
0
Boosts
0
Views
514
Activity
Jul ’26
TestFlight App uses wrong sandbox account for payment
I'm using TestFlight to test an app with payment/subscription functionality. I created sandbox accounts in AppStore Connect accordingly to be able to test the subscriptions. I'm logged in with the sandbox account. When I try to subscribe in the App the wrong account (this is my actual real AppleID) is used for the subscription although it is recognized that this is just a sandbox subscription. I tried: logging off/on into the sandbox account creating a totally new sandbox account trying to trigger the payment with no logged in sandbox account The result is always: in the payment popup it is stated that the purchase account will be my original AppleID and not a sandbox account. How can I switch the accounts? Is this a bug at Apple's side somehow?
Replies
20
Boosts
13
Views
27k
Activity
Jul ’26
TestFlight returned no subscription products until I added the group first
I ran into a strange issue while testing my subscriptions through TestFlight. RevenueCat returned the correct monthly and yearly product IDs, but StoreKit returned zero products. Pricing, availability, agreements, bundle ID, and product configuration were all correct. The problem was the order I added items to the App Review draft. I initially added the subscription products first and the subscription group afterward. What fixed it, Removed everything from the draft. Added the subscription group first. Added the monthly and yearly products afterward. The products then appeared in TestFlight sandbox and purchases worked. No new build or App Review approval was needed. Has anyone else experienced this? I couldn’t find this ordering requirement in Apple’s documentation.
Replies
0
Boosts
0
Views
571
Activity
Jul ’26
App Store Connect – URGENT! Missing “In-App Purchases and Subscriptions” Section + Cannot Create New Version (Blocking Submission)
Hi everyone, I’m currently stuck with a blocking issue in App Store Connect and would really appreciate any guidance or insight. Issue: My app version (iOS App 1.0) is missing the “In-App Purchases and Subscriptions” section entirely. Because of this, I cannot attach my subscriptions to the version, which is preventing me from submitting the app for review. Additionally, I also do not have the option to create a new version, so I can’t work around the issue by moving to 1.0.1. What happened before this: I uploaded a build (Build 24) Submitted the app for review Then removed the submission After that, the IAP section disappeared completely Since then, I cannot attach subscriptions or create a new version Current state: Subscriptions are created and show “Waiting for Review” New Build is attached to Version 1.0 All metadata and screenshots are complete “In-App Purchases and Subscriptions” section is missing “Add Version” option is not available What I’ve tried: Removing and re-adding the build Waiting for UI refresh/processing Contacting Apple Developer Support (case has been escalated for 6 days with no response) Impact: This is currently blocking my app launch because I would be rejected since the subscriptions are not linked, as I cannot submit my first subscription with the app. Questions: Has anyone experienced a missing IAP section after removing a submission? Is there any way to force reset the app version state from the developer side? Is this a known App Store Connect issue? Any help or suggestions would be greatly appreciated. Thanks in advance.
Replies
4
Boosts
3
Views
1.3k
Activity
Jul ’26
Can developers customize the minimum payment threshold for in-app purchase revenue?
Isn't there a way for developers to make custom adjustments to the transferred revenue, such as changing the minimum payment amount to 100,000 yen? Looking at the site below, I thought that the minimum payment amount determined by Apple for each region and currency is fixed and cannot be customized. Is this correct? https://developer.apple.com/help/app-store-connect/reference/reporting/minimum-payment-threshold
Replies
0
Boosts
0
Views
141
Activity
Jul ’26
In-App Purchases and Subscriptions section missing from version page — cannot attach subscriptions to submission
I have been rejected twice under Guideline 2.1(b) because my In-App Purchase subscriptions are not submitted for review. I cannot figure out how to attach them to my submission. Here is my situation: I have 6 auto-renewable subscriptions fully configured in App Store Connect under "Barrel Pro Subscriptions" — all have screenshots, pricing, descriptions, and review notes My app is iOS only, built with React Native/Expo My current version is 1.1, Build 10 (1.1.0) The problem: The "In-App Purchases and Subscriptions" section does not appear anywhere on my version page. I have scrolled to the very bottom and it is not there. I cannot find any way to attach my subscriptions to my submission before clicking "Submit for Review." The blue info box on the Subscriptions page says: "Your first subscription must be submitted with a new app version. Select it from the app's In-App Purchases and Subscriptions section on the version page." But that section does not exist on my version page. What I have tried: Cancelling the rejected submission and starting fresh Creating a new version (1.1) manually Uploading a new build (Build 10) Checking both "In-App Purchases" and "Subscriptions" sections in the sidebar Has Apple removed this section from the version page? How do I attach my subscriptions to my submission in 2026? Any help is greatly appreciated. Thank you.
Replies
5
Boosts
1
Views
952
Activity
Jul ’26
Subscription IAP's stuck in review despite expiring/removing past builds
Build 1 of my first app was rejected. With it I submitted a monthly subscription IAP. For build 2 I made the corrections outlined in the rejection letter but also change the UI of my payment sheet, therefore I wanted to update the app screenshot and notes for the reviewer, and edit the localization. But, the fields are locked and the IAP is marked as under review. I haven't found a way to remove it from review for editing and resubmission with build 2. I successfully added a new annual subscription IAP for build 2 for my submission but when I pressed submit it said there was an error and I had to try re-attaching it. Very buggy and frustrating experience. Any help is appreciated. Already emailed apple about these issues.
Replies
0
Boosts
0
Views
292
Activity
Jul ’26
Status Update Request: In-App Purchase Submission
I am writing to inquire about the review status of a new In-App Purchase (IAP) item for our app. The IAP was submitted seven days ago, and it has been in the "In Review" status for over six days. I submitted inquiries twice through the Conncet Inquiry, but there has been no change in status or reply. As the release of this new content is time-sensitive, we are concerned about the delay in its availability to our users. The assistance in expediting the process would be greatly appreciated.
Replies
0
Boosts
0
Views
143
Activity
Jul ’26
Status Update Request: In-App Purchase Submission
Dear. App Store I am writing to inquire about the review status of a new In-App Purchase (IAP) item for our app. The IAP was submitted seven days ago, and it has been in the "In Review" status for over six days. I submitted inquiries twice through the Conncet's Inquiry, but there has been no change in status or reply. As the release of this new content is time-sensitive, we are concerned about the delay in its availability to our users.
Replies
0
Boosts
0
Views
69
Activity
Jul ’26
Refund requests failing in production
We offer an in-app way for customers to request an Apple refund for an auto-renewable subscription using StoreKit2. Everything worked during testing and verification in the Sandbox and TestFlight phases, but now consistently fails in Production. We present the refund sheet on a button press: .refundRequestSheet(for: transactionID, isPresented: $isPresenting) { result in switch result { case .success(let status): // .success / .userCancelled handled here case .failure(let error): // -> .failed for every user } } We log the outcome of all the requests, success and cancel behaves as expected. Since RefundRequestError only has .duplicateRequest .failed and the localizedDescription is generic, we don't know why it is failing. We have already checked that the transaction are for verified, not revoked, non-upgraded and active subscriptions. The issue only happens in Production. Is there any way to get more information about why a refund request fails or what other configuration needs to verified for this to work? Is there an eligibility window or other non-specified limit that might result in these errors?
Replies
1
Boosts
0
Views
543
Activity
Jul ’26
StoreKit 2 currentEntitlements persists after Sandbox Purchase History reset in TestFlight
I am testing a StoreKit 2 non-consumable IAP through TestFlight. Product ID: com.metabolla.plus.lifetime Type: Non-Consumable Environment: TestFlight / Sandbox Transaction.currentEntitlements keeps returning an active entitlement for this product even after: configuring a Sandbox Apple Account clearing Sandbox Purchase History reinstalling the app rebooting the device Important detail: the first TestFlight purchase was completed before configuring the Sandbox Apple Account on the device. If I temporarily change the Product ID in code, the entitlement disappears, so the issue seems tied to the original Product ID/account/receipt. Question: Can a non-consumable TestFlight purchase made before Sandbox Apple Account configuration remain associated with the original TestFlight/Apple ID identity? Is there any supported way to clear this entitlement for testing?
Replies
4
Boosts
0
Views
1.1k
Activity
Jul ’26
Production StoreKit silently omits one approved auto-renewable subscription product — sandbox returns it correctly, sudden onset 2026-05-09
Hi all, Reporting an active production issue in case anyone else is seeing the same pattern, or has insight into what could cause this. Symptom As of 2026-05-09 morning, one specific auto-renewable subscription product is silently absent from Production StoreKit responses on our live App Store build. The product is still 'Approved' in App Store Connect, all metadata is intact, no error code is returned — the product simply does not appear in the products array. The other 3 products in the same subscription group continue to work normally. 100% of production users are affected. Setup App: live on App Store, version 1.0.0 (build 8) Subscription group with 4 auto-renewable products: standard_monthly_799 ✅ returns correctly standard_annual_6999 ✅ returns correctly unlimited_monthly_1299 ❌ MISSING from production response unlimited_annual_9999 ✅ returns correctly SDK: purchases_flutter (RevenueCat) → StoreKit Same physical device, same code, same RC config behaves correctly in Sandbox — all 4 products are returned and a sandbox purchase of unlimited_monthly_1299 succeeds. Timeline 2026-05-08: working correctly, purchases succeeding normally 2026-05-09 morning: product silently disappears from production StoreKit responses No app update was submitted between those dates No App Store Connect changes were made Onset was simultaneous across all production users at one timestamp What I've verified App Store Connect: Product status: Approved All territories enabled, all prices configured (no N/A in any territory) Subscription group correctly contains all 4 products No 'Submit for Review' pending changes Product attached to live app version 1.0.0 (8) Tax category: Match to parent app Family Sharing: Off (consistent with the working products) Paid Applications Agreement: Status: Active Banking and Tax forms: Active RevenueCat dashboard: All 4 products show Store Status: Approved Default offering contains all 4 packages iOS attachment for the affected product is intact No warnings or sync errors Sandbox StoreKit (today): flutter run (debug) on physical device → all 4 products returned flutter run --release on physical device → all 4 products returned Sandbox purchase of unlimited_monthly_1299 succeeds Production StoreKit (today, broken): App Store-downloaded 1.0.0 (8) on multiple users' devices Multiple Apple IDs / multiple devices / multiple regions — all reproduce Only unlimited_monthly_1299 affected; other 3 products fine Why this looks server-side Sudden simultaneous onset across all users No code or config change preceded onset Sandbox unaffected, only Production affected Single product affected, not the whole subscription group or app No error returned — silent omission only Cannot reproduce with locally signed builds, only with App Store-distributed binary This pattern is consistent with a server-side product indexing or fronting issue specific to one product in Production StoreKit. As a developer I don't have visibility into Apple's product-serving infrastructure to investigate further — looking for guidance from anyone who has seen this before. Questions for the community Has anyone else seen a single auto-renewable subscription silently drop out of Production StoreKit responses while remaining Approved in ASC, with no error code returned? Is there any internal product-state flag (beyond what's exposed in the ASC UI) that could cause Production StoreKit to silently omit a product? Anything similar to a hidden 'review hold' or 'price tier reconciliation' state? Has the asymmetry between RevenueCat package identifiers (Standard uses RC's $rc_monthly/$rc_annual default identifiers, Premium uses custom premium_monthly/premium_annual identifiers) ever been implicated in this kind of failure? RC support has been notified, but worth asking publicly. For anyone who has resolved a similar issue: what action ended up clearing it — ASC re-save, RC re-sync, Apple Support escalation, or did it self-resolve after Apple-side cache propagation? Filings in progress ASC Contact Us ticket: filed Apple DTS technical incident: filed RevenueCat support ticket: filed Feedback Assistant report: in progress Will update this thread with the resolution path once we have one. Thanks, — Kin Pong Lo (developer, Alice: AI English Tutor)
Replies
1
Boosts
0
Views
750
Activity
Jul ’26
Guideline 3.1.1 – Consumable IAPs rejected after binary approved; asked for “new binary” though 1.8 already submitted
Hi, We received App Review feedback under Guideline 3.1.1 for our in-app purchases, and we’d appreciate guidance on the expected next step. What we submitted; We created and completed metadata for the new consumable IAPs (pricing, availability, review screenshots, localizations). We uploaded and submitted app version 1.8 with a recent binary (build processed/VALID in App Store Connect). We also submitted the consumable IAPs for review. Outcome: App version 1.8 was approved (currently Pending Developer Release). The consumable IAPs were returned with Developer Action Needed. Our confusion We already uploaded/submitted a new binary (1.8) for this release, and the consumable purchase flows are implemented in that binary (Store / offers). The app binary itself was approved, but the consumable IAPs were rejected with a request for another new binary. For a first-time expansion from Non-Consumable-only to Consumables, is a separate / subsequent binary submission always required even if the approved version already contains the purchase UI?
Replies
1
Boosts
0
Views
279
Activity
Jul ’26
Approved in-app purchase not returned by on-device StoreKit (SK1 & SK2), visible on public listing
I have a non-consumable in-app purchase that is Approved and visible on my app's public App Store product page, but on-device StoreKit returns no product for its identifier — for 5+ days now. App: Élec NF C 15-100 — Apple ID 6784323130 — bundle com.comptoirstudio.elec Product ID: elec_pro_avie (non-consumable, 9.99 EUR) What is confirmed correct: IAP status: Approved, Cleared for Sale in all territories Paid Applications Agreement: Active; Banking and Tax forms: complete, nothing pending The IAP appears in the "In-App Purchases" section of my live App Store listing The App Store Server API returns the product correctly (verified via RevenueCat) An In-App Purchase Key (.p8) is configured The failure: On-device SKProductsRequest (StoreKit 1) and Product.products(for:) (StoreKit 2) both return an empty product list for elec_pro_avie Reproduced in production (live v1.1.0/1.2.0) and TestFlight/sandbox Reproduced on multiple devices and Apple IDs (FR and US) Product identifier matches exactly; bundle ID matches This looks like a StoreKit product-catalog sync issue on Apple's side: server-side everything resolves, but the device-facing catalog never serves the product. Could an Apple engineer force a re-sync of this product, or advise what else could block on-device delivery? A TSI/ticket (submitted last Friday) has had no response yet. Thank you.
Replies
0
Boosts
0
Views
98
Activity
Jul ’26
In-App Purchase availability for the Russia region - recommended payment approach?
Hello, we are preparing an app that sells digital subscriptions consumed within the app and we fully understand that Guideline 3.1.1 requires such content to be sold through In-App Purchase. Our question concerns one specific case: In-App Purchase does not appear to be available for App Store accounts in the Russia region. For users in that region, what is the compliant way to offer a digital subscription? Would using an approved local third-party payment provider be acceptable when IAP is not available and if so, are there any conditions or entitlements we should be aware of? For all other regions where IAP is available, we plan to use In-App Purchase as required. Thank you! Kind regards
Replies
0
Boosts
0
Views
235
Activity
Jul ’26
Promotional offer error while testing with sandbox account
Hello everyone I'm testing promotional offers on for my app. I've setup a product with a promotional offer for it. I've also have our backend developer setup signature generating. However when I tried to purchase the offer from my app, I'm getting the error: `Error Domain=SKErrorDomain Code=0 "An unknown error occurred" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x149a7c330 {Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={NSUnderlyingError=0x149a7cba0 {Error Domain=AMSErrorDomain Code=305 "(null)"}}}} ` Also during the purchase process, I noticed the Xcode console printed out this: <SKPaymentQueue: 0x10d3fc210>: Payment completed with error: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={client-environment-type=Sandbox, storefront-country-code=VNM, NSUnderlyingError=0x149a7d320 {Error Domain=AMSErrorDomain Code=305 "Purchase Failed Server canceled the purchase" UserInfo={AMSURL=https://sandbox.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy?guid=00008110-0001549C36BA401E, AMSDescription=Purchase Failed, NSDebugDescription=Purchase Failed Server canceled the purchase, AMSServerCorrelationKey=3Y44VA33BIC5CZCH5I7WLTQ5DA, AMSStatusCode=200, AMSServerPayload={ "cancel-purchase-batch" = 1; customerMessage = "Unable to process your request."; dialog = { defaultButton = ok; explanation = "Please try again later.\n\n[Environment: Sandbox]"; initialCheckboxValue = 1; "m-allowed" = 0; message = "Unable to process your request."; okButtonString = OK; }; failureType = ""; "m-allowed" = 0; metrics = { actionUrl = "sandbox.itunes.apple.com/WebObjects/MZBuy.woa/wa/inAppBuy"; asnState = 0; dialogId = "MZCommerce.SystemError"; eventType = dialog; message = "Unable to process your re"; mtEventTime = "2026-07-15 06:14:16 Etc/GMT"; mtTopic = "xp_ase_payments/appstore_payments_ue"; options = ( OK ); }; pings = ( ); }, AMSFailureReason=Server canceled the purchase}}} Could someone please help me figure out what the problem is? Thanks in advance!.
Replies
0
Boosts
0
Views
91
Activity
Jul ’26
Paid Apps agreement option missing in App Store Connect — can't enable paid agreements
Hello, I need to set up the Paid Apps agreement in App Store Connect (to offer in-app purchases), but I don't see any button or link to request it. In App Store Connect under Business (Agreements, Tax, and Banking) I only see the Free Apps agreement as Active. There is no "View and Agree to Terms" banner and no option to add or activate the Paid Apps agreement anywhere. What I already checked: I'm signed in as the Account Holder (not Admin or another role). The Apple Developer Program membership is active and paid. I tried both the new "Business" section and the old "Agreements, Tax, and Banking" page — no Paid Apps row, no request button. Tried different browsers and clearing cache, same result. Questions: What conditions must be met for the Paid Apps agreement option to appear for an account? Is there a known delay or eligibility/verification step (e.g., for individual accounts or specific regions) before it shows up? Is contacting Apple Developer Support the only way to resolve this, or is there something I can do myself in the account? Thanks in advance for any pointers.
Replies
0
Boosts
0
Views
227
Activity
Jul ’26
In app purchase not available in my country
Hi, I was creating an iOS app for my country Ethiopia that has in app purchase to unlock app features. The apple policy says for such payment, we must use Apple IAP but not external payment methods such as stripe or local. However, in my country, Ethiopia, Apple IAP is not available. My question is can I use local payment methods or guide users on how to pay using available payment methods in the country where Apple IAP is not available? I need to make sure my app is acceptable during review using local payment method just because Apple IAP is not available in my country. Thank you
Replies
0
Boosts
0
Views
237
Activity
Jul ’26
In App Purchase UI difference for tvOS
We're seeing differences in the purchase dialog and overall presentation when testing with Sandbox accounts compared to commercially available apps. Are these UI differences are expected and are simply a characteristic of the Sandbox testing environment, or if there are any configuration requirements that affect the purchase sheet appearance? It would be helpful to know whether developers should expect the production purchase UI to match App Store apps once the app is distributed through TestFlight/App Store, or if there are additional factors involved. Sandbox UI Expected UI
Replies
0
Boosts
0
Views
452
Activity
Jul ’26