Subscriptions

RSS for tag

Give users access to content, services, or premium features in your app on an ongoing basis with subscriptions, a type of in-app purchase.

Posts under Subscriptions tag

200 Posts

Post

Replies

Boosts

Views

Activity

In-App Purchases section missing in App Store Connect for new version submission (subscriptions)
Hi everyone, I am experiencing an issue with App Store Connect and subscriptions. My app (Couple Organizer, App ID: 6748842796) already has an approved subscription group (Premium Plans) with Monthly and Yearly Premium options. Version 1.0.0 is live in the App Store, subscriptions are working. But - When preparing version 1.1.0 for submission the “In-App Purchases and Subscriptions” section is not visible on the submission page so I am unable to attach them to the new version of the app. I tried removing the build from review and re-adding another one but the section still does not appear. Subscriptions show status approved and ready for sale . My questions: Are subscriptions automatically carried forward to new app versions once approved in the first release? Or is there a step I’m missing to explicitly attach them again in every new version? Is this the expected behavior, or is it a bug in App Store Connect UI? Screenshots available if needed. Any advice would be appreciated!
2
0
249
8h
Testing IAP in sandbox (sandbox - testflight)
Hi all ! I'm a new developer on iOs and I' struggling to get my IAP subscription working in sandbox. I've got it working in debug mode on my test env, where I purposely activate the subscription when in my test backend. So that part works. But now, I want to test in testflight with sandbox user credentials. And I see conflicting instructions. My developer account has accepted the Paid Apps Agreement. I've created a subscription group with localized description in both language my app supports. In that group, I've created 2 products with description, duration, pricing, localized name and description and a review screenshot. At that stage, the subscription is at the state "ready to submit". From what I read, I then need to submit them as part of a version submission to activate the IAP. So I did. But then the app was rejected because IAP don't work. I later found out that I need to attach the IAP to the submission, but I couldn't do it, because the IAP where now in "developer action needed". And even after modifying them to reset the state of the localization, the locale are pending submit, but the subscription is still in developer action needed. So in the end, I re-created 2 new subscriptions (with 2 new product ids). At this point, I see posts and replies in reddit and other places that specifically says that the IAP need to be reviewed and approved by apple to be usable in sandbox. But I also see others that specifically says the opposite, that the IAP only need to be in ready to submit. So which is it ? If I submit again the app, I'll end up with subscriptions that are unusable that I can't get back to ready to submit without sending them for review. Thanks for any hints !
1
0
19
10h
Stuck submitting subscription for review
We are stuck in AppStoreConnect limbo. We have a new subscription group + two Subscriptions in Ready To Review state in appstoreconnect, but Apple Review rejected our latest app version because they weren't included with the version. Our app version has been rejected for a few issues before this which maybe broke something. When I go to edit the version, there is no Subscriptions & Purchases section to add them for review. I tried editing the subscriptions and subscription group localization to see if that got it out of Waiting For Review state or showed the version section but no luck. So we can't add the Subscriptions for review and we are rejected from App Review if we don't. I submitted an Apple support email 8 days ago and haven't received any response. Does anyone know of a way to get this unblocked?
4
0
43
12h
In-App Purchases “Waiting for Review” but not available during App Review (subscriptions unavailable)
Hi everyone, I’m stuck in the App Review process with In-App Purchases (subscriptions) and would really appreciate some guidance. Situation: I have an app with subscriptions (Premium Monthly and Premium Yearly) Both subscriptions are in “Waiting for Review” status I submitted a new app version for review Issue: The app was rejected with: “subscriptions were unavailable at time of review” Before that, I also received a rejection saying the reviewer could not locate the In-App Purchases. What’s confusing: Subscriptions are not yet approved (still “Waiting for Review”) In the current app version page, I do not see the “In-App Purchases” section at all, so I cannot confirm whether they are attached to this build The app correctly loads products via StoreKit, but returns empty when products are not available Questions: Do subscriptions need to be approved before they can be used during app review? Should I reject the current version and resubmit while manually attaching the subscriptions? Is it expected that the “In-App Purchases” section is missing from the version page in this case? Has anyone experienced this “subscriptions unavailable” issue while IAPs are still “Waiting for Review”? I feel like I’m stuck in a loop where: The app needs IAP to pass review But IAP are not available yet during review Any advice on the correct process would be greatly appreciated. Thanks!
1
0
21
13h
Technical Inquiry: User-Centric Accounting and Multiple Concurrent Subscriptions
We are developing a platform (Ferve) where users subscribe to individual artists to access exclusive content. We use a user-centric remuneration model: each artist has an independent income pool, and funds from a specific subscription must be attributed solely to that artist. We have two critical challenges regarding our integration: Granular Financial Reporting for User-Centric Payouts As the Merchant of Record, Apple provides aggregate Financial Reports. However, these reports do not provide a breakdown of taxes, commissions, or exact exchange rates used for individual transactionId records. Though we can keep records of each transaction in our database, thus linking them with which artist they belong to, we are unable to collect fees/taxes applied to each individual transaction. Because our payouts are artist-specific, we need to deduct the exact regional taxes and Apple commissions from each transaction to calculate the artist's due balance. Currently, we can only see the final consolidated balance in BRL (Brazilian Reals) at the end of the month. Is there an API or report that provides the net proceeds and tax breakdown per transaction ID? How can we retrieve the exact exchange rate applied to foreign currency sales (e.g., EUR to BRL) before the final consolidation? Supporting Multiple Concurrent Subscriptions Our current App Store Connect configuration uses a single 'Subscription Group' for all artist 'Clubs' since they share the same price points. However, we have found that users cannot subscribe to more than one product within the same group simultaneously (the App Store treats this as an upgrade/downgrade). On our platform, a user must be able to subscribe to Artist A and Artist B at the same time. What is the recommended architecture for this? Should we dynamically create a unique Subscription Group for every artist onboarded to our platform? If we use unique groups, is there a limit to the number of Subscription Groups one app can have? We appreciate the help, Ferve
1
0
169
1d
Auto-renewable subscriptions stuck in “Missing Metadata” with all fields completed
Hello, I’m experiencing an issue with auto-renewable subscriptions in App Store Connect and would appreciate any guidance. I have created two subscriptions (monthly and yearly), and all required metadata appears to be fully completed: pricing (price tiers set and saved) availability (countries selected) localization (titles and descriptions added) App Review screenshot uploaded However, both subscriptions remain in the “Missing Metadata” status, and the “Submit for Review” option is not available. Because of this, I am unable to attach the subscriptions to my app version and proceed with App Review (Guideline 2.1(b) - App Completeness). What I have already tried: re-saving all fields multiple times re-uploading the App Review screenshot verifying pricing and availability checking localization reviewing introductory offers The issue persists. Has anyone encountered this before or knows what might be causing this status, even when all fields seem complete? Any help would be greatly appreciated. Thank you!
2
0
70
3d
Unexpected appAccountToken mutation in JWSRenewalInfo during in-app crossgrade
Hello Apple Developer Support / StoreKit Team, We recently observed a behavior regarding the appAccountToken in App Store Server Notifications v2 that seems to completely contradict the official documentation. According to the Set App Account Token documentation: The same appAccountToken continues to apply to renewal transactions if the customer upgrades, downgrades, or cross-grades the subscription. However, we encountered a scenario where an active in-app crossgrade resulted in an updated/overwritten appAccountToken inside the subsequent JWSRenewalInfoDecodedPayload, despite our backend never calling the Set App Account Token REST API. Our Observation: A user subscribes to our 1-month plan (Product A). Apple generates an originalTransactionId bound to their initial appAccountToken (Token A). Later, a crossgrade to a 1-year plan (Product B) is initiated from within the app while the user is logged into a different account in our system (Token B), but using the same underlying Apple ID on the device. When the crossgrade takes effect at the next renewal date, we receive a DID_RENEW webhook. The Anomaly (See Attached Screenshots): Upon decoding the JWSRenewalInfoDecodedPayload from the webhook, we noticed that the appAccountToken had unexpectedly changed to the new token (Token B). As shown in the attached redacted screenshots: Screenshot 1 (Before/Original): JWSRenewalInfoDecodedPayload for Product 00001 shows the appAccountToken ending in ...e9a. Screenshot 2 (After Crossgrade): JWSRenewalInfoDecodedPayload for Product yearly_saver shows the appAccountToken has mutated to ending in ...507, even though the originalTransactionId remains exactly the same. To reiterate, our server did not call the POST /inApps/v1/subscriptions/appAccountToken/{originalTransactionId} endpoint to manually overwrite this token at any point. Our Questions: Is this the intended StoreKit 2 behavior? Does Apple automatically overwrite the base appAccountToken in the RenewalInfo if a new token is somehow associated during an active in-app crossgrade transaction? If this is intended, could the documentation be clarified? The current phrasing strongly suggests the token is permanently locked to the initial purchase and will never change during crossgrades unless the REST API is explicitly called. While this behavior is actually quite helpful for our backend to track multi-account users, we want to ensure we aren't relying on an undocumented bug that might be patched unexpectedly. Any insights from the StoreKit engineering team would be highly appreciated. Thank you!
0
0
30
3d
Recent 502 errors on the verifyReceipt API
Recently we are seeing 502 errors on the receipt validating API, documented here: https://developer.apple.com/documentation/appstorereceipts/verify-receipt 502 Bad Gateway: "<html><EOL><EOL><head><title>502 Bad Gateway</title></head><EOL><EOL><body><EOL><EOL><center><h1>502 Bad Gateway</h1></center><EOL><EOL><hr><center>Apple</center><EOL><EOL></body><EOL><EOL></html><EOL><EOL>" Here are logs of the occurrences: ・2026/03/20 17:03:21 - 17:04:41:10 cases ・2026/03/22 01:44:33:1 case ・2026/03/22 15:03:02:1 case ・2026/03/24 17:05:08 - 17:20:53:62 cases ・2026/03/25 06:34:56 - 06:37:21:18 cases Has anyone else seen problems like these recently? We are planning to move to the newer (non-deprecated) APIs, but are expecting that to take "a minute".
1
1
95
4d
Stuck with subscription review
I've published my app with subscriptions (app changed from paid to subscription model). I've have succesfully pass review process and app was published to App Store without subscription store, so no one can buy app (still working as paid, but will expire in few days forcing users to subscribe). I want to attach subscriptions to new build, but I can't - there are no options mentioned in documentation. I'm stuck. There is no any contact point to review team. I've created 3 cases, nobody reads them (oldest 3 weeks). The whole approval process looks broken, Apple team shouldn't approve app with subscriptions without subscriptions added to review. I must immediately publish my app with critical fixes, but I can't. I am devastated, i don't know what to do...
4
0
131
1w
how to disable streamline purchasing
how to disable streamline purchasing, when I click turn off, it show error Streamlined purchasing cannot be turned off because your latest approved binary doesn’t include the required StoreKit APIs My app has subscribe button to click before start to use though not need to login, chatgpt had done the store kit and subscription part, do not understand why it can not turn off streamlined purchasing
1
0
59
1w
Transaction.currentEntitlements sometimes does not emit a result until device is reboot
I have the typical StoreKit 2 manager class, where I check currentEntitlements for subscription. I have filed a feedback (FB22349195), I hope someone can take a look at it. func updateCustomerProductStatus() async { var activeSubscription: String? = nil // BUG: In some cases the currentEntitlements does not emit a transaction until the device is reboot for await result in Transaction.currentEntitlements { print("Found transaction: \(result)") // This print does not appear until a restart! do { let transaction = try checkVerified(result) // Skip revoked transactions if transaction.revocationDate != nil { print("Skipping revoked transaction for \(transaction.productID)") continue } // Skip expired subscriptions if let expirationDate = transaction.expirationDate, expirationDate < Date() { print("Skipping expired subscription for \(transaction.productID)") continue } // Check product type switch transaction.productType { case .autoRenewable: activeSubscription = transaction.productID default: break } } catch { print("Unable to verify transaction: \(error)") } } // Update state once after processing all entitlements self.activeSubscription = activeSubscription print("updateCustomerProductStatus() activeSubscription: \(activeSubscription ?? "nil")") } There is some unexpected behavior where the currentEntitlements does not emit a result until the iPhone device is reboot. This bug appeared in iOS 26.4 (and in the betas).
0
1
62
1w
how to turn off streamlined purchasing
how to disable streamline purchasing, when I click turn off, it show error Streamlined purchasing cannot be turned off because your latest approved binary doesn’t include the required StoreKit APIs My app has subscribe button to click before start to use though not need to login, chatgpt had done the store kit and subscription part, do not understand why it can not turn off streamlined purchasing
0
0
25
1w
Custom Capacitor 6 plugin with SPM: "plugin is not implemented on ios" despite being compiled
Hi everyone, I'm building an iOS app using Capacitor 6 with Swift Package Manager (SPM). I have a custom native plugin (AppleIAPPlugin) for StoreKit 2 In-App Purchases that lives in the App target (not as an SPM package). Despite compiling successfully, the JavaScript bridge throws: "AppleIAP" plugin is not implemented on ios Setup AppleIAPPlugin.swift: swift import Foundation import Capacitor import StoreKit @objc(AppleIAPPlugin) public class AppleIAPPlugin: CAPPlugin, CAPBridgedPlugin { public let identifier = "AppleIAPPlugin" public let jsName = "AppleIAP" public let pluginMethods: [CAPPluginMethod] = [ CAPPluginMethod(name: "getProducts", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "purchase", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "restorePurchases", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "getCurrentEntitlements", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "openManageSubscriptions", returnType: CAPPluginReturnPromise), ] @objc func getProducts(_ call: CAPPluginCall) { /* StoreKit 2 implementation */ } @objc func purchase(_ call: CAPPluginCall) { /* ... */ } // etc. } AppleIAPPlugin.m: objc #import <Foundation/Foundation.h> #import <Capacitor/Capacitor.h> CAP_PLUGIN(AppleIAPPlugin, "AppleIAP", CAP_PLUGIN_METHOD(getProducts, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(purchase, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(restorePurchases, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(getCurrentEntitlements, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(openManageSubscriptions, CAPPluginReturnPromise); ) MyBridgeViewController.swift (custom bridge to register the plugin): swift import UIKit import Capacitor class MyBridgeViewController: CAPBridgeViewController { override open func capacitorDidLoad() { bridge?.registerPluginType(AppleIAPPlugin.self) } } Main.storyboard points to MyBridgeViewController (module: App) instead of CAPBridgeViewController. TypeScript side: typescript import { registerPlugin } from "@capacitor/core"; export const AppleIAP = registerPlugin("AppleIAP"); What I've verified Both .swift and .m files are in the Xcode project's Compile Sources build phase nm on the compiled binary confirms OBJC_CLASS_$_AppleIAPPlugin symbol exists The build succeeds with zero errors Other SPM-based Capacitor plugins (Share, Media, NativeAudio) work fine — they have pluginMethods and jsName symbols in the binary; my custom plugin does NOT A bridging header (App-Bridging-Header.h) is configured with #import <Capacitor/Capacitor.h> What I've tried (all failed) .m file with CAP_PLUGIN macro only (no CAPBridgedPlugin in Swift) Added CAPBridgedPlugin protocol conformance to Swift class Created MyBridgeViewController subclass with registerPluginType() in capacitorDidLoad() Removed/added override public func load() method Added #import <Foundation/Foundation.h> to .m file Various bridging header configurations Multiple clean builds and derived data wipes Environment Xcode 16 Capacitor 6 (via SPM, binary xcframework) iOS 17+ deployment target Physical device testing (not simulator) Question How should a custom plugin in the App target be registered with Capacitor 6 when using SPM? The SPM-based plugins from node_modules get auto-discovered, but my custom plugin in the App target does not. Is there a step I'm missing to make registerPluginType() work, or should I structure my custom plugin as a local SPM package instead? Any guidance would be greatly appreciated.
1
0
37
1w
Transaction.currentEntitlements returning all transactions
[EDIT: Please ignore. Will delete in a second] Transaction.currentEntitlements is returning the complete history of transactions on a subscription product. I have a program with an In-App Purchase for a monthly subscription. I am testing with a local StoreKit file in Xcode. I configured the StoreKit test file to update every minute. When the program starts, I retrieve the current transactions from StoreKit to see if there is an active subscription. for await verificationResult in Transaction.currentEntitlements { guard case .verified(let transaction) = verificationResult else { continue } // update status for subscriptions This morning's testing is showing transactions for all transactions, both current and past. The current subscription renewal is sent plus all the past renewals that have expired. I thought in my previous testing that only one transaction (i.e., the latest/current) was sent per Product ID. Is this (all subscription transactions) the expected behavior, or should I file a bug report? Example debug output from Transaction.currentEntitlements loop (top transaction is the current one, but past expired ones are provided too; "DEBUG CURRENT ----" separates individual transactions): DEBUG CURRENT: getCurrentEntitlements BEGIN DEBUG CURRENT ---- DEBUG CURRENT: for product pro.monthly DEBUG CURRENT: Verified Reason: Renewal DEBUG CURRENT: Ownership: Purchased DEBUG CURRENT: Purchases: is good DEBUG CURRENT: signed date: 2026-03-26 17:37:12 +0000 DEBUG CURRENT: purchase date: 2026-03-26 17:36:24 +0000 DEBUG CURRENT: environment: Environment(rawValue: "Xcode") DEBUG CURRENT: store front: Storefront(countryCode: "USA", id: "143441", localeStorage: en_US (fixed en_US)) DEBUG CURRENT ---- DEBUG CURRENT: for product pro.monthly DEBUG CURRENT: Verified Reason: Renewal DEBUG CURRENT: Ownership: Purchased DEBUG CURRENT: Expired 2026-03-26 17:36:24 +0000 DEBUG CURRENT: signed date: 2026-03-26 17:35:25 +0000 DEBUG CURRENT: purchase date: 2026-03-26 17:35:24 +0000 DEBUG CURRENT: environment: Environment(rawValue: "Xcode") DEBUG CURRENT: store front: Storefront(countryCode: "USA", id: "143441", localeStorage: en_US (fixed en_US)) DEBUG CURRENT ---- DEBUG CURRENT: for product pro.monthly DEBUG CURRENT: Verified Reason: Renewal DEBUG CURRENT: Ownership: Purchased DEBUG CURRENT: Expired 2026-03-26 17:35:24 +0000 DEBUG CURRENT: signed date: 2026-03-26 17:34:25 +0000 DEBUG CURRENT: purchase date: 2026-03-26 17:34:24 +0000 DEBUG CURRENT: environment: Environment(rawValue: "Xcode") DEBUG CURRENT: store front: Storefront(countryCode: "USA", id: "143441", localeStorage: en_US (fixed en_US))
1
0
40
1w
“In-App Purchases and Subscriptions” section on the version page not showing
I’m trying to submit my app for review, but I’m currently blocked due to a recurring issue with in-app subscriptions. Both of my auto-renewable subscriptions (premium_monthly and premium_yearly) are marked as “Waiting for Review”. However, I am still seeing the blue box stating that “your first subscription must be submitted with a new app version.” Despite creating a new version (1.0.1) and uploading/selecting a new build , I am not seeing the “In-App Purchases and Subscriptions” section on the version page, and I therefore cannot link the subscriptions before submitting. This issue is blocking my ability to submit the app for review. Any help to resolve this would be greatly appreciated.
3
0
175
1w
Purchase Error / storekit - subscription testing locally
Hello, I got Purchase Error Couldn’t communicate with a helper application. when button 'Buy Pro' clicked in my app it uses storekit subscription created (correct id in configuration.storekit) got this error in console: Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=5115 "Received failure in response from Xcode" UserInfo={NSDebugDescription=Received failure in response from Xcode, NSUnderlyingError=0xc5bc1c510 {Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service created from an endpoint was invalidated from this process." UserInfo={AMSDescription=An unknown error occurred. Please try again., AMSURL=http://localhost:49913/WebObjects/MZBuy.woa/wa/inAppBuy, NSDebugDescription=The connection to service created from an endpoint was invalidated from this process., AMSStatusCode=200, AMSServerPayload={ "app-list" = ( Thx for any help : )
0
0
52
1w
Your first subscription must be submitted with a new app version
I have been submitting the app multiple times and I keep getting rejected for: Guideline 2.1 - Performance - App Completeness Specifically, the in-app purchase is not available and the app is unresponsive when we tap the Upgrade button. I feel like I am stuck in a circle since it is showing me the pricing is unavailalbe on my subscription page. I have checked and it is wired correctly and works in the google play store. The issue is that my subriptions are not approved yet. But I can't get my subscriptions approved without the app being approved for the first time. So the Upgrade button cannot work, since the subscriptions are not approved, and they can't be approved without the app being approved. I can't test it in the sandbox, since the application is not approved. Anyone know what to do with this issue?
4
1
166
1w
In-App Purchases section missing in App Store Connect for new version submission (subscriptions)
Hi everyone, I am experiencing an issue with App Store Connect and subscriptions. My app (Couple Organizer, App ID: 6748842796) already has an approved subscription group (Premium Plans) with Monthly and Yearly Premium options. Version 1.0.0 is live in the App Store, subscriptions are working. But - When preparing version 1.1.0 for submission the “In-App Purchases and Subscriptions” section is not visible on the submission page so I am unable to attach them to the new version of the app. I tried removing the build from review and re-adding another one but the section still does not appear. Subscriptions show status approved and ready for sale . My questions: Are subscriptions automatically carried forward to new app versions once approved in the first release? Or is there a step I’m missing to explicitly attach them again in every new version? Is this the expected behavior, or is it a bug in App Store Connect UI? Screenshots available if needed. Any advice would be appreciated!
Replies
2
Boosts
0
Views
249
Activity
8h
Testing IAP in sandbox (sandbox - testflight)
Hi all ! I'm a new developer on iOs and I' struggling to get my IAP subscription working in sandbox. I've got it working in debug mode on my test env, where I purposely activate the subscription when in my test backend. So that part works. But now, I want to test in testflight with sandbox user credentials. And I see conflicting instructions. My developer account has accepted the Paid Apps Agreement. I've created a subscription group with localized description in both language my app supports. In that group, I've created 2 products with description, duration, pricing, localized name and description and a review screenshot. At that stage, the subscription is at the state "ready to submit". From what I read, I then need to submit them as part of a version submission to activate the IAP. So I did. But then the app was rejected because IAP don't work. I later found out that I need to attach the IAP to the submission, but I couldn't do it, because the IAP where now in "developer action needed". And even after modifying them to reset the state of the localization, the locale are pending submit, but the subscription is still in developer action needed. So in the end, I re-created 2 new subscriptions (with 2 new product ids). At this point, I see posts and replies in reddit and other places that specifically says that the IAP need to be reviewed and approved by apple to be usable in sandbox. But I also see others that specifically says the opposite, that the IAP only need to be in ready to submit. So which is it ? If I submit again the app, I'll end up with subscriptions that are unusable that I can't get back to ready to submit without sending them for review. Thanks for any hints !
Replies
1
Boosts
0
Views
19
Activity
10h
Stuck submitting subscription for review
We are stuck in AppStoreConnect limbo. We have a new subscription group + two Subscriptions in Ready To Review state in appstoreconnect, but Apple Review rejected our latest app version because they weren't included with the version. Our app version has been rejected for a few issues before this which maybe broke something. When I go to edit the version, there is no Subscriptions & Purchases section to add them for review. I tried editing the subscriptions and subscription group localization to see if that got it out of Waiting For Review state or showed the version section but no luck. So we can't add the Subscriptions for review and we are rejected from App Review if we don't. I submitted an Apple support email 8 days ago and haven't received any response. Does anyone know of a way to get this unblocked?
Replies
4
Boosts
0
Views
43
Activity
12h
In-App Purchases “Waiting for Review” but not available during App Review (subscriptions unavailable)
Hi everyone, I’m stuck in the App Review process with In-App Purchases (subscriptions) and would really appreciate some guidance. Situation: I have an app with subscriptions (Premium Monthly and Premium Yearly) Both subscriptions are in “Waiting for Review” status I submitted a new app version for review Issue: The app was rejected with: “subscriptions were unavailable at time of review” Before that, I also received a rejection saying the reviewer could not locate the In-App Purchases. What’s confusing: Subscriptions are not yet approved (still “Waiting for Review”) In the current app version page, I do not see the “In-App Purchases” section at all, so I cannot confirm whether they are attached to this build The app correctly loads products via StoreKit, but returns empty when products are not available Questions: Do subscriptions need to be approved before they can be used during app review? Should I reject the current version and resubmit while manually attaching the subscriptions? Is it expected that the “In-App Purchases” section is missing from the version page in this case? Has anyone experienced this “subscriptions unavailable” issue while IAPs are still “Waiting for Review”? I feel like I’m stuck in a loop where: The app needs IAP to pass review But IAP are not available yet during review Any advice on the correct process would be greatly appreciated. Thanks!
Replies
1
Boosts
0
Views
21
Activity
13h
Technical Inquiry: User-Centric Accounting and Multiple Concurrent Subscriptions
We are developing a platform (Ferve) where users subscribe to individual artists to access exclusive content. We use a user-centric remuneration model: each artist has an independent income pool, and funds from a specific subscription must be attributed solely to that artist. We have two critical challenges regarding our integration: Granular Financial Reporting for User-Centric Payouts As the Merchant of Record, Apple provides aggregate Financial Reports. However, these reports do not provide a breakdown of taxes, commissions, or exact exchange rates used for individual transactionId records. Though we can keep records of each transaction in our database, thus linking them with which artist they belong to, we are unable to collect fees/taxes applied to each individual transaction. Because our payouts are artist-specific, we need to deduct the exact regional taxes and Apple commissions from each transaction to calculate the artist's due balance. Currently, we can only see the final consolidated balance in BRL (Brazilian Reals) at the end of the month. Is there an API or report that provides the net proceeds and tax breakdown per transaction ID? How can we retrieve the exact exchange rate applied to foreign currency sales (e.g., EUR to BRL) before the final consolidation? Supporting Multiple Concurrent Subscriptions Our current App Store Connect configuration uses a single 'Subscription Group' for all artist 'Clubs' since they share the same price points. However, we have found that users cannot subscribe to more than one product within the same group simultaneously (the App Store treats this as an upgrade/downgrade). On our platform, a user must be able to subscribe to Artist A and Artist B at the same time. What is the recommended architecture for this? Should we dynamically create a unique Subscription Group for every artist onboarded to our platform? If we use unique groups, is there a limit to the number of Subscription Groups one app can have? We appreciate the help, Ferve
Replies
1
Boosts
0
Views
169
Activity
1d
Subscription waiting for review
Hi, I am trying to get my subscription reviewed. Its sitting there as “waiting for review“ and its been nearly 1 week. I’ve tried msging and replying to the Apple review team to request the review bur so far no luck. Can I please kindly get assistance as to how I can get it reviewed? Any help will be much appreciated.
Replies
1
Boosts
0
Views
43
Activity
2d
Auto-renewable subscriptions stuck in “Missing Metadata” with all fields completed
Hello, I’m experiencing an issue with auto-renewable subscriptions in App Store Connect and would appreciate any guidance. I have created two subscriptions (monthly and yearly), and all required metadata appears to be fully completed: pricing (price tiers set and saved) availability (countries selected) localization (titles and descriptions added) App Review screenshot uploaded However, both subscriptions remain in the “Missing Metadata” status, and the “Submit for Review” option is not available. Because of this, I am unable to attach the subscriptions to my app version and proceed with App Review (Guideline 2.1(b) - App Completeness). What I have already tried: re-saving all fields multiple times re-uploading the App Review screenshot verifying pricing and availability checking localization reviewing introductory offers The issue persists. Has anyone encountered this before or knows what might be causing this status, even when all fields seem complete? Any help would be greatly appreciated. Thank you!
Replies
2
Boosts
0
Views
70
Activity
3d
Unexpected appAccountToken mutation in JWSRenewalInfo during in-app crossgrade
Hello Apple Developer Support / StoreKit Team, We recently observed a behavior regarding the appAccountToken in App Store Server Notifications v2 that seems to completely contradict the official documentation. According to the Set App Account Token documentation: The same appAccountToken continues to apply to renewal transactions if the customer upgrades, downgrades, or cross-grades the subscription. However, we encountered a scenario where an active in-app crossgrade resulted in an updated/overwritten appAccountToken inside the subsequent JWSRenewalInfoDecodedPayload, despite our backend never calling the Set App Account Token REST API. Our Observation: A user subscribes to our 1-month plan (Product A). Apple generates an originalTransactionId bound to their initial appAccountToken (Token A). Later, a crossgrade to a 1-year plan (Product B) is initiated from within the app while the user is logged into a different account in our system (Token B), but using the same underlying Apple ID on the device. When the crossgrade takes effect at the next renewal date, we receive a DID_RENEW webhook. The Anomaly (See Attached Screenshots): Upon decoding the JWSRenewalInfoDecodedPayload from the webhook, we noticed that the appAccountToken had unexpectedly changed to the new token (Token B). As shown in the attached redacted screenshots: Screenshot 1 (Before/Original): JWSRenewalInfoDecodedPayload for Product 00001 shows the appAccountToken ending in ...e9a. Screenshot 2 (After Crossgrade): JWSRenewalInfoDecodedPayload for Product yearly_saver shows the appAccountToken has mutated to ending in ...507, even though the originalTransactionId remains exactly the same. To reiterate, our server did not call the POST /inApps/v1/subscriptions/appAccountToken/{originalTransactionId} endpoint to manually overwrite this token at any point. Our Questions: Is this the intended StoreKit 2 behavior? Does Apple automatically overwrite the base appAccountToken in the RenewalInfo if a new token is somehow associated during an active in-app crossgrade transaction? If this is intended, could the documentation be clarified? The current phrasing strongly suggests the token is permanently locked to the initial purchase and will never change during crossgrades unless the REST API is explicitly called. While this behavior is actually quite helpful for our backend to track multi-account users, we want to ensure we aren't relying on an undocumented bug that might be patched unexpectedly. Any insights from the StoreKit engineering team would be highly appreciated. Thank you!
Replies
0
Boosts
0
Views
30
Activity
3d
Recent 502 errors on the verifyReceipt API
Recently we are seeing 502 errors on the receipt validating API, documented here: https://developer.apple.com/documentation/appstorereceipts/verify-receipt 502 Bad Gateway: "<html><EOL><EOL><head><title>502 Bad Gateway</title></head><EOL><EOL><body><EOL><EOL><center><h1>502 Bad Gateway</h1></center><EOL><EOL><hr><center>Apple</center><EOL><EOL></body><EOL><EOL></html><EOL><EOL>" Here are logs of the occurrences: ・2026/03/20 17:03:21 - 17:04:41:10 cases ・2026/03/22 01:44:33:1 case ・2026/03/22 15:03:02:1 case ・2026/03/24 17:05:08 - 17:20:53:62 cases ・2026/03/25 06:34:56 - 06:37:21:18 cases Has anyone else seen problems like these recently? We are planning to move to the newer (non-deprecated) APIs, but are expecting that to take "a minute".
Replies
1
Boosts
1
Views
95
Activity
4d
Stuck with subscription review
I've published my app with subscriptions (app changed from paid to subscription model). I've have succesfully pass review process and app was published to App Store without subscription store, so no one can buy app (still working as paid, but will expire in few days forcing users to subscribe). I want to attach subscriptions to new build, but I can't - there are no options mentioned in documentation. I'm stuck. There is no any contact point to review team. I've created 3 cases, nobody reads them (oldest 3 weeks). The whole approval process looks broken, Apple team shouldn't approve app with subscriptions without subscriptions added to review. I must immediately publish my app with critical fixes, but I can't. I am devastated, i don't know what to do...
Replies
4
Boosts
0
Views
131
Activity
1w
how to disable streamline purchasing
how to disable streamline purchasing, when I click turn off, it show error Streamlined purchasing cannot be turned off because your latest approved binary doesn’t include the required StoreKit APIs My app has subscribe button to click before start to use though not need to login, chatgpt had done the store kit and subscription part, do not understand why it can not turn off streamlined purchasing
Replies
1
Boosts
0
Views
59
Activity
1w
Transaction.currentEntitlements sometimes does not emit a result until device is reboot
I have the typical StoreKit 2 manager class, where I check currentEntitlements for subscription. I have filed a feedback (FB22349195), I hope someone can take a look at it. func updateCustomerProductStatus() async { var activeSubscription: String? = nil // BUG: In some cases the currentEntitlements does not emit a transaction until the device is reboot for await result in Transaction.currentEntitlements { print("Found transaction: \(result)") // This print does not appear until a restart! do { let transaction = try checkVerified(result) // Skip revoked transactions if transaction.revocationDate != nil { print("Skipping revoked transaction for \(transaction.productID)") continue } // Skip expired subscriptions if let expirationDate = transaction.expirationDate, expirationDate < Date() { print("Skipping expired subscription for \(transaction.productID)") continue } // Check product type switch transaction.productType { case .autoRenewable: activeSubscription = transaction.productID default: break } } catch { print("Unable to verify transaction: \(error)") } } // Update state once after processing all entitlements self.activeSubscription = activeSubscription print("updateCustomerProductStatus() activeSubscription: \(activeSubscription ?? "nil")") } There is some unexpected behavior where the currentEntitlements does not emit a result until the iPhone device is reboot. This bug appeared in iOS 26.4 (and in the betas).
Replies
0
Boosts
1
Views
62
Activity
1w
how to turn off streamlined purchasing
how to disable streamline purchasing, when I click turn off, it show error Streamlined purchasing cannot be turned off because your latest approved binary doesn’t include the required StoreKit APIs My app has subscribe button to click before start to use though not need to login, chatgpt had done the store kit and subscription part, do not understand why it can not turn off streamlined purchasing
Replies
0
Boosts
0
Views
25
Activity
1w
Custom Capacitor 6 plugin with SPM: "plugin is not implemented on ios" despite being compiled
Hi everyone, I'm building an iOS app using Capacitor 6 with Swift Package Manager (SPM). I have a custom native plugin (AppleIAPPlugin) for StoreKit 2 In-App Purchases that lives in the App target (not as an SPM package). Despite compiling successfully, the JavaScript bridge throws: "AppleIAP" plugin is not implemented on ios Setup AppleIAPPlugin.swift: swift import Foundation import Capacitor import StoreKit @objc(AppleIAPPlugin) public class AppleIAPPlugin: CAPPlugin, CAPBridgedPlugin { public let identifier = "AppleIAPPlugin" public let jsName = "AppleIAP" public let pluginMethods: [CAPPluginMethod] = [ CAPPluginMethod(name: "getProducts", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "purchase", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "restorePurchases", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "getCurrentEntitlements", returnType: CAPPluginReturnPromise), CAPPluginMethod(name: "openManageSubscriptions", returnType: CAPPluginReturnPromise), ] @objc func getProducts(_ call: CAPPluginCall) { /* StoreKit 2 implementation */ } @objc func purchase(_ call: CAPPluginCall) { /* ... */ } // etc. } AppleIAPPlugin.m: objc #import <Foundation/Foundation.h> #import <Capacitor/Capacitor.h> CAP_PLUGIN(AppleIAPPlugin, "AppleIAP", CAP_PLUGIN_METHOD(getProducts, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(purchase, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(restorePurchases, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(getCurrentEntitlements, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(openManageSubscriptions, CAPPluginReturnPromise); ) MyBridgeViewController.swift (custom bridge to register the plugin): swift import UIKit import Capacitor class MyBridgeViewController: CAPBridgeViewController { override open func capacitorDidLoad() { bridge?.registerPluginType(AppleIAPPlugin.self) } } Main.storyboard points to MyBridgeViewController (module: App) instead of CAPBridgeViewController. TypeScript side: typescript import { registerPlugin } from "@capacitor/core"; export const AppleIAP = registerPlugin("AppleIAP"); What I've verified Both .swift and .m files are in the Xcode project's Compile Sources build phase nm on the compiled binary confirms OBJC_CLASS_$_AppleIAPPlugin symbol exists The build succeeds with zero errors Other SPM-based Capacitor plugins (Share, Media, NativeAudio) work fine — they have pluginMethods and jsName symbols in the binary; my custom plugin does NOT A bridging header (App-Bridging-Header.h) is configured with #import <Capacitor/Capacitor.h> What I've tried (all failed) .m file with CAP_PLUGIN macro only (no CAPBridgedPlugin in Swift) Added CAPBridgedPlugin protocol conformance to Swift class Created MyBridgeViewController subclass with registerPluginType() in capacitorDidLoad() Removed/added override public func load() method Added #import <Foundation/Foundation.h> to .m file Various bridging header configurations Multiple clean builds and derived data wipes Environment Xcode 16 Capacitor 6 (via SPM, binary xcframework) iOS 17+ deployment target Physical device testing (not simulator) Question How should a custom plugin in the App target be registered with Capacitor 6 when using SPM? The SPM-based plugins from node_modules get auto-discovered, but my custom plugin in the App target does not. Is there a step I'm missing to make registerPluginType() work, or should I structure my custom plugin as a local SPM package instead? Any guidance would be greatly appreciated.
Replies
1
Boosts
0
Views
37
Activity
1w
Guideline 2.1(b) - Performance - App Completeness
We have returned your In-App Purchase products to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the In-App Purchase products with the binary. we have tried everything; there is no button to add for review.
Replies
0
Boosts
0
Views
38
Activity
1w
Transaction.currentEntitlements returning all transactions
[EDIT: Please ignore. Will delete in a second] Transaction.currentEntitlements is returning the complete history of transactions on a subscription product. I have a program with an In-App Purchase for a monthly subscription. I am testing with a local StoreKit file in Xcode. I configured the StoreKit test file to update every minute. When the program starts, I retrieve the current transactions from StoreKit to see if there is an active subscription. for await verificationResult in Transaction.currentEntitlements { guard case .verified(let transaction) = verificationResult else { continue } // update status for subscriptions This morning's testing is showing transactions for all transactions, both current and past. The current subscription renewal is sent plus all the past renewals that have expired. I thought in my previous testing that only one transaction (i.e., the latest/current) was sent per Product ID. Is this (all subscription transactions) the expected behavior, or should I file a bug report? Example debug output from Transaction.currentEntitlements loop (top transaction is the current one, but past expired ones are provided too; "DEBUG CURRENT ----" separates individual transactions): DEBUG CURRENT: getCurrentEntitlements BEGIN DEBUG CURRENT ---- DEBUG CURRENT: for product pro.monthly DEBUG CURRENT: Verified Reason: Renewal DEBUG CURRENT: Ownership: Purchased DEBUG CURRENT: Purchases: is good DEBUG CURRENT: signed date: 2026-03-26 17:37:12 +0000 DEBUG CURRENT: purchase date: 2026-03-26 17:36:24 +0000 DEBUG CURRENT: environment: Environment(rawValue: "Xcode") DEBUG CURRENT: store front: Storefront(countryCode: "USA", id: "143441", localeStorage: en_US (fixed en_US)) DEBUG CURRENT ---- DEBUG CURRENT: for product pro.monthly DEBUG CURRENT: Verified Reason: Renewal DEBUG CURRENT: Ownership: Purchased DEBUG CURRENT: Expired 2026-03-26 17:36:24 +0000 DEBUG CURRENT: signed date: 2026-03-26 17:35:25 +0000 DEBUG CURRENT: purchase date: 2026-03-26 17:35:24 +0000 DEBUG CURRENT: environment: Environment(rawValue: "Xcode") DEBUG CURRENT: store front: Storefront(countryCode: "USA", id: "143441", localeStorage: en_US (fixed en_US)) DEBUG CURRENT ---- DEBUG CURRENT: for product pro.monthly DEBUG CURRENT: Verified Reason: Renewal DEBUG CURRENT: Ownership: Purchased DEBUG CURRENT: Expired 2026-03-26 17:35:24 +0000 DEBUG CURRENT: signed date: 2026-03-26 17:34:25 +0000 DEBUG CURRENT: purchase date: 2026-03-26 17:34:24 +0000 DEBUG CURRENT: environment: Environment(rawValue: "Xcode") DEBUG CURRENT: store front: Storefront(countryCode: "USA", id: "143441", localeStorage: en_US (fixed en_US))
Replies
1
Boosts
0
Views
40
Activity
1w
Subscription Approval
Hi, my subscriptions say "Waiting for Review" on Apple Connect. How do I get them to "Approved"?
Replies
0
Boosts
0
Views
32
Activity
1w
“In-App Purchases and Subscriptions” section on the version page not showing
I’m trying to submit my app for review, but I’m currently blocked due to a recurring issue with in-app subscriptions. Both of my auto-renewable subscriptions (premium_monthly and premium_yearly) are marked as “Waiting for Review”. However, I am still seeing the blue box stating that “your first subscription must be submitted with a new app version.” Despite creating a new version (1.0.1) and uploading/selecting a new build , I am not seeing the “In-App Purchases and Subscriptions” section on the version page, and I therefore cannot link the subscriptions before submitting. This issue is blocking my ability to submit the app for review. Any help to resolve this would be greatly appreciated.
Replies
3
Boosts
0
Views
175
Activity
1w
Purchase Error / storekit - subscription testing locally
Hello, I got Purchase Error Couldn’t communicate with a helper application. when button 'Buy Pro' clicked in my app it uses storekit subscription created (correct id in configuration.storekit) got this error in console: Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=5115 "Received failure in response from Xcode" UserInfo={NSDebugDescription=Received failure in response from Xcode, NSUnderlyingError=0xc5bc1c510 {Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service created from an endpoint was invalidated from this process." UserInfo={AMSDescription=An unknown error occurred. Please try again., AMSURL=http://localhost:49913/WebObjects/MZBuy.woa/wa/inAppBuy, NSDebugDescription=The connection to service created from an endpoint was invalidated from this process., AMSStatusCode=200, AMSServerPayload={ "app-list" = ( Thx for any help : )
Replies
0
Boosts
0
Views
52
Activity
1w
Your first subscription must be submitted with a new app version
I have been submitting the app multiple times and I keep getting rejected for: Guideline 2.1 - Performance - App Completeness Specifically, the in-app purchase is not available and the app is unresponsive when we tap the Upgrade button. I feel like I am stuck in a circle since it is showing me the pricing is unavailalbe on my subscription page. I have checked and it is wired correctly and works in the google play store. The issue is that my subriptions are not approved yet. But I can't get my subscriptions approved without the app being approved for the first time. So the Upgrade button cannot work, since the subscriptions are not approved, and they can't be approved without the app being approved. I can't test it in the sandbox, since the application is not approved. Anyone know what to do with this issue?
Replies
4
Boosts
1
Views
166
Activity
1w