In-App Purchase

RSS for tag

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

Posts under In-App Purchase tag

200 Posts

Post

Replies

Boosts

Views

Activity

StoreKit access in keyboard extensions
Hello Apple team, We would like to access the user's available purchases from the keyboard extension. Making purchases directly from the keyboard is a great benefit, but we assume it is intentionally disabled to prevent abuse or fraudulent purchase attempts. What we care about the most is determining if the user has an item that contains a discount or a free trial to personalize messaging when we suggest the user go to the app and make a purchase. We hope you'd consider revising your policy around StoreKit usage.
1
0
568
Apr ’26
In app purchase rejected
Thanks for view post. I found some problem on step review in-app-purchase. All item in app purchase hold on "Developer Action Needed" then I check issue i found it because all item in section App Store Localization rejected. I don't know why it rejected on board don't show any information that why it was rejected. if who know please suggest me. I try many renew create item but every i resume for submit it every time it was reject aways I attached example my rejected image below thanks.
4
1
1.4k
Apr ’26
Authentication Error with App Store Server API (NOT_AUTHORIZED) while Using JWT for Subscription Validation
Hello Apple Developer Community, We are currently facing an authentication issue when calling the App Store Server API for subscription validation. Despite following Apple’s documentation and verifying all credentials, we consistently receive a NOT_AUTHORIZED error response. GET https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/appTransactions/{transactionId} Environment: Sandbox and Production (both tested, same result) Our Setup: Key ID: {Your Key ID} Issuer ID: {Your Issuer ID} Bundle ID: {Your Bundle ID} JWT Header: { "alg": "ES256", "kid": "" } JWT Payload: { "iss": "", "iat": , "exp": <timestamp + 5 minutes>, "aud": "appstoreconnect-v1", "bid": "" } Authorization Header: Authorization: Bearer Troubleshooting Steps Already Taken: Verified that .p8 key, Key ID, Issuer ID, and Bundle ID are all correctly configured and match the App Store Connect details. Confirmed that the system clock is accurate (UTC). Used appropriate endpoint (sandbox or production) based on environment. Ensured that the JWT is short-lived (under 5 minutes). Added the “Bearer” prefix correctly in the header. Tested JWT generations using Python. Issue: All requests return: { "errorCode": "NOT_AUTHORIZED" } Questions: Are there any additional claims or headers required for the subscriptions endpoint? Are there specific permissions or roles needed for the API key in App Store Connect? Is there a way to get more detailed logs or diagnostics for this NOT_AUTHORIZED response? Does the App Store Server API require a different aud or bid structure for certain endpoints? We already contacted Apple Developer Support, but they suggested posting here for engineering-level guidance. Any insight or examples of a working JWT + request for this endpoint would be greatly appreciated.
1
0
886
Apr ’26
Migration Subscription API returns 500 error
We got Advanced Commerce API and the generic product identifiers approved. When I was try to migrate a sandbox subscription to ACA enabled subscription I hit an error Request payload (Hid some info but the requestReferenceId is the real) { "descriptors": { "description": "Migrated", "displayName": "Migration" }, "items": [ { "sku": "product_1mo_999", "description": "description", "displayName": "Product" } ], "requestInfo": { "requestReferenceId": "3b0b8e67-d8a0-45f4-8f6d-06bffa9a2c08" }, "storefront": "USA", "targetProductId": "com.company.generic.subscription", "taxCode": "C003-00-1" } Response { "errorCode": 5000000, "errorMessage": "An unknown error occurred." }
3
0
487
Apr ’26
Purchange is complete but show pending in account.
Hello I have buy new developepr membership and i have get email for purchase confirmation but when ihave go to developer account i have seen this. Purchase your membership. To continue your enrollment, complete your purchase now. Your purchase may take up to 48 hours to process. Please help me why it will show this if i have already buy the membership and i itune i have check and see the member is active and valid for 1 year. Please help me to solve this issue.
3
0
2.4k
Apr ’26
Auto-renewable subscriptions stuck in "Developer Action Needed" - Cannot attach to binary
Hi everyone, I am trying to submit the first version of my app with auto-renewable subscriptions, but I am stuck in a loop. Both of my subscriptions (Yearly and Monthly) are stuck with the status "Developer Action Needed". Because of this status, they do not appear in the list of available In-App Purchases when I try to attach them to my app binary on the App Store Connect submission page. Here is what I have already done/checked: All metadata is filled out (Display Name, Description, Pricing). Review Information is complete (Screenshot and Review Notes are provided). My "Paid Applications" agreement in the Agreements, Tax, and Banking section is Active. I contacted Apple Developer Support by phone, but they were unable to resolve the issue and suggested I post here for help. Has anyone experienced this "limbo" before? How can I trigger the status to change to "Ready to Submit" so I can finally attach them to my build and send the app for review? (I have attached screenshots of my App Store Connect dashboard showing the issue). Thanks in advance for any help!
2
1
418
Apr ’26
In-App Subscription Works in Xcode Sandbox but Not Appearing for App Review Testers
Hello, I’m having an issue with my first subscription for my app WealthSlices, where the subscription appears correctly when testing locally from Xcode, but App Store reviewers appear unable to retrieve the product. Symptoms When I run the app from Xcode on my iPhone using the Sandbox environment: The subscription loads successfully. The purchase sheet appears. I can complete a sandbox purchase. However, when App Review tests the app, the paywall fails to load products and the app shows the following message: "No Products found. Purchases are temporarily unavailable on this device." Environment App: WealthSlices Platform: iOS Testing locally via Xcode → Sandbox Apple ID Subscription type: Auto-renewable subscription Product: WealthSlices Basic ($9.99/month) StoreKit: StoreKit 2 Current build: 1.0.7 (Build 32) What works locally When running via Xcode: StoreKit successfully fetches products. The subscription sheet appears with the correct pricing. Sandbox purchase flow completes normally. What appears to happen during App Review It appears that Product.products(for:) returns an empty list when the reviewers test the app. Things I have already verified The subscription is created in App Store Connect. It is attached to the current app version under In-App Purchases and Subscriptions. The subscription has pricing and localization configured. The subscription is in Ready to Submit status. The bundle ID and product ID match the code. Paid Apps Agreement is active. I uploaded a new build after creating the subscription. Question Is there something specific required for first-time subscription submissions that might cause the product not to appear during App Review but still work in local sandbox testing? Is there a known delay or propagation requirement for subscriptions before they can be fetched by Product.products(for:) in TestFlight/App Review environments? Any guidance would be greatly appreciated. also there doesn't seem to be an option to select the subscription over at https://appstoreconnect.apple.com/apps/6754225986/distribution/ios/version/inflight but there is no option to add it Thank you!
3
0
460
Apr ’26
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
711
Apr ’26
Inquiry Regarding In-App Purchase Refund Handling
After a user successfully completes a purchase and later requests a refund, how long does it typically take for the refund to be processed and take effect? How does Apple notify developers when a refund has been issued for an in-app purchase? Are there specific mechanisms or recommended approaches to reliably receive such notifications? In cases where users may abuse the refund system (e.g., frequent or malicious refund requests), is there any way for developers to prevent or intervene in the refund process?
1
0
245
Apr ’26
First auto-renewable subscription does not appear on app version page in App Store Connect
Hello, I am blocked on the first auto-renewable subscription submission for my iOS app and I would like to know if anyone has seen this exact App Store Connect behavior. App: SEKA Money Subscription product ID: seka_premium_yearly_ Subscription Apple ID: 6760082026 Current issue: the auto-renewable subscription exists in App Store Connect I am on the correct iOS app version page the “In-App Purchases and Subscriptions” section is visible but my auto-renewable subscription does not appear in the selector only a consumable IAP appears there Important detail: the issue happens directly inside App Store Connect on the app version page this is why I do not think the missing subscription in that selector is caused by the runtime StoreKit code in the app itself I understand app code can affect UI price display, but it should not control whether a subscription appears in the App Store Connect submission selector Other details: this is my first subscription the subscription has already gone through “Waiting for Review” and is now “Developer Action Needed” metadata, screenshot, and localizations have been filled Apple Support already confirmed that I do not need a consumable for this case sandbox / TestFlight purchase behavior has been partially reproducible, but the submission workflow remains blocked because the subscription is not selectable on the app version page My question: Has anyone seen a case where the first auto-renewable subscription exists but does not appear in the app version selector, while another IAP type does appear? If yes, what was the real cause and how did you resolve it? Thank you.
2
0
643
Apr ’26
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
418
Apr ’26
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
541
Mar ’26
Impact of finishing the transaction after a purchase in StoreKit
Prerequisites We plan to sell non-consumable items via in-app purchases. The app includes a restore button. We understand that after a payment is completed on a smartphone, the server must verify the receipt and activate the item in the database, and the app must then execute the transaction finish process. Due to our app’s constraints, there are specific cases where we must execute the transaction finish process on the app side without first performing the item activation process in the database. We do not know exactly what the transaction finish process entails. Questions What are the implications in the following cases? The payment was completed, but the product activation process in our database failed, and the transaction finish process was not executed on the app side. After restarting the app, an OS notification indicating an incomplete transaction appeared, and only the finish process was executed. In this scenario, we assume that the OS notification will not appear next time, and the user can simply activate the purchase by starting a transaction recovery. Are there any potential concerns or bugs that might occur? What are the implications if the product activation process in our database succeeds, but the finish operation fails to complete normally due to the user exiting the app or similar circumstances? Our assumption is that since the product is activated in our database, we can provide value for the charge without issue, and there is no deterioration in UX, such as the inability to process refunds in the app store. Are there any potential concerns or bugs that might arise? Regarding this inquiry, if you have any information—such as whether this scenario would result in a rejection during the app review process—we would appreciate it if you could share it with us.
1
0
293
Mar ’26
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
423
Mar ’26
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
318
Mar ’26
Different transaction IDs for the same purchase between SKPaymentTransaction and receipt latest_receipt_info
Hello, I am investigating a case where two different transaction IDs appear to refer to the same purchase, and I would like clarification on whether this behavior is expected. Additional context StoreKit version: StoreKit 1 (SKPaymentTransaction) Environment: Production Product type: Auto-renewable subscription Transaction sources The values are obtained from the following APIs: transaction_id from SKPaymentTransaction https://developer.apple.com/documentation/storekit/skpaymentqueue receipt_data from the App Store receipt https://developer.apple.com/documentation/foundation/bundle/appstorereceipturl Observed behavior After an In-App Purchase completes, the app receives: a transaction_id from SKPaymentTransaction the corresponding receipt_data for the purchase When inspecting the receipt, the transaction_id inside latest_receipt_info differs from the transaction_id received directly from the purchase transaction. For clarity: A = transaction_id received from the purchase flow (SKPaymentTransaction) A' = transaction_id found in receipt_data.latest_receipt_info The two values are different, but they differ only by 1. Additional observation The original_transaction_id for A and A' is identical, which suggests that both transaction IDs belong to the same subscription purchase chain. Pattern observation on the ID difference We have observed that the difference between A and A' is consistently exactly 1 (i.e., A' = A + 1) across multiple transactions, not just a single case. This appears to be a reproducible pattern rather than a coincidence. This observation raises an additional question (Question 6 below). API verification When calling: GET /inApps/v1/transactions/{transactionId} Both A and A' return what appears to be the same purchase record. The response data is effectively identical except for the transactionId field. However, when calling: GET /inApps/v2/history/{transactionId} A does not appear in the transaction history only A' appears in the history response Questions If A does not appear in transaction history, where does this transaction ID originate from? Why does Get Transaction Info (/inApps/v1/transactions/{transactionId}) return a valid response for A even though it is not present in the transaction history? Why do A and A' both resolve to what appears to be the same purchase? In this situation, which transaction ID should be treated as the canonical transaction ID for server-side validation? Is this difference related to how StoreKit 1 (SKPaymentTransaction) and the App Store Server API represent transactions? Is the consistent off-by-one difference between the transaction_id from SKPaymentTransaction and the one recorded in latest_receipt_info an intentional behavior of StoreKit 1's internal transaction ID assignment? Specifically, we are wondering whether StoreKit 1 applies some form of internal offset when delivering the transaction ID to the client, while the App Store server records a different (adjacent) ID in the receipt. If so, is this documented anywhere? Note We are currently in the process of migrating to StoreKit 2, but this behavior was observed while investigating our existing StoreKit 1 implementation. Any clarification would help us better understand the correct transaction model during the migration.
3
1
646
Mar ’26
Product ID conflict for IAP across staging/production apps
I’m working on a Flutter application that implements subscriptions using in-app purchases (IAP). I currently have two apps under the same developer account: One for staging One for production In App A (staging), I successfully created a monthly subscription with the product ID: rc_1299_monthly However, when I try to create a subscription with the same product ID (rc_1299_monthly) in App B (production), I encounter the following error: "The Product ID you entered is already being used by another subscription." My understanding was that product IDs are scoped per app, but this error suggests there may be account-level constraints. Has anyone encountered this before? Is it required to use unique product IDs across all apps under the same account, or is there a recommended approach for handling staging vs production setups? Any clarification or best practices would be appreciated.
1
0
185
Mar ’26
What is the best way to look for latest transaction_id for a given original_transaction_id?
We have been using the purchase date to identify the latest transaction_id for a given original_transaction_id. However, I’ve noticed several cases where an immediate upgrade does not result in a later purchase date—in some instances, it is actually earlier than the previous transaction. Given this inconsistency, would it be more reliable to sort by transaction_id in descending order instead?
1
0
176
Mar ’26
Multiple IAP products at different price points for same content — compliant with guidelines?
I'm building an app that sells non-consumable in-app purchases. I want to implement a partner/referral discount system using the following approach: Create multiple IAP products in App Store Connect for the same content at different price points (e.g. full price at €10, 10% off at €9, 20% off at €8) When a user enters a partner or referral code in the app, my backend validates the code and returns which product to present The user then completes the purchase through the standard StoreKit IAP flow — Apple processes the transaction normally at the discounted price No purchase is unlocked without going through Apple IAP. No external payment system is involved. The only difference from a standard purchase is which product SKU is shown based on a backend-validated code. My questions: Is this approach compliant with App Store guidelines? Is there any guideline that requires developers to use Apple's native Offer Codes system instead of this approach for discounted purchases? Any guidance would be appreciated before we invest in building this out.
0
0
261
Mar ’26
StoreKit access in keyboard extensions
Hello Apple team, We would like to access the user's available purchases from the keyboard extension. Making purchases directly from the keyboard is a great benefit, but we assume it is intentionally disabled to prevent abuse or fraudulent purchase attempts. What we care about the most is determining if the user has an item that contains a discount or a free trial to personalize messaging when we suggest the user go to the app and make a purchase. We hope you'd consider revising your policy around StoreKit usage.
Replies
1
Boosts
0
Views
568
Activity
Apr ’26
In app purchase rejected
Thanks for view post. I found some problem on step review in-app-purchase. All item in app purchase hold on "Developer Action Needed" then I check issue i found it because all item in section App Store Localization rejected. I don't know why it rejected on board don't show any information that why it was rejected. if who know please suggest me. I try many renew create item but every i resume for submit it every time it was reject aways I attached example my rejected image below thanks.
Replies
4
Boosts
1
Views
1.4k
Activity
Apr ’26
Authentication Error with App Store Server API (NOT_AUTHORIZED) while Using JWT for Subscription Validation
Hello Apple Developer Community, We are currently facing an authentication issue when calling the App Store Server API for subscription validation. Despite following Apple’s documentation and verifying all credentials, we consistently receive a NOT_AUTHORIZED error response. GET https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/appTransactions/{transactionId} Environment: Sandbox and Production (both tested, same result) Our Setup: Key ID: {Your Key ID} Issuer ID: {Your Issuer ID} Bundle ID: {Your Bundle ID} JWT Header: { "alg": "ES256", "kid": "" } JWT Payload: { "iss": "", "iat": , "exp": <timestamp + 5 minutes>, "aud": "appstoreconnect-v1", "bid": "" } Authorization Header: Authorization: Bearer Troubleshooting Steps Already Taken: Verified that .p8 key, Key ID, Issuer ID, and Bundle ID are all correctly configured and match the App Store Connect details. Confirmed that the system clock is accurate (UTC). Used appropriate endpoint (sandbox or production) based on environment. Ensured that the JWT is short-lived (under 5 minutes). Added the “Bearer” prefix correctly in the header. Tested JWT generations using Python. Issue: All requests return: { "errorCode": "NOT_AUTHORIZED" } Questions: Are there any additional claims or headers required for the subscriptions endpoint? Are there specific permissions or roles needed for the API key in App Store Connect? Is there a way to get more detailed logs or diagnostics for this NOT_AUTHORIZED response? Does the App Store Server API require a different aud or bid structure for certain endpoints? We already contacted Apple Developer Support, but they suggested posting here for engineering-level guidance. Any insight or examples of a working JWT + request for this endpoint would be greatly appreciated.
Replies
1
Boosts
0
Views
886
Activity
Apr ’26
Migration Subscription API returns 500 error
We got Advanced Commerce API and the generic product identifiers approved. When I was try to migrate a sandbox subscription to ACA enabled subscription I hit an error Request payload (Hid some info but the requestReferenceId is the real) { "descriptors": { "description": "Migrated", "displayName": "Migration" }, "items": [ { "sku": "product_1mo_999", "description": "description", "displayName": "Product" } ], "requestInfo": { "requestReferenceId": "3b0b8e67-d8a0-45f4-8f6d-06bffa9a2c08" }, "storefront": "USA", "targetProductId": "com.company.generic.subscription", "taxCode": "C003-00-1" } Response { "errorCode": 5000000, "errorMessage": "An unknown error occurred." }
Replies
3
Boosts
0
Views
487
Activity
Apr ’26
The product ID entered has already been used by other in-app purchases associated with this team.
The product ID entered has already been used by other in-app purchases associated with this team. I previously used fortune_pay_1, but not apple_pay_1 or apple_pays_1 How can this be solved
Replies
1
Boosts
0
Views
228
Activity
Apr ’26
Purchange is complete but show pending in account.
Hello I have buy new developepr membership and i have get email for purchase confirmation but when ihave go to developer account i have seen this. Purchase your membership. To continue your enrollment, complete your purchase now. Your purchase may take up to 48 hours to process. Please help me why it will show this if i have already buy the membership and i itune i have check and see the member is active and valid for 1 year. Please help me to solve this issue.
Replies
3
Boosts
0
Views
2.4k
Activity
Apr ’26
Auto-renewable subscriptions stuck in "Developer Action Needed" - Cannot attach to binary
Hi everyone, I am trying to submit the first version of my app with auto-renewable subscriptions, but I am stuck in a loop. Both of my subscriptions (Yearly and Monthly) are stuck with the status "Developer Action Needed". Because of this status, they do not appear in the list of available In-App Purchases when I try to attach them to my app binary on the App Store Connect submission page. Here is what I have already done/checked: All metadata is filled out (Display Name, Description, Pricing). Review Information is complete (Screenshot and Review Notes are provided). My "Paid Applications" agreement in the Agreements, Tax, and Banking section is Active. I contacted Apple Developer Support by phone, but they were unable to resolve the issue and suggested I post here for help. Has anyone experienced this "limbo" before? How can I trigger the status to change to "Ready to Submit" so I can finally attach them to my build and send the app for review? (I have attached screenshots of my App Store Connect dashboard showing the issue). Thanks in advance for any help!
Replies
2
Boosts
1
Views
418
Activity
Apr ’26
In-App Subscription Works in Xcode Sandbox but Not Appearing for App Review Testers
Hello, I’m having an issue with my first subscription for my app WealthSlices, where the subscription appears correctly when testing locally from Xcode, but App Store reviewers appear unable to retrieve the product. Symptoms When I run the app from Xcode on my iPhone using the Sandbox environment: The subscription loads successfully. The purchase sheet appears. I can complete a sandbox purchase. However, when App Review tests the app, the paywall fails to load products and the app shows the following message: "No Products found. Purchases are temporarily unavailable on this device." Environment App: WealthSlices Platform: iOS Testing locally via Xcode → Sandbox Apple ID Subscription type: Auto-renewable subscription Product: WealthSlices Basic ($9.99/month) StoreKit: StoreKit 2 Current build: 1.0.7 (Build 32) What works locally When running via Xcode: StoreKit successfully fetches products. The subscription sheet appears with the correct pricing. Sandbox purchase flow completes normally. What appears to happen during App Review It appears that Product.products(for:) returns an empty list when the reviewers test the app. Things I have already verified The subscription is created in App Store Connect. It is attached to the current app version under In-App Purchases and Subscriptions. The subscription has pricing and localization configured. The subscription is in Ready to Submit status. The bundle ID and product ID match the code. Paid Apps Agreement is active. I uploaded a new build after creating the subscription. Question Is there something specific required for first-time subscription submissions that might cause the product not to appear during App Review but still work in local sandbox testing? Is there a known delay or propagation requirement for subscriptions before they can be fetched by Product.products(for:) in TestFlight/App Review environments? Any guidance would be greatly appreciated. also there doesn't seem to be an option to select the subscription over at https://appstoreconnect.apple.com/apps/6754225986/distribution/ios/version/inflight but there is no option to add it Thank you!
Replies
3
Boosts
0
Views
460
Activity
Apr ’26
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
711
Activity
Apr ’26
Inquiry Regarding In-App Purchase Refund Handling
After a user successfully completes a purchase and later requests a refund, how long does it typically take for the refund to be processed and take effect? How does Apple notify developers when a refund has been issued for an in-app purchase? Are there specific mechanisms or recommended approaches to reliably receive such notifications? In cases where users may abuse the refund system (e.g., frequent or malicious refund requests), is there any way for developers to prevent or intervene in the refund process?
Replies
1
Boosts
0
Views
245
Activity
Apr ’26
First auto-renewable subscription does not appear on app version page in App Store Connect
Hello, I am blocked on the first auto-renewable subscription submission for my iOS app and I would like to know if anyone has seen this exact App Store Connect behavior. App: SEKA Money Subscription product ID: seka_premium_yearly_ Subscription Apple ID: 6760082026 Current issue: the auto-renewable subscription exists in App Store Connect I am on the correct iOS app version page the “In-App Purchases and Subscriptions” section is visible but my auto-renewable subscription does not appear in the selector only a consumable IAP appears there Important detail: the issue happens directly inside App Store Connect on the app version page this is why I do not think the missing subscription in that selector is caused by the runtime StoreKit code in the app itself I understand app code can affect UI price display, but it should not control whether a subscription appears in the App Store Connect submission selector Other details: this is my first subscription the subscription has already gone through “Waiting for Review” and is now “Developer Action Needed” metadata, screenshot, and localizations have been filled Apple Support already confirmed that I do not need a consumable for this case sandbox / TestFlight purchase behavior has been partially reproducible, but the submission workflow remains blocked because the subscription is not selectable on the app version page My question: Has anyone seen a case where the first auto-renewable subscription exists but does not appear in the app version selector, while another IAP type does appear? If yes, what was the real cause and how did you resolve it? Thank you.
Replies
2
Boosts
0
Views
643
Activity
Apr ’26
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
418
Activity
Apr ’26
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
541
Activity
Mar ’26
Impact of finishing the transaction after a purchase in StoreKit
Prerequisites We plan to sell non-consumable items via in-app purchases. The app includes a restore button. We understand that after a payment is completed on a smartphone, the server must verify the receipt and activate the item in the database, and the app must then execute the transaction finish process. Due to our app’s constraints, there are specific cases where we must execute the transaction finish process on the app side without first performing the item activation process in the database. We do not know exactly what the transaction finish process entails. Questions What are the implications in the following cases? The payment was completed, but the product activation process in our database failed, and the transaction finish process was not executed on the app side. After restarting the app, an OS notification indicating an incomplete transaction appeared, and only the finish process was executed. In this scenario, we assume that the OS notification will not appear next time, and the user can simply activate the purchase by starting a transaction recovery. Are there any potential concerns or bugs that might occur? What are the implications if the product activation process in our database succeeds, but the finish operation fails to complete normally due to the user exiting the app or similar circumstances? Our assumption is that since the product is activated in our database, we can provide value for the charge without issue, and there is no deterioration in UX, such as the inability to process refunds in the app store. Are there any potential concerns or bugs that might arise? Regarding this inquiry, if you have any information—such as whether this scenario would result in a rejection during the app review process—we would appreciate it if you could share it with us.
Replies
1
Boosts
0
Views
293
Activity
Mar ’26
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
423
Activity
Mar ’26
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
318
Activity
Mar ’26
Different transaction IDs for the same purchase between SKPaymentTransaction and receipt latest_receipt_info
Hello, I am investigating a case where two different transaction IDs appear to refer to the same purchase, and I would like clarification on whether this behavior is expected. Additional context StoreKit version: StoreKit 1 (SKPaymentTransaction) Environment: Production Product type: Auto-renewable subscription Transaction sources The values are obtained from the following APIs: transaction_id from SKPaymentTransaction https://developer.apple.com/documentation/storekit/skpaymentqueue receipt_data from the App Store receipt https://developer.apple.com/documentation/foundation/bundle/appstorereceipturl Observed behavior After an In-App Purchase completes, the app receives: a transaction_id from SKPaymentTransaction the corresponding receipt_data for the purchase When inspecting the receipt, the transaction_id inside latest_receipt_info differs from the transaction_id received directly from the purchase transaction. For clarity: A = transaction_id received from the purchase flow (SKPaymentTransaction) A' = transaction_id found in receipt_data.latest_receipt_info The two values are different, but they differ only by 1. Additional observation The original_transaction_id for A and A' is identical, which suggests that both transaction IDs belong to the same subscription purchase chain. Pattern observation on the ID difference We have observed that the difference between A and A' is consistently exactly 1 (i.e., A' = A + 1) across multiple transactions, not just a single case. This appears to be a reproducible pattern rather than a coincidence. This observation raises an additional question (Question 6 below). API verification When calling: GET /inApps/v1/transactions/{transactionId} Both A and A' return what appears to be the same purchase record. The response data is effectively identical except for the transactionId field. However, when calling: GET /inApps/v2/history/{transactionId} A does not appear in the transaction history only A' appears in the history response Questions If A does not appear in transaction history, where does this transaction ID originate from? Why does Get Transaction Info (/inApps/v1/transactions/{transactionId}) return a valid response for A even though it is not present in the transaction history? Why do A and A' both resolve to what appears to be the same purchase? In this situation, which transaction ID should be treated as the canonical transaction ID for server-side validation? Is this difference related to how StoreKit 1 (SKPaymentTransaction) and the App Store Server API represent transactions? Is the consistent off-by-one difference between the transaction_id from SKPaymentTransaction and the one recorded in latest_receipt_info an intentional behavior of StoreKit 1's internal transaction ID assignment? Specifically, we are wondering whether StoreKit 1 applies some form of internal offset when delivering the transaction ID to the client, while the App Store server records a different (adjacent) ID in the receipt. If so, is this documented anywhere? Note We are currently in the process of migrating to StoreKit 2, but this behavior was observed while investigating our existing StoreKit 1 implementation. Any clarification would help us better understand the correct transaction model during the migration.
Replies
3
Boosts
1
Views
646
Activity
Mar ’26
Product ID conflict for IAP across staging/production apps
I’m working on a Flutter application that implements subscriptions using in-app purchases (IAP). I currently have two apps under the same developer account: One for staging One for production In App A (staging), I successfully created a monthly subscription with the product ID: rc_1299_monthly However, when I try to create a subscription with the same product ID (rc_1299_monthly) in App B (production), I encounter the following error: "The Product ID you entered is already being used by another subscription." My understanding was that product IDs are scoped per app, but this error suggests there may be account-level constraints. Has anyone encountered this before? Is it required to use unique product IDs across all apps under the same account, or is there a recommended approach for handling staging vs production setups? Any clarification or best practices would be appreciated.
Replies
1
Boosts
0
Views
185
Activity
Mar ’26
What is the best way to look for latest transaction_id for a given original_transaction_id?
We have been using the purchase date to identify the latest transaction_id for a given original_transaction_id. However, I’ve noticed several cases where an immediate upgrade does not result in a later purchase date—in some instances, it is actually earlier than the previous transaction. Given this inconsistency, would it be more reliable to sort by transaction_id in descending order instead?
Replies
1
Boosts
0
Views
176
Activity
Mar ’26
Multiple IAP products at different price points for same content — compliant with guidelines?
I'm building an app that sells non-consumable in-app purchases. I want to implement a partner/referral discount system using the following approach: Create multiple IAP products in App Store Connect for the same content at different price points (e.g. full price at €10, 10% off at €9, 20% off at €8) When a user enters a partner or referral code in the app, my backend validates the code and returns which product to present The user then completes the purchase through the standard StoreKit IAP flow — Apple processes the transaction normally at the discounted price No purchase is unlocked without going through Apple IAP. No external payment system is involved. The only difference from a standard purchase is which product SKU is shown based on a backend-validated code. My questions: Is this approach compliant with App Store guidelines? Is there any guideline that requires developers to use Apple's native Offer Codes system instead of this approach for discounted purchases? Any guidance would be appreciated before we invest in building this out.
Replies
0
Boosts
0
Views
261
Activity
Mar ’26