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

Refund for a non-renewing subscription - notification
Does the App Store send a CONSUMPTION_REQUEST App Store Server Notification when a customer requests a refund for a non-renewing subscription? The documentation is inconsistent: the notificationType page lists only 'a consumable In-App Purchase or auto-renewable subscription', beginRefundRequest(in:) mentions only consumables, but the Send Consumption Information endpoint states it applies to 'any product type (consumable, non-consumable, non-renewing subscription, or auto-renewable subscription)'. Which is correct for a non-renewing subscription sold in the Saudi Arabia storefront?
0
0
242
Sep ’26
Best practices for backend server transition timing to Production App Store Server API
Hello, I would like to clarify the best practices and timing for our backend server to transition its main connection to the production App Store Server API. Currently, we are considering the following approach: We plan to switch our backend’s primary API endpoint from Sandbox to Production once our app passes the App Store review and its status changes to "Ready for Sale." Could you please confirm if this timing is standard and correct? Additionally, to handle App Store reviews (which run in the Sandbox environment) and TestFlight tests seamlessly without manual configuration changes, we are planning to implement an automatic fallback mechanism: Our backend always requests the Production App Store Server API first. If it returns a "TransactionNotFound" (e.g., 4040010) error, the backend automatically retries the request using the Sandbox API. Is this automatic fallback from Production to Sandbox considered a safe and recommended practice by Apple, especially for App Store reviews and post-release testing? Any advice or insights on backend transition timing and fallback strategies would be highly appreciated. Thank you!
0
0
113
Sep ’26
Is dynamic fallback to Sandbox API correct when receiving error 4040010 (TransactionIdNotFoundError) during App Review?
Hi, During the App Review process, a test purchase was made using what appeared to be a production Apple account. When our app server sent this transactionId to the Production App Store Server API, it returned the error code 4040010 (TransactionIdNotFoundError). To handle this gracefully and prevent review rejections, we are considering implementing a dynamic fallback mechanism on our app server. Specifically, when the Production API returns 4040010, the server will automatically retry the request using the Sandbox App Store Server API URL. Could you please clarify the following points regarding this design? Is it expected behavior for an App Review purchase to return 4040010 on the Production API, and can it be successfully verified by routing it to the Sandbox API? Is this dynamic fallback logic (Production API ➔ if 4040010 ➔ Sandbox API) a recommended and officially supported best practice for handling App Review and TestFlight transactions? Any confirmation or advice from Apple engineers or the community would be greatly appreciated.Thank you.
0
0
95
Sep ’26
App Store Rejection - REAL MONEY GAMBLING
Guideline 2.3.6 - Performance - Accurate Metadata Issue Description Please note that the app includes tips, tools, predictions or other information related to real money gambling, real money betting, or real money skill-based gaming, you must select "Yes" for "Gambling" in App Store Connect. Apps must be rated accordingly for the highest level of content that the user is able to access in the app. Next Steps Update the Age Rating selections in App Store Connect to select "Yes" for "Gambling." The Age Rating selections can be found on the App Information page after selecting the app in App Store Connect. I have had multiple releases with just having "Social Gaming" Set to Frequent as my app has wagering in it but can NEVER be exchanged for real currency which puts it in the bucket of SOCIAL GAMBLING/WAGERING. This reviewer has no idea how to interpret what Guideline 2.3.6 actually means and this reviewer keeps rejecting my app..... Apple can you please change the reviewer with someone who actually can comprehend what the guidelines means. Because in my privacy and tos I specifically state the words gambling and no in-game exchange or out of game exchange for real currency can occur - not sure why I fail the guideline only this ONE TIME because this reviewer cannot understand what the guideline means. This is holding up my app release for the gazilianth time and costing yourselves and myself money. APP ID : 6767430745
1
0
356
Sep ’26
Discrepancy between App Store Server API expiresDate (localized) and iOS Settings Subscriptions UI
Hello everyone, I am encountering a persistent date discrepancy between the subscription expiration date returned by the App Store Server API and the date displayed to the user in the native iOS Settings UI. Our app receives the renewal timestamp via the App Store Server Notifications in UTC milliseconds. For a recent transaction, we received renewalDate = 1820988823000, which is September 15, 2027, at 06:13 AM UTC. Following standard practices, our app formats this UTC timestamp to the user's local device timezone. On a device set to India Standard Time (IST, UTC+5:30), the app correctly displays the expiration as September 15. However, on the exact same device, navigating to iOS Settings > Apple ID > Subscriptions shows the expiration date as September 14. Converting 06:13 AM UTC to Pacific Time (PT) results in September 14 at 11:13 PM PDT. This leads me to suspect that the iOS Settings page anchors its display strictly to Cupertino/Pacific Time, completely bypassing the device's local timezone. I noticed another developer raised this exact issue regarding KST back in September 2025 (Thread ID: 800332), but that post remains unanswered. My questions for the community and Apple Engineers: Can anyone officially confirm if the native iOS Settings > Subscriptions screen intentionally displays dates anchored strictly to Pacific Time (PT) rather than the device's local timezone? If so, how are you handling user inquiries when your app correctly displays the local time, but Apple's UI displays the day prior? Any official references or guidance on this behavior would be greatly appreciated to help us clarify this for our QA teams and end-users.
0
0
257
Sep ’26
ASSN V2: purchaseDate ~8 hours later than signedDate inside the same Apple-signed JWS (FB24820430)
Following the guidance in the locked thread "Reporting your App Store Server Notifications issue" (https://developer.apple.com/forums/thread/774053) and a DTS support request on the same topic, I am posting this issue with the Feedback Assistant ID requested there: FB24820430. Summary: This is a content anomaly in Apple-signed App Store Server payloads, not a notification delivery problem — our server receives and verifies every notification; the defect is in the field values themselves. For a stable subset of subscription families, purchaseDate in JWSTransactionDecodedPayload is consistently ~8 hours later than the signedDate of the very same JWS — a purchase recorded as happening after the signed document reporting it existed. Reproducible field comparison inside one and the same Apple-signed JWS: Field relation Affected transactions Unaffected (control) transactions purchaseDate − signedDate +7h54m … +7h59m (never ≤ 0) ≈ 0 (seconds) Webhook arrival at our server ≈ signedDate (seconds to minutes), never ≈ purchaseDate ≈ signedDate originalPurchaseDate carries the same ~8h shift (renewals inherit it) no shift expiresDate − purchaseDate exactly one subscription period exactly one subscription period expiresDate − signedDate period + ~8h period All fields are documented as "UNIX time, in milliseconds". Our iOS client passes StoreKit 2 Transaction.purchaseDate through unmodified; our backend stores the epoch-millisecond values verbatim as UTC with no timezone conversion. These payloads are generated and signed by Apple infrastructure. Scale (production, as of 2026-09-14): ≈710 subscription families (distinct originalTransactionId lineages), ≈2,700 transactions — roughly three quarters of all families with renewals. Affected purchases span early March 2026 to present, ~30–45 new affected transactions per day. Observed across US, PH, ID and GB storefronts and across app build versions. Sandbox is unaffected. Our interpretation (inference, not confirmed): the offset varies between 7h54m and 7h59m rather than being exactly 8h, consistent with a local wall-clock time in a UTC+8 environment having been encoded as if it were UTC when the original transaction record was created, then inherited by all renewals of that family. Questions for Apple engineers: Is this a known issue in App Store Server data, and is there a reference we can track? What conditions cause a family's purchaseDate to be recorded this way (storefronts/regions, purchase channels, offer types, original-receipt formats)? When purchaseDate and signedDate disagree, which field is authoritative for "when the customer was charged"? The public documentation defines each field only as "UNIX time, in milliseconds" and does not define its relationship. Is remediation planned on Apple's side, or what is the recommended way to obtain the true charge time? Evidence: A focused sample project (a ~85-line Swift tool plus four unmodified signedTransactionInfo JWS samples — three affected families and one unaffected control, each carrying Apple's x5c certificate chain) is included in Feedback Assistant report FB24820430, together with the raw HTTP notification bodies for an affected and a control notification, exactly as delivered to our endpoint. Thank you.
1
0
405
Sep ’26
Retention Messaging in App Store Connect
I reached out to Apple Developer Support and they directed me to the forums. This video "Explore Retention Messaging in App Store Connect" shows a "Retention Messaging" section at the 3:21 timestamp of the video, within "Subscriptions" below the "Billing Grace Period" section. For the apps in our account, there is no "Retention Messaging" section available within the Subscriptions area. I am not asking about the API. I do not believe the API is required in order to have the Retention Messaging section show up in App Store Connect. In the video, the speaker says “I'll share an overview of Retention Messaging, and how to set it up in App Store Connect” and she shows how to navigate there. While she explains that “Real-time Retention Messaging is powered by the Retention Messaging API” - she also says that you can “create the same views using real-time Retention Messaging as you can when using retention messages in App Store Connect.” Is there something that we need to do in order to get access to this area of App Store Connect so we can set up Retention Messaging? Thank you so much.
0
3
394
Sep ’26
Request a Test Notification returns 401 with an active In-App Purchase key and Apple Java Server Library
Hello Apple Developer Forums, We are unable to authorize the Production App Store Server API Request a Test Notification endpoint. Environment: Production API: Request a Test Notification Library: Apple App Store Server Library for Java 5.2.0 Client: AppStoreServerAPIClient Result: HTTP 401 Unauthorized before a testNotificationToken is returned. We have verified the following: The key is an active In-App Purchase key created in App Store Connect under Users and Access > Integrations > In-App Purchase. The production server uses the matching .p8 private key, Key ID, Issuer ID, and bundle ID. The bundle ID is com.ansio.serviceproof.ios. The server clock is NTP-synchronized. The request uses the official Apple Java Server Library rather than a manually generated JWT. We rotated the production In-App Purchase key once and received the same 401 result. The notification URL is configured for the Production environment, uses HTTPS, and is reachable. Sandbox uses an independent key and notification configuration. We intentionally do not include the private key, JWT, Key ID, or Issuer ID publicly. According to the documentation, HTTP 401 means the JWT is invalid. Since the official library creates the JWT and the active In-App Purchase key configuration has been verified, could Apple clarify: Is any additional App Store Connect role, agreement, team activation, or entitlement required for a Production In-App Purchase key to authorize App Store Server API requests? Is there a known propagation or authorization issue that can cause a newly created active In-App Purchase key to return 401? What non-sensitive diagnostic details can help distinguish a JWT construction issue from a team-level authorization issue? Thank you.
0
0
163
Sep ’26
Every subscription renewal fails with expirationIntent 2 (billing error): 4 of 4 free-trial conversions in 48h, no renewal has ever succeeded, initial purchases work (FB24877994)
Following the guidance in the locked thread "Reporting your App Store Server Notifications issue" (thread 774053), Feedback ID: FB24877994. Apple Developer Support case 102971044266 is open in parallel. Summary On our account no auto-renewable subscription renewal has ever succeeded, on either of our two products, while every customer-present initial purchase succeeds. In the last 48 hours 4 of 4 free trials that reached their renewal date with auto-renew ON failed with expirationIntent 2, in four countries (PK, GB, NL, US). What we observe Yearly product with a 7-day free introductory offer (all 175 territories, offerMode FREE_TRIAL, ONE_WEEK, 1 period). Monthly product with no offer. For each of the four, GET /inApps/v1/subscriptions/{originalTransactionId} returns status 3, and the renewal info has autoRenewStatus 1, expirationIntent 2, isInBillingRetryPeriod true, the correct renewalPrice and currency, no priceIncreaseStatus. Environment Production, inAppOwnershipType PURCHASED. The DID_FAIL_TO_RENEW notification (no subtype; billing grace period not enabled) arrives at the expiry time in each case. App Store Connect subscription events from 2026-08-01 to 2026-09-20: 18 free trial starts, 6 full-price starts, 4 voluntary churns from free trial, 4 from full price, 3 "Billing retry from free trial", 1 "Involuntary churn from full price", and no renewal event of any kind. So 5 of 5 unattended renewal charges ever attempted have failed, across two products and five countries, while the 6 paid monthly purchases in the same window (TR, FR, AU, MN, US) were charged normally at purchase time. The customers are in their own storefront countries (device time zones match), and none of the four cancelled. What we have verified Both products Approved, 175 price rows each, no scheduled or preserved prices; Paid Applications Agreement, Free Apps Agreement, banking, tax forms and both compliance items (DSA, MRDP) all show Active with nothing pending in App Store Connect > Business; our servers call no App Store Server API endpoint that modifies a subscription. Thread 847338 (posted today) describes every renewal on an account failing after an agreement issue, with expirationIntent 5. Ours is expirationIntent 2 and our agreements show Active, but the shape is the same: every renewal, no purchase affected. Questions for Apple engineers Is there any account, agreement or product condition that causes renewal charges to fail with expirationIntent 2 while initial purchases succeed? Is anything more than expirationIntent 2 available about these four renewals? The four original transaction IDs are in FB24877994. Is there a known issue affecting free-trial-to-paid renewals around 19 to 21 September 2026? Thank you.
0
0
182
Sep ’26
Advanced Commerce API access request — no response after two submissions (Request ID: UVQ7FUZVV3)
Hello, I'm the developer of FOS Social (Apple ID: 6755471015), a creator-membership marketplace currently in TestFlight. I've submitted the Advanced Commerce API access request form twice and have not received any response, confirmation, or status update. My most recent submission has Request ID: UVQ7FUZVV3. Our use case: FOS Social is a social platform where viewers subscribe to individual content creators through independent auto-renewable monthly subscriptions across three tiers ($10 / $17 / $29). A single viewer must be able to hold concurrent active subscriptions to multiple creators at the same tier — for example, subscribed to Creator A at Gold and Creator B at Gold simultaneously. This matches Apple's stated eligibility model for the Advanced Commerce API: "exceptionally large catalogs of subscription content — apps that include frequently added content from multiple creators, where each creator's offering is merchandised as a single auto-renewable subscription." Why standard StoreKit doesn't work for us: We currently reuse one product ID per tier across all creators (e.g. com.fosssocial.creator.gold.monthly). When a viewer already subscribed to one creator at Gold tries to subscribe to a second creator at Gold, StoreKit returns "already subscribed" and treats it as a renewal rather than a new independent subscription. Pre-creating a separate subscription group per creator in App Store Connect is not feasible since our creator base is dynamic and growing. My questions: Is there any way to check the status of an Advanced Commerce API access request, or a typical response timeframe we should expect? Is there anything that commonly causes these requests to go unanswered (e.g. submission not made by the Account Holder, app still in TestFlight, missing information)? Is there a recommended escalation path when the request form has been submitted multiple times with no reply? I've also opened a support case (Case ID: 102934491974) but wanted to ask here as well in case anyone from the community or Apple has guidance. Thank you!
2
0
715
Sep ’26
All auto-renewable subscriptions returning expirationIntent = 5 after resolving an agreement issue (StoreKit 1 and StoreKit 2)
Hello, We are currently seeing errors when validating receipts for every auto-renewable subscription purchased through both StoreKit 1 and StoreKit 2. Details below. Case 1 — StoreKit 1 Calling https://buy.itunes.apple.com/verifyReceipt with the subscription receipt returns: "status": 21006, "expiration_intent": "5" Case 2 — StoreKit 2 Calling https://api.storekit.itunes.apple.com/inApps/v1/subscriptions and reading the most recent transaction (LastTransactionsItem) returns status 3. Within JWSRenewalInfoDecodedPayload: autoRenewStatus = 1, expirationIntent = 5 Timeline We believe renewals stopped processing for essentially all auto-renewing subscribers of our app as of 2026-09-18 09:30 KST (UTC+9). After resolving an agreement/licensing issue on our side, new purchases and some receipt validations recovered as of 2026-09-21 11:49 KST. However, most existing receipts still return expirationIntent = 5 when we query receipt validation or subscription status. Questions Is any action required on our side — a server-side change, a configuration change in App Store Connect, or a further review of our agreements? Now that the agreement issue is resolved, when are the renewals that were left pending during the outage expected to be processed? Any guidance would be appreciated. Thank you.
0
0
261
Sep ’26
Does a personalized invitation PDF creation service require Apple IAP?
Hi everyone, I'm planning an iOS app that provides a personalized invitation-card creation service, and I'm trying to determine the correct payment method before starting development. The flow would be: User selects an invitation template. User enters their event/invitation details. The app generates a watermarked preview. User proceeds to checkout. User pays for the creation of the final personalized PDF. After successful payment, our backend places the request into a processing queue. The PDF is generated asynchronously on our server. Once completed, the user receives a notification and can download the final PDF. The purchase does not unlock an app feature, subscription, membership, or ongoing access to digital content. The user is paying for a specific personalized invitation document to be generated based on their selected template and information. Each template can have a different price. My question is: Would this type of personalized document-generation service be required to use Apple's In-App Purchase, or could an external payment processor such as Razorpay be used? I have reviewed the App Store Review Guidelines, particularly the sections concerning In-App Purchase and physical goods/services, but I'm not certain how Apple classifies a personalized digital document-generation service like this. If anyone has implemented a similar business model or can point me to the relevant Apple guideline or an official Apple clarification, I would really appreciate it. I'm asking before development so that the payment architecture can be designed correctly from the beginning. Thanks!
0
0
277
Sep ’26
Does a personalized invitation PDF creation service require Apple IAP?
Hi everyone, I'm planning an iOS app that provides a personalized invitation-card creation service, and I'm trying to determine the correct payment method before starting development. The flow would be: User selects an invitation template. User enters their event/invitation details. The app generates a watermarked preview. User proceeds to checkout. User pays for the creation of the final personalized PDF. After successful payment, our backend places the request into a processing queue. The PDF is generated asynchronously on our server. Once completed, the user receives a notification and can download the final PDF. The purchase does not unlock an app feature, subscription, membership, or ongoing access to digital content. The user is paying for a specific personalized invitation document to be generated based on their selected template and information. Each template can have a different price. My question is: Would this type of personalized document-generation service be required to use Apple's In-App Purchase, or could an external payment processor such as Razorpay be used? I have reviewed the App Store Review Guidelines, particularly the sections concerning In-App Purchase and physical goods/services, but I'm not certain how Apple classifies a personalized digital document-generation service like this. If anyone has implemented a similar business model or can point me to the relevant Apple guideline or an official Apple clarification, I would really appreciate it. I'm asking before development so that the payment architecture can be designed correctly from the beginning. Thanks!
0
0
179
Sep ’26
StoreKit says purchase succeeded but didn't, AppStore.sync() throws error Unable to Complete Request
One user of my app reached out reporting an interesting in-app purchase issue. Has anyone encountered this or have an idea what's going on here? Proceed to purchase the non-consumable IAP in the app downloaded from the App Store iOS shows the price sheet as expected Confirm with the side button iOS shows an alert "You've already purchased this. Would you like to get it again for free?" Tap OK iOS shows an alert "You're all set. Your purchase was successful." Tap OK The app's content remains locked Tap Restore Purchases iOS shows an alert to sign (with the same account shown in step 2) Input the password and tap OK iOS shows an alert "Unable to Complete Request" (which is the error.localizedDescription thrown from AppStore.sync())
3
0
413
Sep ’26
App rejected repeatedly: Subscriptions fail to load in Review but work perfectly in TestFlight
To the Apple Review and Developer Support Teams, I am writing to request guidance and assistance regarding a persistent rejection my React Native application is facing under Guideline 2.1 - Performance (In-App Purchases). My app has been rejected multiple times with the following specific note: "The In-App Purchase products in the app still exhibited one or more bugs which create a poor user experience. Specifically, the subscription screen failed to load any subscription plans. Review the details and resources below to troubleshoot this issue." The screenshot provided by the review team shows a completely black screen where our paywall options are intended to populate, indicating that the product array is returning completely empty during the review process. The Dilemma: We are completely unable to reproduce this behavior on our end. Everything functions flawlessly within our TestFlight builds across multiple physical test devices and various sandbox tester accounts. On TestFlight, the paywall renders instantly, local pricing fetches immediately via SKProductsRequest, and test transactions process without a single error. Our Current Implementation & Verification: Product Status: All subscription products are explicitly marked as "Waiting for Review" in App Store Connect with one In-App product Rejected for not being attached with a bin but I've since submitted the app once again. All the subscriptions and the in-app product have been actively attached to this specific app submission version. Agreements: The Paid Apps Agreement is active, signed, and fully up to date within our Agreements, Tax, and Banking configurations. Identifiers: We have strictly verified that the hardcoded product identifiers in our React Native codebase match the App Store Connect product IDs exactly. Because this error only occurs within the App Review environment and never in TestFlight or local sandboxes, we are at a loss for how to debug or resolve this issue. Could the App Review team or the Developer Support technical team please clarify if there is a known environment mismatch, storefront routing discrepancy, or specific network configuration (such as IPv6 handling in the review sandbox) that would cause production-ready StoreKit products to return an empty array exclusively to the reviewer? Any direct guidance, logs, or steps on how we can successfully surface our plans to your review team would be deeply appreciated. Review Environment Submission ID: 5a35279c-1621-4972-b6c6-7c1fb202b2f0 Review date: May 20, 2026 Review Device: iPad Air 11-inch (M3) Version reviewed: 1.0.2 (8) Thank you for your time and assistance.
5
1
1.2k
Sep ’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?
5
2
1.6k
Sep ’26
Unable to submit older IAPs/subscriptions for review - “older format not supported”
I’m unable to add several older In-App Purchases and auto-renewable subscriptions to an App Review submission in App Store Connect. The UI only shows: Unable to Add for Review Something went wrong. Try again. However, checking the failed reviewSubmissionItems requests in the browser dev tools shows HTTP 409 responses indicating that the existing IAP/subscription versions use an older format that is no longer supported for review submission. The affected errors include: STATE_ERROR.SUBSCRIPTION_VERSION_NOT_SUPPORTED Subscription version '[REDACTED]' is using an older format that is not supported for review submission. Please update before submitting. STATE_ERROR.SUBSCRIPTION_GROUP_VERSION_NOT_SUPPORTED Subscription group version '[REDACTED]' is using an older format that is not supported for review submission. Please update before submitting. STATE_ERROR.IAP_VERSION_DATA_SCHEMA_NOT_SUPPORTED In-app purchase version '[REDACTED]' is using an older format that is not supported for review submission. Please update before submitting. In my case, this affects: 3 older subscription versions 1 subscription group version 1 older IAP version All required metadata in App Store Connect is complete. The interesting part is that I can create a new IAP today and add it to the same review submission successfully. Only the older IAP/subscription records fail. I can’t find any option in App Store Connect to “update” or migrate these legacy versions to the newer format referenced by the error message. Has anyone found a self-service way to migrate/regenerate these older IAP/subscription versions, or does this require Apple to update the records server-side? I’ve already opened a support case with Apple (ID: 102963040418), but wanted to check whether others are seeing the same issue.
1
0
671
Sep ’26
Subscriptions stuck in "Developer Rejected" after fixing 2.3.2 image issue — status won't clear, can't resubmit
Our build was rejected under Guideline 2.3.2 (Accurate Metadata) over subscription promotional images that were flagged as duplicates of, and too similar to, our app icon. The rejection was against the build, not the subscriptions directly. At the time, all five subscriptions plus the subscription group were in "Submitted for Review" status, which meant they couldn't be edited directly. Troubleshooting steps taken so far: Developer-cancelled each of the five subscriptions to get them out of "Submitted for Review" and into an editable state. Edited each subscription to remove the promotional image that triggered the 2.3.2 flag. Made changes to the Localization and Review Information fields on each subscription to force a new Save action. The Save completed successfully with no errors on any of the five subscriptions. After this, all five subscriptions and the subscription group are showing "Removed" from the Review Status column of our iOS submission. However, "Developer Rejected" status still shows in the Subscriptions section of Monitization (ASC->Distribution). That status hasn't cleared despite the successful edit and save, and I'm not able to reattach the subscriptions to a build for a new review submission from this state. Has anyone run into this — a subscription that was developer-cancelled, corrected, and successfully saved, but remains stuck on "Developer Rejected" instead of returning to a submittable state? Is there a separate action needed beyond edit-and-save (e.g., a distinct resubmit step, or removing and recreating the subscription) to move it forward from here? Any guidance on the correct path would be appreciated — happy to provide additional screenshots or details if useful.
0
0
276
Sep ’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!
1
0
915
Sep ’26
In-App Purchase product not returned by StoreKit despite complete, correct configuration
App name: Hold My Bouquet Bundle ID: com.holdmybouquet.app App Store Connect App ID: 6807080553 In-App Purchase Product ID: com.holdmybouquet.app.page_unlock (Non-Consumable, £3.99) Our app was rejected on Guideline 2.1 because the reviewer could not complete this in-app purchase. Since the rejection, we have verified and corrected every configuration item we can control, but the purchase still fails identically in sandbox testing on a physical device. Confirmed correct: Paid Applications Agreement: Active com.holdmybouquet.app.page_unlock: status "Ready to Submit," Cleared for Sale, pricing and availability set Bundle ID matches exactly across Xcode, App Store Connect, and our purchase provider (RevenueCat) Product ID matches exactly, no typos or case mismatches Sandbox tester account verified and signed in on-device (Settings → Developer → Sandbox Account) No local StoreKit Configuration file overriding real data (confirmed "None" in the Xcode scheme) To rule out our purchase provider entirely, we bypassed it and called Apple's native StoreKit 2 API directly from the app: let products = try await Product.products(for: ["com.holdmybouquet.app.page_unlock"]) This also returns zero products, with no error — confirming the issue is not a third-party SDK integration problem. Has anyone seen this before, or can anyone from Apple advise what else to check? We are otherwise ready to resubmit for review.
2
0
429
Sep ’26
Refund for a non-renewing subscription - notification
Does the App Store send a CONSUMPTION_REQUEST App Store Server Notification when a customer requests a refund for a non-renewing subscription? The documentation is inconsistent: the notificationType page lists only 'a consumable In-App Purchase or auto-renewable subscription', beginRefundRequest(in:) mentions only consumables, but the Send Consumption Information endpoint states it applies to 'any product type (consumable, non-consumable, non-renewing subscription, or auto-renewable subscription)'. Which is correct for a non-renewing subscription sold in the Saudi Arabia storefront?
Replies
0
Boosts
0
Views
242
Activity
Sep ’26
Best practices for backend server transition timing to Production App Store Server API
Hello, I would like to clarify the best practices and timing for our backend server to transition its main connection to the production App Store Server API. Currently, we are considering the following approach: We plan to switch our backend’s primary API endpoint from Sandbox to Production once our app passes the App Store review and its status changes to "Ready for Sale." Could you please confirm if this timing is standard and correct? Additionally, to handle App Store reviews (which run in the Sandbox environment) and TestFlight tests seamlessly without manual configuration changes, we are planning to implement an automatic fallback mechanism: Our backend always requests the Production App Store Server API first. If it returns a "TransactionNotFound" (e.g., 4040010) error, the backend automatically retries the request using the Sandbox API. Is this automatic fallback from Production to Sandbox considered a safe and recommended practice by Apple, especially for App Store reviews and post-release testing? Any advice or insights on backend transition timing and fallback strategies would be highly appreciated. Thank you!
Replies
0
Boosts
0
Views
113
Activity
Sep ’26
Is dynamic fallback to Sandbox API correct when receiving error 4040010 (TransactionIdNotFoundError) during App Review?
Hi, During the App Review process, a test purchase was made using what appeared to be a production Apple account. When our app server sent this transactionId to the Production App Store Server API, it returned the error code 4040010 (TransactionIdNotFoundError). To handle this gracefully and prevent review rejections, we are considering implementing a dynamic fallback mechanism on our app server. Specifically, when the Production API returns 4040010, the server will automatically retry the request using the Sandbox App Store Server API URL. Could you please clarify the following points regarding this design? Is it expected behavior for an App Review purchase to return 4040010 on the Production API, and can it be successfully verified by routing it to the Sandbox API? Is this dynamic fallback logic (Production API ➔ if 4040010 ➔ Sandbox API) a recommended and officially supported best practice for handling App Review and TestFlight transactions? Any confirmation or advice from Apple engineers or the community would be greatly appreciated.Thank you.
Replies
0
Boosts
0
Views
95
Activity
Sep ’26
App Store Rejection - REAL MONEY GAMBLING
Guideline 2.3.6 - Performance - Accurate Metadata Issue Description Please note that the app includes tips, tools, predictions or other information related to real money gambling, real money betting, or real money skill-based gaming, you must select "Yes" for "Gambling" in App Store Connect. Apps must be rated accordingly for the highest level of content that the user is able to access in the app. Next Steps Update the Age Rating selections in App Store Connect to select "Yes" for "Gambling." The Age Rating selections can be found on the App Information page after selecting the app in App Store Connect. I have had multiple releases with just having "Social Gaming" Set to Frequent as my app has wagering in it but can NEVER be exchanged for real currency which puts it in the bucket of SOCIAL GAMBLING/WAGERING. This reviewer has no idea how to interpret what Guideline 2.3.6 actually means and this reviewer keeps rejecting my app..... Apple can you please change the reviewer with someone who actually can comprehend what the guidelines means. Because in my privacy and tos I specifically state the words gambling and no in-game exchange or out of game exchange for real currency can occur - not sure why I fail the guideline only this ONE TIME because this reviewer cannot understand what the guideline means. This is holding up my app release for the gazilianth time and costing yourselves and myself money. APP ID : 6767430745
Replies
1
Boosts
0
Views
356
Activity
Sep ’26
Discrepancy between App Store Server API expiresDate (localized) and iOS Settings Subscriptions UI
Hello everyone, I am encountering a persistent date discrepancy between the subscription expiration date returned by the App Store Server API and the date displayed to the user in the native iOS Settings UI. Our app receives the renewal timestamp via the App Store Server Notifications in UTC milliseconds. For a recent transaction, we received renewalDate = 1820988823000, which is September 15, 2027, at 06:13 AM UTC. Following standard practices, our app formats this UTC timestamp to the user's local device timezone. On a device set to India Standard Time (IST, UTC+5:30), the app correctly displays the expiration as September 15. However, on the exact same device, navigating to iOS Settings > Apple ID > Subscriptions shows the expiration date as September 14. Converting 06:13 AM UTC to Pacific Time (PT) results in September 14 at 11:13 PM PDT. This leads me to suspect that the iOS Settings page anchors its display strictly to Cupertino/Pacific Time, completely bypassing the device's local timezone. I noticed another developer raised this exact issue regarding KST back in September 2025 (Thread ID: 800332), but that post remains unanswered. My questions for the community and Apple Engineers: Can anyone officially confirm if the native iOS Settings > Subscriptions screen intentionally displays dates anchored strictly to Pacific Time (PT) rather than the device's local timezone? If so, how are you handling user inquiries when your app correctly displays the local time, but Apple's UI displays the day prior? Any official references or guidance on this behavior would be greatly appreciated to help us clarify this for our QA teams and end-users.
Replies
0
Boosts
0
Views
257
Activity
Sep ’26
ASSN V2: purchaseDate ~8 hours later than signedDate inside the same Apple-signed JWS (FB24820430)
Following the guidance in the locked thread "Reporting your App Store Server Notifications issue" (https://developer.apple.com/forums/thread/774053) and a DTS support request on the same topic, I am posting this issue with the Feedback Assistant ID requested there: FB24820430. Summary: This is a content anomaly in Apple-signed App Store Server payloads, not a notification delivery problem — our server receives and verifies every notification; the defect is in the field values themselves. For a stable subset of subscription families, purchaseDate in JWSTransactionDecodedPayload is consistently ~8 hours later than the signedDate of the very same JWS — a purchase recorded as happening after the signed document reporting it existed. Reproducible field comparison inside one and the same Apple-signed JWS: Field relation Affected transactions Unaffected (control) transactions purchaseDate − signedDate +7h54m … +7h59m (never ≤ 0) ≈ 0 (seconds) Webhook arrival at our server ≈ signedDate (seconds to minutes), never ≈ purchaseDate ≈ signedDate originalPurchaseDate carries the same ~8h shift (renewals inherit it) no shift expiresDate − purchaseDate exactly one subscription period exactly one subscription period expiresDate − signedDate period + ~8h period All fields are documented as "UNIX time, in milliseconds". Our iOS client passes StoreKit 2 Transaction.purchaseDate through unmodified; our backend stores the epoch-millisecond values verbatim as UTC with no timezone conversion. These payloads are generated and signed by Apple infrastructure. Scale (production, as of 2026-09-14): ≈710 subscription families (distinct originalTransactionId lineages), ≈2,700 transactions — roughly three quarters of all families with renewals. Affected purchases span early March 2026 to present, ~30–45 new affected transactions per day. Observed across US, PH, ID and GB storefronts and across app build versions. Sandbox is unaffected. Our interpretation (inference, not confirmed): the offset varies between 7h54m and 7h59m rather than being exactly 8h, consistent with a local wall-clock time in a UTC+8 environment having been encoded as if it were UTC when the original transaction record was created, then inherited by all renewals of that family. Questions for Apple engineers: Is this a known issue in App Store Server data, and is there a reference we can track? What conditions cause a family's purchaseDate to be recorded this way (storefronts/regions, purchase channels, offer types, original-receipt formats)? When purchaseDate and signedDate disagree, which field is authoritative for "when the customer was charged"? The public documentation defines each field only as "UNIX time, in milliseconds" and does not define its relationship. Is remediation planned on Apple's side, or what is the recommended way to obtain the true charge time? Evidence: A focused sample project (a ~85-line Swift tool plus four unmodified signedTransactionInfo JWS samples — three affected families and one unaffected control, each carrying Apple's x5c certificate chain) is included in Feedback Assistant report FB24820430, together with the raw HTTP notification bodies for an affected and a control notification, exactly as delivered to our endpoint. Thank you.
Replies
1
Boosts
0
Views
405
Activity
Sep ’26
Retention Messaging in App Store Connect
I reached out to Apple Developer Support and they directed me to the forums. This video "Explore Retention Messaging in App Store Connect" shows a "Retention Messaging" section at the 3:21 timestamp of the video, within "Subscriptions" below the "Billing Grace Period" section. For the apps in our account, there is no "Retention Messaging" section available within the Subscriptions area. I am not asking about the API. I do not believe the API is required in order to have the Retention Messaging section show up in App Store Connect. In the video, the speaker says “I'll share an overview of Retention Messaging, and how to set it up in App Store Connect” and she shows how to navigate there. While she explains that “Real-time Retention Messaging is powered by the Retention Messaging API” - she also says that you can “create the same views using real-time Retention Messaging as you can when using retention messages in App Store Connect.” Is there something that we need to do in order to get access to this area of App Store Connect so we can set up Retention Messaging? Thank you so much.
Replies
0
Boosts
3
Views
394
Activity
Sep ’26
Request a Test Notification returns 401 with an active In-App Purchase key and Apple Java Server Library
Hello Apple Developer Forums, We are unable to authorize the Production App Store Server API Request a Test Notification endpoint. Environment: Production API: Request a Test Notification Library: Apple App Store Server Library for Java 5.2.0 Client: AppStoreServerAPIClient Result: HTTP 401 Unauthorized before a testNotificationToken is returned. We have verified the following: The key is an active In-App Purchase key created in App Store Connect under Users and Access > Integrations > In-App Purchase. The production server uses the matching .p8 private key, Key ID, Issuer ID, and bundle ID. The bundle ID is com.ansio.serviceproof.ios. The server clock is NTP-synchronized. The request uses the official Apple Java Server Library rather than a manually generated JWT. We rotated the production In-App Purchase key once and received the same 401 result. The notification URL is configured for the Production environment, uses HTTPS, and is reachable. Sandbox uses an independent key and notification configuration. We intentionally do not include the private key, JWT, Key ID, or Issuer ID publicly. According to the documentation, HTTP 401 means the JWT is invalid. Since the official library creates the JWT and the active In-App Purchase key configuration has been verified, could Apple clarify: Is any additional App Store Connect role, agreement, team activation, or entitlement required for a Production In-App Purchase key to authorize App Store Server API requests? Is there a known propagation or authorization issue that can cause a newly created active In-App Purchase key to return 401? What non-sensitive diagnostic details can help distinguish a JWT construction issue from a team-level authorization issue? Thank you.
Replies
0
Boosts
0
Views
163
Activity
Sep ’26
Every subscription renewal fails with expirationIntent 2 (billing error): 4 of 4 free-trial conversions in 48h, no renewal has ever succeeded, initial purchases work (FB24877994)
Following the guidance in the locked thread "Reporting your App Store Server Notifications issue" (thread 774053), Feedback ID: FB24877994. Apple Developer Support case 102971044266 is open in parallel. Summary On our account no auto-renewable subscription renewal has ever succeeded, on either of our two products, while every customer-present initial purchase succeeds. In the last 48 hours 4 of 4 free trials that reached their renewal date with auto-renew ON failed with expirationIntent 2, in four countries (PK, GB, NL, US). What we observe Yearly product with a 7-day free introductory offer (all 175 territories, offerMode FREE_TRIAL, ONE_WEEK, 1 period). Monthly product with no offer. For each of the four, GET /inApps/v1/subscriptions/{originalTransactionId} returns status 3, and the renewal info has autoRenewStatus 1, expirationIntent 2, isInBillingRetryPeriod true, the correct renewalPrice and currency, no priceIncreaseStatus. Environment Production, inAppOwnershipType PURCHASED. The DID_FAIL_TO_RENEW notification (no subtype; billing grace period not enabled) arrives at the expiry time in each case. App Store Connect subscription events from 2026-08-01 to 2026-09-20: 18 free trial starts, 6 full-price starts, 4 voluntary churns from free trial, 4 from full price, 3 "Billing retry from free trial", 1 "Involuntary churn from full price", and no renewal event of any kind. So 5 of 5 unattended renewal charges ever attempted have failed, across two products and five countries, while the 6 paid monthly purchases in the same window (TR, FR, AU, MN, US) were charged normally at purchase time. The customers are in their own storefront countries (device time zones match), and none of the four cancelled. What we have verified Both products Approved, 175 price rows each, no scheduled or preserved prices; Paid Applications Agreement, Free Apps Agreement, banking, tax forms and both compliance items (DSA, MRDP) all show Active with nothing pending in App Store Connect > Business; our servers call no App Store Server API endpoint that modifies a subscription. Thread 847338 (posted today) describes every renewal on an account failing after an agreement issue, with expirationIntent 5. Ours is expirationIntent 2 and our agreements show Active, but the shape is the same: every renewal, no purchase affected. Questions for Apple engineers Is there any account, agreement or product condition that causes renewal charges to fail with expirationIntent 2 while initial purchases succeed? Is anything more than expirationIntent 2 available about these four renewals? The four original transaction IDs are in FB24877994. Is there a known issue affecting free-trial-to-paid renewals around 19 to 21 September 2026? Thank you.
Replies
0
Boosts
0
Views
182
Activity
Sep ’26
Advanced Commerce API access request — no response after two submissions (Request ID: UVQ7FUZVV3)
Hello, I'm the developer of FOS Social (Apple ID: 6755471015), a creator-membership marketplace currently in TestFlight. I've submitted the Advanced Commerce API access request form twice and have not received any response, confirmation, or status update. My most recent submission has Request ID: UVQ7FUZVV3. Our use case: FOS Social is a social platform where viewers subscribe to individual content creators through independent auto-renewable monthly subscriptions across three tiers ($10 / $17 / $29). A single viewer must be able to hold concurrent active subscriptions to multiple creators at the same tier — for example, subscribed to Creator A at Gold and Creator B at Gold simultaneously. This matches Apple's stated eligibility model for the Advanced Commerce API: "exceptionally large catalogs of subscription content — apps that include frequently added content from multiple creators, where each creator's offering is merchandised as a single auto-renewable subscription." Why standard StoreKit doesn't work for us: We currently reuse one product ID per tier across all creators (e.g. com.fosssocial.creator.gold.monthly). When a viewer already subscribed to one creator at Gold tries to subscribe to a second creator at Gold, StoreKit returns "already subscribed" and treats it as a renewal rather than a new independent subscription. Pre-creating a separate subscription group per creator in App Store Connect is not feasible since our creator base is dynamic and growing. My questions: Is there any way to check the status of an Advanced Commerce API access request, or a typical response timeframe we should expect? Is there anything that commonly causes these requests to go unanswered (e.g. submission not made by the Account Holder, app still in TestFlight, missing information)? Is there a recommended escalation path when the request form has been submitted multiple times with no reply? I've also opened a support case (Case ID: 102934491974) but wanted to ask here as well in case anyone from the community or Apple has guidance. Thank you!
Replies
2
Boosts
0
Views
715
Activity
Sep ’26
All auto-renewable subscriptions returning expirationIntent = 5 after resolving an agreement issue (StoreKit 1 and StoreKit 2)
Hello, We are currently seeing errors when validating receipts for every auto-renewable subscription purchased through both StoreKit 1 and StoreKit 2. Details below. Case 1 — StoreKit 1 Calling https://buy.itunes.apple.com/verifyReceipt with the subscription receipt returns: "status": 21006, "expiration_intent": "5" Case 2 — StoreKit 2 Calling https://api.storekit.itunes.apple.com/inApps/v1/subscriptions and reading the most recent transaction (LastTransactionsItem) returns status 3. Within JWSRenewalInfoDecodedPayload: autoRenewStatus = 1, expirationIntent = 5 Timeline We believe renewals stopped processing for essentially all auto-renewing subscribers of our app as of 2026-09-18 09:30 KST (UTC+9). After resolving an agreement/licensing issue on our side, new purchases and some receipt validations recovered as of 2026-09-21 11:49 KST. However, most existing receipts still return expirationIntent = 5 when we query receipt validation or subscription status. Questions Is any action required on our side — a server-side change, a configuration change in App Store Connect, or a further review of our agreements? Now that the agreement issue is resolved, when are the renewals that were left pending during the outage expected to be processed? Any guidance would be appreciated. Thank you.
Replies
0
Boosts
0
Views
261
Activity
Sep ’26
Does a personalized invitation PDF creation service require Apple IAP?
Hi everyone, I'm planning an iOS app that provides a personalized invitation-card creation service, and I'm trying to determine the correct payment method before starting development. The flow would be: User selects an invitation template. User enters their event/invitation details. The app generates a watermarked preview. User proceeds to checkout. User pays for the creation of the final personalized PDF. After successful payment, our backend places the request into a processing queue. The PDF is generated asynchronously on our server. Once completed, the user receives a notification and can download the final PDF. The purchase does not unlock an app feature, subscription, membership, or ongoing access to digital content. The user is paying for a specific personalized invitation document to be generated based on their selected template and information. Each template can have a different price. My question is: Would this type of personalized document-generation service be required to use Apple's In-App Purchase, or could an external payment processor such as Razorpay be used? I have reviewed the App Store Review Guidelines, particularly the sections concerning In-App Purchase and physical goods/services, but I'm not certain how Apple classifies a personalized digital document-generation service like this. If anyone has implemented a similar business model or can point me to the relevant Apple guideline or an official Apple clarification, I would really appreciate it. I'm asking before development so that the payment architecture can be designed correctly from the beginning. Thanks!
Replies
0
Boosts
0
Views
277
Activity
Sep ’26
Does a personalized invitation PDF creation service require Apple IAP?
Hi everyone, I'm planning an iOS app that provides a personalized invitation-card creation service, and I'm trying to determine the correct payment method before starting development. The flow would be: User selects an invitation template. User enters their event/invitation details. The app generates a watermarked preview. User proceeds to checkout. User pays for the creation of the final personalized PDF. After successful payment, our backend places the request into a processing queue. The PDF is generated asynchronously on our server. Once completed, the user receives a notification and can download the final PDF. The purchase does not unlock an app feature, subscription, membership, or ongoing access to digital content. The user is paying for a specific personalized invitation document to be generated based on their selected template and information. Each template can have a different price. My question is: Would this type of personalized document-generation service be required to use Apple's In-App Purchase, or could an external payment processor such as Razorpay be used? I have reviewed the App Store Review Guidelines, particularly the sections concerning In-App Purchase and physical goods/services, but I'm not certain how Apple classifies a personalized digital document-generation service like this. If anyone has implemented a similar business model or can point me to the relevant Apple guideline or an official Apple clarification, I would really appreciate it. I'm asking before development so that the payment architecture can be designed correctly from the beginning. Thanks!
Replies
0
Boosts
0
Views
179
Activity
Sep ’26
StoreKit says purchase succeeded but didn't, AppStore.sync() throws error Unable to Complete Request
One user of my app reached out reporting an interesting in-app purchase issue. Has anyone encountered this or have an idea what's going on here? Proceed to purchase the non-consumable IAP in the app downloaded from the App Store iOS shows the price sheet as expected Confirm with the side button iOS shows an alert "You've already purchased this. Would you like to get it again for free?" Tap OK iOS shows an alert "You're all set. Your purchase was successful." Tap OK The app's content remains locked Tap Restore Purchases iOS shows an alert to sign (with the same account shown in step 2) Input the password and tap OK iOS shows an alert "Unable to Complete Request" (which is the error.localizedDescription thrown from AppStore.sync())
Replies
3
Boosts
0
Views
413
Activity
Sep ’26
App rejected repeatedly: Subscriptions fail to load in Review but work perfectly in TestFlight
To the Apple Review and Developer Support Teams, I am writing to request guidance and assistance regarding a persistent rejection my React Native application is facing under Guideline 2.1 - Performance (In-App Purchases). My app has been rejected multiple times with the following specific note: "The In-App Purchase products in the app still exhibited one or more bugs which create a poor user experience. Specifically, the subscription screen failed to load any subscription plans. Review the details and resources below to troubleshoot this issue." The screenshot provided by the review team shows a completely black screen where our paywall options are intended to populate, indicating that the product array is returning completely empty during the review process. The Dilemma: We are completely unable to reproduce this behavior on our end. Everything functions flawlessly within our TestFlight builds across multiple physical test devices and various sandbox tester accounts. On TestFlight, the paywall renders instantly, local pricing fetches immediately via SKProductsRequest, and test transactions process without a single error. Our Current Implementation & Verification: Product Status: All subscription products are explicitly marked as "Waiting for Review" in App Store Connect with one In-App product Rejected for not being attached with a bin but I've since submitted the app once again. All the subscriptions and the in-app product have been actively attached to this specific app submission version. Agreements: The Paid Apps Agreement is active, signed, and fully up to date within our Agreements, Tax, and Banking configurations. Identifiers: We have strictly verified that the hardcoded product identifiers in our React Native codebase match the App Store Connect product IDs exactly. Because this error only occurs within the App Review environment and never in TestFlight or local sandboxes, we are at a loss for how to debug or resolve this issue. Could the App Review team or the Developer Support technical team please clarify if there is a known environment mismatch, storefront routing discrepancy, or specific network configuration (such as IPv6 handling in the review sandbox) that would cause production-ready StoreKit products to return an empty array exclusively to the reviewer? Any direct guidance, logs, or steps on how we can successfully surface our plans to your review team would be deeply appreciated. Review Environment Submission ID: 5a35279c-1621-4972-b6c6-7c1fb202b2f0 Review date: May 20, 2026 Review Device: iPad Air 11-inch (M3) Version reviewed: 1.0.2 (8) Thank you for your time and assistance.
Replies
5
Boosts
1
Views
1.2k
Activity
Sep ’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
5
Boosts
2
Views
1.6k
Activity
Sep ’26
Unable to submit older IAPs/subscriptions for review - “older format not supported”
I’m unable to add several older In-App Purchases and auto-renewable subscriptions to an App Review submission in App Store Connect. The UI only shows: Unable to Add for Review Something went wrong. Try again. However, checking the failed reviewSubmissionItems requests in the browser dev tools shows HTTP 409 responses indicating that the existing IAP/subscription versions use an older format that is no longer supported for review submission. The affected errors include: STATE_ERROR.SUBSCRIPTION_VERSION_NOT_SUPPORTED Subscription version '[REDACTED]' is using an older format that is not supported for review submission. Please update before submitting. STATE_ERROR.SUBSCRIPTION_GROUP_VERSION_NOT_SUPPORTED Subscription group version '[REDACTED]' is using an older format that is not supported for review submission. Please update before submitting. STATE_ERROR.IAP_VERSION_DATA_SCHEMA_NOT_SUPPORTED In-app purchase version '[REDACTED]' is using an older format that is not supported for review submission. Please update before submitting. In my case, this affects: 3 older subscription versions 1 subscription group version 1 older IAP version All required metadata in App Store Connect is complete. The interesting part is that I can create a new IAP today and add it to the same review submission successfully. Only the older IAP/subscription records fail. I can’t find any option in App Store Connect to “update” or migrate these legacy versions to the newer format referenced by the error message. Has anyone found a self-service way to migrate/regenerate these older IAP/subscription versions, or does this require Apple to update the records server-side? I’ve already opened a support case with Apple (ID: 102963040418), but wanted to check whether others are seeing the same issue.
Replies
1
Boosts
0
Views
671
Activity
Sep ’26
Subscriptions stuck in "Developer Rejected" after fixing 2.3.2 image issue — status won't clear, can't resubmit
Our build was rejected under Guideline 2.3.2 (Accurate Metadata) over subscription promotional images that were flagged as duplicates of, and too similar to, our app icon. The rejection was against the build, not the subscriptions directly. At the time, all five subscriptions plus the subscription group were in "Submitted for Review" status, which meant they couldn't be edited directly. Troubleshooting steps taken so far: Developer-cancelled each of the five subscriptions to get them out of "Submitted for Review" and into an editable state. Edited each subscription to remove the promotional image that triggered the 2.3.2 flag. Made changes to the Localization and Review Information fields on each subscription to force a new Save action. The Save completed successfully with no errors on any of the five subscriptions. After this, all five subscriptions and the subscription group are showing "Removed" from the Review Status column of our iOS submission. However, "Developer Rejected" status still shows in the Subscriptions section of Monitization (ASC->Distribution). That status hasn't cleared despite the successful edit and save, and I'm not able to reattach the subscriptions to a build for a new review submission from this state. Has anyone run into this — a subscription that was developer-cancelled, corrected, and successfully saved, but remains stuck on "Developer Rejected" instead of returning to a submittable state? Is there a separate action needed beyond edit-and-save (e.g., a distinct resubmit step, or removing and recreating the subscription) to move it forward from here? Any guidance on the correct path would be appreciated — happy to provide additional screenshots or details if useful.
Replies
0
Boosts
0
Views
276
Activity
Sep ’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
1
Boosts
0
Views
915
Activity
Sep ’26
In-App Purchase product not returned by StoreKit despite complete, correct configuration
App name: Hold My Bouquet Bundle ID: com.holdmybouquet.app App Store Connect App ID: 6807080553 In-App Purchase Product ID: com.holdmybouquet.app.page_unlock (Non-Consumable, £3.99) Our app was rejected on Guideline 2.1 because the reviewer could not complete this in-app purchase. Since the rejection, we have verified and corrected every configuration item we can control, but the purchase still fails identically in sandbox testing on a physical device. Confirmed correct: Paid Applications Agreement: Active com.holdmybouquet.app.page_unlock: status "Ready to Submit," Cleared for Sale, pricing and availability set Bundle ID matches exactly across Xcode, App Store Connect, and our purchase provider (RevenueCat) Product ID matches exactly, no typos or case mismatches Sandbox tester account verified and signed in on-device (Settings → Developer → Sandbox Account) No local StoreKit Configuration file overriding real data (confirmed "None" in the Xcode scheme) To rule out our purchase provider entirely, we bypassed it and called Apple's native StoreKit 2 API directly from the app: let products = try await Product.products(for: ["com.holdmybouquet.app.page_unlock"]) This also returns zero products, with no error — confirming the issue is not a third-party SDK integration problem. Has anyone seen this before, or can anyone from Apple advise what else to check? We are otherwise ready to resubmit for review.
Replies
2
Boosts
0
Views
429
Activity
Sep ’26