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

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
26
1h
Unable to sign in to Sandbox Apple Account on Simulator
I am unable to sign in to a Sandbox Apple Account, where this issue occurs only via Simulator. Under Settings > Developer, I tap "Sign In" under Sandbox Apple Account. I enter my account credentials, and after bringing me back to the Developer page, the Sign In button briefly appears as disabled, before being re-enabled, without signing in to the account. (The account credentials are also recognized as correct, as I will receive an alert popup if incorrect.) See screenshots below: After signing in, Sign In button appears disabled... ... then is re-enabled without actually signing in to the account. I have now tried setting up multiple sandbox accounts via App Store Connect with various permutations (no confirmation of Apple Account email, confirming Apple Account email, logging in to iCloud and accepting terms of service), running different device simulators, running simulators on different Mac computers... none of which yield a different result. By contrast, I can sign in to the Sandbox Apple Account without issue on a physical device. The problem occurs only via Simulator.
2
1
227
2h
Subscriptions Not Working for me
hello this is my first time putting an app on subscriptions in Storekit, I believe I did everything correctly, from my paywall to everything in Xcode and apple connect, including agreements and sandbox, my sandbox in app purchase worked on all my subscriptions but when I my app was live in store it said purchase could not be made, basically apple wasn't returning what it needs to. my subsections are all approved and say active including my subscription group. bundle ID matches everywhere and so does product id, does anyone know what could possibly be the issue? and how to fix, I would really appreciate any insight.
1
0
56
2h
Subscription unavailable
When my app tries to access a subscription, StoreKit's products(for:) always returns zero results. Similarly, SubscriptionStoreView always shows "Subscription Unavailable" followed by "The subscription is unavailable in the current storefront". The app is a watch-only app (no iPhone companion app). The app and the subscription product were each approved in App Store Connect over two weeks ago. The problem occurs when the app is installed from TestFlight, when the app is installed from the App Store (production), and when run in the Xcode debugger. The only time the app successfully accesses the subscription when simulating it in Xcode with a .storekit file. How should my app access the subscription? Repro: App Store bundle ID: com.toolsay.hoopref Phone app target (unused) bundle ID: com.toolsay.hoopref Watch app bundle ID: com.toolsay.hoopref.watchapp Subscription product ID: com.toolsay.hoopref.pro.annual Subscription availability: All countries and regions App Store listing let products = try await Product.products(for: ["com.toolsay.hoopref.pro.annual"]) products.count is 0.
1
0
63
2h
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
I have the issues in this particular guideline: Issue Description We noticed that the app requires users to register with personal information to purchase In-App Purchase products that are not account based. Apps cannot require user registration prior to allowing access to app content and features that are not associated specifically to the user. User registration that requires the sharing of personal information must be optional or tied to account-specific functionality. Next Steps To resolve this issue, please revise the app to not require users to register before purchasing In-App Purchase products that are not account based. You may explain to the user that registering will enable them to access the purchased content from any of their supported devices and provide them a way to register at any time, if they wish to later extend access to additional devices. Please note that although guideline 5.1.1 requires an app to make subscription content available to all the supported devices owned by a single user, it is not appropriate to force user registration to meet this requirement; such user registration must be optional. For this issue, I have revised my app accordingly many times, but it still get rejected even though I believe that I have revised my app accordingly. My app name is Wallpaperlogoart and my app ID
1
0
68
12h
StoreKit / react-native-iap: Payment deducted but transaction not delivered (E_CONNECTION_CLOSED) – India UPI payments
Hello, We are facing an issue with In-App Purchases (subscriptions) in two iOS apps built with React Native + react-native-iap. Issue Some users receive the error: E_CONNECTION_CLOSED during the purchase flow. However: The payment is successfully deducted via the App Store. The subscription appears in the user's Apple ID subscription list. But on our side: The app does not receive the StoreKit transaction callback No receipt or transaction ID is delivered Our backend cannot validate the purchase. Restore Purchases When affected users try Restore Purchases, StoreKit returns: No purchases found even though the subscription is visible in their Apple ID. Most affected users are from India, and many payments are made via UPI through App Store billing. Has anyone experienced a case where: the user is charged the subscription exists in Apple ID but StoreKit never returns the transaction or receipt? Any suggestions on how to recover these transactions would be greatly appreciated. Thanks!
2
0
87
2d
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
I have the issues in this particular guideline: Issue Description We noticed that the app requires users to register with personal information to purchase In-App Purchase products that are not account based. Apps cannot require user registration prior to allowing access to app content and features that are not associated specifically to the user. User registration that requires the sharing of personal information must be optional or tied to account-specific functionality. Next Steps To resolve this issue, please revise the app to not require users to register before purchasing In-App Purchase products that are not account based. You may explain to the user that registering will enable them to access the purchased content from any of their supported devices and provide them a way to register at any time, if they wish to later extend access to additional devices. Please note that although guideline 5.1.1 requires an app to make subscription content available to all the supported devices owned by a single user, it is not appropriate to force user registration to meet this requirement; such user registration must be optional. For this issue, I have revised my app accordingly many times, but it still get rejected even though I believe that I have revised my app accordingly. My app name is Wallpaperlogoart and my app ID is 6744837826. I would like Apple to look into this issue again in my app submission. I am looking forward to hearing from you soon.
1
0
68
2d
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.
0
0
56
2d
.storeButton(.visible, for: .policies) shows “Terms of Service Unavailable” — how does it work?
Hi everyone, I’m using StoreKit 2 with .storeButton(.visible, for: .policies) inside my SubscriptionStoreView. The buttons appear correctly, but when tapped, a sheet opens that says “Terms of Service Unavailable” or “Something went wrong. Try again.” I’ve already added the required URLs (Privacy Policy and Terms of Use) in App Store Connect under App Information, but they still don’t show in the sheet. Does anyone know how this is supposed to work? • Are the URLs pulled directly from App Store Connect? • Do they only appear correctly in production? • Or do we need to manually set them in code for testing/TestFlight? Any insight would be greatly appreciated — just want to make sure everything is in place before submitting for review. Thanks!
1
1
113
4d
Duplicate Charges on iOS 26.4 Beta - Refund Request Denied
I am currently running iOS 26.4 Beta and have encountered a critical issue with the in-app purchase system. Due to a system malfunction in this beta version, I was charged multiple times for the same purchase. I have already submitted a formal refund request through the official channels; however, the request was rejected/not processed. Has anyone else experienced similar billing issues on this specific beta build? Any advice on how to escalate this, given that the standard refund process has failed?
0
0
57
4d
StoreKit / react-native-iap – Payment deducted but no transaction returned (India UPI users)
Hello, We are facing an issue with In-App Purchases (subscriptions) in two iOS apps built with React Native + react-native-iap. Issue Some users receive the error: E_CONNECTION_CLOSED during the purchase flow. However: The payment is successfully deducted via the App Store. The subscription appears in the user's Apple ID subscription list. But on our side: The app does not receive the StoreKit transaction callback No receipt or transaction ID is delivered Our backend cannot validate the purchase. Restore Purchases When affected users try Restore Purchases, StoreKit returns: No purchases found even though the subscription is visible in their Apple ID. Most affected users are from India, and many payments are made via UPI through App Store billing. Has anyone experienced a case where: *the user is charged *the subscription exists in Apple ID *but StoreKit never returns the transaction or receipt? Any suggestions on how to recover these transactions would be greatly appreciated. Thanks!
0
0
33
5d
App distributed but IAP - is waiting for review.
Hi, My app VITTRA has been approved and is live on the App Store. also i have already pushed even another update …However, I submitted two in-app purchases along with the app: 1. VITTRA Pro (Non-Consumable) — Status: “In Review” 2. AI Scan Pack (Consumable) — Status: “Waiting for Review” The app binary was approved and distributed, but the IAPs are still under review. My app’s core functionality depends on these purchases being available to users. A few questions: 1. Is it normal for IAPs to remain in review after the app itself has been approved and distributed? 2. Is there an expected timeline for IAP reviews when submitted alongside a new app? 3. Is there anything I can do to expedite the process, or should I just wait? Any guidance would be appreciated. Its a real frustrating situation and there is not a single response from the support. Thanks!
2
0
139
1w
In-App Purchases not loading in production / TestFlight — Previously missing Paid Apps Agreement — App rejected under Guideline 3.1.2
Hello, My app was rejected on iPad (iPad Air 11-inch M3, iPadOS 26.2.1) with two related issues: Guideline 2.1 – Performance – App Completeness “The app exhibited one or more bugs that would negatively impact users. Bug description: the premium subscription cannot be loaded properly.” Guideline 3.1.2 – Business – Payments – Subscriptions “The submission did not include all the required information for apps offering auto-renewable subscriptions.” I am using StoreKit 2 with SubscriptionStoreView to present the auto-renewable subscription. During development: Subscriptions load correctly in the simulator (sandbox). On real devices, I test without a local StoreKit configuration file to fetch products from App Store Connect. The subscription UI (title, duration, price) displays correctly when products are returned. At the time of review, the Paid Apps Agreement was not active. I suspect this may have caused the subscription products to fail loading on the review device. Since then: Paid Apps Agreement is now Active. SubscriptionStoreView should automatically show required metadata. Because the subscription failed to load on iPad during review, the required information (title, price, duration) was not visible, which likely triggered the 3.1.2 rejection. Additionally, in TestFlight I sometimes see inconsistent behavior where the app appears but cannot be installed (“App Not Available”). Also, my app was rejected, but the subscription is still waiting for review. I would really appreciate guidance on the following: Am I potentially missing any required configuration that could prevent products from loading in production? Is there any propagation delay after activating the Paid Apps Agreement that could affect product availability? If I am overlooking something in configuration or testing, please let me know what I should specifically verify before resubmitting. Thank you very much for your help.
1
1
201
1w
Questions on Promo/Offer Code Validation and Functionality for In-App Purchases
We are implementing promo/offer codes for our iOS app’s subscription in-app purchases and have several technical questions regarding validation, receipt data, and integration. Could you please provide guidance on the following points? Testing/Validating Custom Codes Without Production Release: How can we validate custom promo/offer codes in a non-production environment? Current documentation indicates promo codes only work in production, requiring app submission and future release date setup for testing. Receipt Data for Redeemed Codes: The receipt currently includes only offer_code_ref_name, not the exact redeemed code (e.g., “ABC123”) entered by the user. Is there a way to retrieve the specific offer code used via receipts, App Store Server API, or other endpoints? Server-Side Validation Best Practices: What are the recommended best practices for server-side validation of offer codes, including using App Store Server API for transaction verification? Passing appAccountToken for Coupons: How can we pass an appAccountToken when users redeem coupon/offer codes (e.g., via presentOfferCodeRedeemSheet or redemption flows)? StoreKit purchase options support it for regular purchases but not redemption sheets. Callbacks on Coupon Redemption: Is there a client-side callback or notification (e.g., via updatedTransactions or StoreKit observers) when a user successfully redeems a coupon code in the app? Server notifications are received, but app-side feedback appears unreliable.
1
0
136
1w
Edit Legal Entity
**To offer apps or other in-app purchases, you must update your legal entity information prior to signing the Paid Apps Agreement. Edit Legal entity ** Hello everyone, i have for days and weeks tried to change this so i can update my address, but i cannot change it by my own. And all i see is message above Does anyone know exactly how long it takes to be updated by apple support? what other alternatives there to sign up for business agreements so i can not loose much time ? Thanks
0
0
27
1w
App in review for 23 days
I managed to publish the first version of my app at the beginning of February. I was lucky, I guess. On 11th of February, I added a new version which contains in app purchases. The app went "in review" a few hours later and since then ... nothing. After a week or so I sent a first email support. They claim responding in 2 working days: no response. Then I sent another one. 2 days later another one. Tried expedite review several times: nothing. Last week I finally got an answer to my first email: they apologize, blah blah. But still nothing. This is very very annoying. I longtime hesitated to purchase the Apple developer program and finally did it. Now I regret doing so. They seem they don't care about. We buy expensive Apple gear. We develop applications we cannot even install on our devices without Apple developer subscription! And they treat us like this. What is going on, Apple? Are you still there?
3
2
158
1w
Double-counted consumable in StoreKit unfinished and updates workflow
In Getting started with In-App Purchase using StoreKit views and the corresponding sample project, Store simultaneously enumerates Transaction.unfinished and Transaction.updates. Since, "if your app has unfinished transactions, the updates listener receives them once, immediately after the app launches," it appears that Transaction.unfinished would also receive the same unfinished transactions causing handle(updatedTransaction:) to be called for twice for each transaction, causing consumables to be double-counted. Is this a bug in the sample? Is there more information on concurrent execution of unfinished and updates?
1
1
196
1w