Hi,
I am trying to get an app approved. In app purchases say that I need to fix something without saying what needs fixing. I can't add the in-app purchases to the app review and that one does not pass because there are in-app purchases missing.
How can I fix this issue? I assume that during review someone could just write whats missing but obviously they won't.
The message I received said:
One or more of your In-App Purchases has been returned for the following app:
Literally nothing else.
Regards,
In-App Purchase
RSS for tagOffer extra content, digital goods, and features directly within your app using in-app purchases.
Posts under In-App Purchase tag
200 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
There is a project that has been running online for years. A few months ago, a player reported that after making their first successful IAP at a specific purchase point, any subsequent attempts to purchase the same item do not trigger the payment window. Instead, they get the error:"This in-app purchase has already been bought".After contacting Apple Support once, the player was able to make a payment, but the issue reappeared on the next attempt. So far, this is the only user reporting the problem, other people can purchase normally.
Question1:
Here’s what I’ve tried:
I reviewed the code and ensured that TransactionObserveris correctly called.
I’ve also added **[[SKPaymentQueue defaultQueue] finishTransaction:transaction]**in all possible places, but the issue persists.
According to the logs, after the user’s first purchase, every subsequent IAP attempt returns the same receipt from the initial successful transaction, even though I’m certain finishTransactionis being called. It seems like this method isn’t having the intended effect.
Question2:
I asked the player to manually trigger the Restore Purchases button by calling [[SKPaymentQueue defaultQueue] restoreCompletedTransactions].
the restoreCompletedTransactionsFailedWithErrorcallback returned the following error:
Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made."
The player has already checked their device time and tried switching between Wi-Fi and 4G, but the error remains. Is this SSL error related to the "already bought" error? Note that this SSL issue occurred during a separate restore process, not during a purchase attempt.
Question: 3:
I noticed that I’m not calling finishTransaction inside the restoreCompletedTransactionsFailedWithErrorcallback. Should I add it there?
Purchase Logs:
The player clicked "Restore Purchases" and then attempted another purchase. The purchase flow appears normal, but the IAP returns an old, already-used receipt.
[2025-12-10 17:41:38:995] Restore transaction failed: Error > Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a > secure connection to the server cannot be made."
[2025-12-10 17:41:40:010] Restore transaction failed: Error > Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a > secure connection to the server cannot be made."
[2025-12-10 17:41:42:011] buy method called... productID: > huoxiancj_648 orderID: 22674511
[2025-12-10 17:41:42:107] ----Log Observers ID----
[2025-12-10 17:41:42:108] ObserverID: 0x109968890
[2025-12-10 17:41:42:108] Processing unfinished transactions...
[2025-12-10 17:41:42:108] Finished processing unfinished > transactions.
[2025-12-10 17:41:42:108] Allowing in-app purchase...
[2025-12-10 17:41:42:215] Requesting product info...
[2025-12-10 17:41:42:989] productsRequest didReceiveResponse:
[2025-12-10 17:41:43:066] Invalid Product ID: (
[2025-12-10 17:41:43:066] Purchase quantity: 1
[2025-12-10 17:41:43:066] Product info:
[2025-12-10 17:41:43:067] Price: 648
[2025-12-10 17:41:43:067] Product ID: huoxiancj_648
[2025-12-10 17:41:43:067] Validating product info...
[2025-12-10 17:41:43:067] Sending payment request...
[2025-12-10 17:41:43:067] requestDidFinish
[2025-12-10 17:41:43:132] paymentQueue updatedTransactions.
[2025-12-10 17:41:43:133] updatedTransactions case > SKPaymentTransactionStatePurchasing
[2025-12-10 17:41:43:208] [payment.applicationUsername] > userid=50306496 appid=1045 instid=12844 reserve=xxxx > productID=22674511
[2025-12-10 17:43:16:008] paymentQueue updatedTransactions.
[2025-12-10 17:43:16:008] updatedTransactions case > SKPaymentTransactionStatePurchased
[2025-12-10 17:43:16:008] productIdentifier= huoxiancj_648
[2025-12-10 17:43:16:113] Sending receipt to server for validation.
[2025-12-10 17:43:16:113] Transaction completed.
Any help or suggestions would be greatly appreciated! Thanks in advance.
Dear Reviewers/Apple Team/Community,
We have trying to submit our app continuously for review and being rejected continuously by Apple. Our app works perfectly fine in TestFlight using the same ID apple is using. We have also provided recorded video of the testing in TestFlight to Apple reviewer. However, despite our requests below things are not done:
Before testing the in-app purchase subscription are not being approved, despite us requesting the same every time during submissions.
At times we are getting snapshots under error category, where everything is correct even from Apple testing.
We have no other way but to explain, give snapshots, give videos to Apple to help them understand how to test the app.
We have requested the reviewers multiple times for a call, but we got a call only 1 time.
We are not sure what is the way we can get to talk with the reviewer and understand from them the issue they are facing.
Can anyone please help us out? Below is one example, it was given it us under error category, where even with apple standard, the purchase is successful.
Can someone help us out plz.
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
Subscriptions
App Store Connect
In-App Purchase
App Store Receipts
Dear Apple Support,
I am writing to report a payment issue with my App Store Connect developer account.
The latest payment is marked as "Paid" in the Payments and Financial Reports section, but as of today, more than 3 business days have passed and the funds have not yet arrived in my bank account.
I have double-checked that my banking information is accurate and up to date. I would appreciate it if you could investigate this issue and provide further clarification on the current status of the payment.
Thank you in advance for your support.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
App Store Connect
In-App Purchase
Developer Program
I'm experiencing an issue where monthly and family monthly subscriptions fail immediately with "purchase cancelled" in TestFlight, while yearly and family yearly subscriptions work correctly.
Setup:
All 4 products in same subscription group
All show "Ready to Submit" status
Using react-native-iap with StoreKit 2
Testing in TestFlight sandbox
The Problem:
Yearly subscriptions work fine
Monthly subscriptions fail immediately with E_USER_CANCELLED (no dialog appears, user didn't cancel)
What I've verified:
No active subscriptions (getAvailablePurchases() returns empty)
No pending transactions
Same subscription group for all products
Product IDs match App Store Connect
Code is identical for all products
Error: E_USER_CANCELLED fires immediately when calling requestPurchase() for monthly products, but yearly products proceed normally.
Questions:
Why would monthly fail while yearly works (same group, same config)?
Could this be sandbox state corruption for monthly products?
Should I delete/recreate the monthly products?
Any insights would be appreciated!
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
Subscriptions
StoreKit
In-App Purchase
TestFlight
会员等级进行升级?需要按天计算费用,像爱奇艺这样是怎么做的?
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
StoreKit
In-App Purchase
App Store Server API
Advanced Commerce API
Hi there! Whenever I try to add a new Offer Code for my app's subscription, I get an unknown error. When I get to the last step of the "Create Offer for Codes" flow, I get an error that error reads "An error has occurred. Try again later." I have been getting this same error for over a week now, so any help figuring out how to add new offer codes would be greatly appreciated!
As a developer I have a question I would like cleared up. We offer two tiers of annual subscriptions in our apps. These subscriptions are under the same subscription group in App Store connect. My question is, if a user purchases tier 1 of the annual subscription for $10.00, and uses it for 6 months; then chooses to upgrade to tier 2 which costs $20.00 per year. Would the user be pro-rated the difference in price i.e. charge only another $10.00 at the time of the upgrade., or are they charged $20.00 and then refunded the difference in their remaining lower tier subscription? I keep finding inconsistent answers across the Apple community forums on this.
Dear Apple Developer Support Team,
I hope you are doing well.
We are reaching out to request clarification and guidance regarding the In-App Purchase (IAP) requirements for our upcoming iOS application.
Our app offers paid access to digital video content. Each video has a dynamic price determined by our backend based on multiple factors (such as duration, category, and promotions). Additionally, users are allowed to select and purchase multiple videos at the same time, which results in a combined total price that varies per transaction.
Challenges we face with IAP on iOS
Dynamic pricing:
Apple requires IAP products to have static pricing defined in App Store Connect.
Our video prices change frequently and cannot be represented by fixed IAP product SKUs.
Multiple-item purchases:
iOS does not support a single purchase that includes multiple different IAP products.
Processing many separate IAP transactions in sequence results in a poor user experience and is likely to cause failures.
Product creation limitations:
Since our catalog contains many videos with frequently changing prices, it is not feasible to create individual IAP products per video.
Given these restrictions, we are unclear how to remain compliant while still providing a functional purchase flow for our users.
Question
In this scenario, where:
video prices are dynamic,
users may purchase multiple videos together, and
IAP does not support multi-item purchases or dynamic pricing,
are we allowed to use Stripe or another external payment provider to handle these purchases?
If not, we would appreciate Apple’s guidance on what the recommended and compliant approach would be for apps that must price digital content dynamically and allow bulk purchasing.
We want to ensure full compliance with App Store Review Guidelines and would like confirmation on the correct implementation strategy before proceeding.
Thank you for your time, and we look forward to your clarification.
Kind regards,
Muhammad Adnan
Koderlabs
Hello — quick question about App Store Server Notifications migration.
We have a live app using Production V1 notifications for recurring in-app subscriptions. We plan to switch the Production webhook to V2. After the switch:
Will notifications for existing subscriptions be delivered in V1 format, V2 format, or will it depend (e.g., queued V1 retries vs new V2 deliveries)?
If V1 retries are queued, how long should we expect overlap/retries to continue?
Any recommended cutover best practices (support both formats, revert process, etc.)?
Happy to share additional details.
Thanks.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
App Store
In-App Purchase
App Store Server Notifications
I'm an app developer, and I recently launched a monthly subscription product in my app on the App Store. However, I'm having trouble understanding the App Store's renewal date calculation policy.
According to the official documentation, if a subscription is purchased on December 1st, the next renewal date should be January 1st. But the expiresDate is set to December 31st instead.
At first, I thought this might be a timezone issue, but even after it became December 1st in UTC, the renewal date was still set to December 31st.
Is the timezone used to calculate renewal dates not UTC+0? Or is there documentation on the renewal cycle policy that I might have missed?
Any clarification would be greatly appreciated. Thanks in advance!
Topic:
App Store Distribution & Marketing
SubTopic:
General
Tags:
Subscriptions
In-App Purchase
App Store Server Notifications
Dear all,
This is my first post in this forum - and, in fact, my first app, too! I'm glad to be here, and thanks in advance for your help.
I'm looking to offer an app for a one-time payment. I'd also like people to be able to try the app for a week.
It seems that the "Pricing and Availability" section in App Store Connect is not the right place to configure this kind of offer. It does allow me to set a one-time price, but I cannot find a trial-period there (or am I missing something?)
Two different strategies seem possible here:
Using in-app-purchases: make the actual app free, but ask users after a week to buy a non-consumable IAP. The problem with that: I need to verify that the app has been installed for seven days ... even if it has been uninstalled at some point.
Using subscriptions: There is a "free trial" option for subscriptions. But after that free trial, subscriptions are being payed periodically. I'd rather have the user only pay once for lifetime-access.
Some apps seem to use strategy 1 - I believe the "Lap swim" app does. But still it seems like a bit of a hack - is there a more elegant way to achieve this?
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
In-App Purchase
App Store Connect
StoreKit
Subscriptions
Hello, I’m developing an app that provides physical services such as equipment storage, maintenance, pickup, and delivery.
The app does not provide any digital content, digital features, or any form of digital subscription.
For payments, we are using an external payment gateway (similar to Stripe Billing or Braintree):
iOS: Users are redirected to Safari to complete the payment.
We also plan to support annual automatic renewal billing, using the payment gateway’s “billing key” or “recurring billing” feature.
This is essentially a card auto-charge for a physical service, and it is not an in-app subscription.
I want to ensure that our implementation is fully compliant with Apple’s App Store Review Guidelines, especially 3.1.5(a) regarding physical goods and services.
I would appreciate guidance on the following:
For apps providing physical services, is it acceptable to process payments through an external browser (Safari) instead of using In-App Purchase?
Is recurring billing / automatic renewal with an external payment provider allowed, as long as the service being billed is physical and not digital?
For apps offering only physical services, should we completely avoid using the Monetization → Subscriptions section in App Store Connect, since those subscription products apply only to digital content?
Our goal is to ensure that the app follows Apple’s policies correctly and does not mistakenly fall under the category of digital subscriptions.
Thank you very much for your help.
Topic:
App Store Distribution & Marketing
SubTopic:
General
Tags:
Subscriptions
App Review
App Store Connect
In-App Purchase
最近我们有个应用要对接App 内购买项目,有什么好的资料或者demo提供一下吗?
I would like to inquire about the originalTransactionId of StoreKit2.
Users who purchase auto-renewal subscription products
To re-purchase the same subscription item after cancellation and prior to refund
If you receive a refund after cancellation and re-purchase the same subscription item
If you do not renew immediately after expiration and re-purchase the same subscription after a long period of time
I would like to ask if 1, 2, and 3 all use the same value as the original Transaction Id at the initial subscription.
In the case of 3, if you re-purchase more than a few days after the last subscription purchase, please let me know if there are any detailed conditions such as the original Transaction Id not maintained.
Hello,
My app "MyCourses" (bundle id: com.ahmedbaqer.mycourses) was rejected under Guideline 2.1 because "No action followed when we tapped the button to subscribe to a course" on iPadOS 26.1.
When I run the same code (version 1.0.0 (11)) from Xcode on a real device using a StoreKit configuration file (In App Purchase.storekit), the purchase flow works correctly:
When I tap the "Subscribe via Apple" button, the App Store purchase sheet appears.
The purchase completes successfully and unlocks the course.
I use the in_app_purchase Flutter plugin and queryProductDetails to load products.
However, when I install the build via TestFlight (and in App Review), tapping the same "Subscribe via Apple" button does nothing – which matches the behavior described by App Review. From my logs it looks like queryProductDetails is returning an empty productDetails list in that environment.
For In‑App Purchases:
I created 7 non‑consumable products in App Store Connect.
Their Product IDs exactly match the IDs in my In App Purchase.storekit file (used only for local Xcode testing).
All IAPs are now in "Waiting for Review" status and are linked to the iOS app version 1.0.0 (11) in the “In‑App Purchases and Subscriptions” section.
At the time of the original review, some IAPs were in "Developer Action Needed / Rejected" state, so I suspect queryProductDetails may have returned no products and the reviewer saw no action after tapping the button.
My questions:
When IAP products are in "Waiting for Review" and linked to the app version, should queryProductDetails return them during App Review / TestFlight, or do they need to be fully approved first?
Is there any additional configuration required so that the subscribe button reliably shows the App Store purchase sheet for reviewers (for example, any specific StoreKit / sandbox settings)?
Are there recommended best practices to show a clearer error state when queryProductDetails returns no products, so that App Review understands this is a configuration / IAP-status issue rather than a UI bug?
Any guidance from Apple engineers or other developers who faced a similar situation would be greatly appreciated.
Thanks in advance.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
StoreKit Test
StoreKit
In-App Purchase
TestFlight
Hi all,
I’m currently testing an auto-renewable subscription whose availability is restricted to Japan only (all other territories disabled in App Store Connect).
However, when testing in the Sandbox environment, the behavior does not match the availability settings:
Sandbox Apple ID storefront: Taiwan
Subscription availability: Japan only
StoreKit 2 (Product.products(for:)) still returns the product
Sandbox purchase succeeds even though it should be unavailable in this region.
Questions
Is this expected behavior in the Sandbox environment?
Does Sandbox not enforce subscription territory availability?
Is this a known limitation where Sandbox validates the purchase flow only, without applying real storefront availability rules?
Will territory restrictions be enforced correctly in production once the app and subscriptions are “Ready for Sale”?
Is there any recommended way to test storefront-based availability before release?
Thanks in advance!
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
Tags:
Subscriptions
StoreKit
In-App Purchase
Trying to test IAP in sandbox. I created the test group and tester accounts. Accepted the invite downloaded the app. Signed into to sandbox in settings with the tester account. In app the purchases are failing and throwing my catch error message product couldn't be found. I decided to test it from settings/ sandbox/ manage/ initiate purchase/ but I've been getting "can't complete transaction. Something went wrong, ant this transaction couldn't be completed. Try again later" since last week. I reached out to dev support over the phone then email and they couldn't or wouldn't provide assistance. I asked my senior at work she took a look at it and confirmed I created the IAP correctly and that my sandbox account could make test purchases in apps she make but couldn't get mine to work. The storekit test work fine in xcode I just don't know what to do now.
StoreKit error:Storekit has failed to fetch this product.
We implemented in-app purchases using StoreKit2. During testing, we were able to make purchases smoothly in various ways without any issues. However, the reviewers encountered this error, and it happened 100% of the time.
Topic:
App & System Services
SubTopic:
Tap to Pay on iPhone
Tags:
StoreKit Test
StoreKit
In-App Purchase
Hello,
I’m experiencing an issue with StoreKit 2 when passing a new appAccountToken for each purchase request.
Case-ID: 15948169 (for DTS reference)
Description of the Problem
When initiating a purchase, I generate a new UUID to use as the appAccountToken:
let serverTransactionId = UUID()
let options: Set<Product.PurchaseOption> = [
.appAccountToken(serverTransactionId)
]
let result = try await product.purchase(options: options)
Expected Behavior:
Each new purchase should return the updated appAccountToken that I pass into the purchase options.
Actual Behavior:
The payload response after success always contains the same appAccountToken from the very first transaction. It ignores subsequent UUIDs I pass and keeps reusing the original one.
This causes issues because the same identifier is being reused across multiple transactions, making it difficult to map purchases to the correct user session.
Steps to Reproduce
Generate a fresh UUID using UUID().
Pass it as .appAccountToken when calling purchase().
Complete the transaction in the sandbox environment.
Inspect the payload response → The appAccountToken value is always the same as the first one used, not the newly provided one.
Additional Info
I do have a focused test project that reproduces this issue.
The issue appears specific to appAccountToken persistence across multiple transactions.
Has anyone else experienced this behavior with StoreKit 2? Is this expected (Apple caching the first token) or could this be a bug?
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit
In-App Purchase
App Store Receipts