Hi there 👋🏻
We are facing an issue that started on 24 June 2025 where some users that have an active subscription with an offer are not being able to use/restore their subscription since Transaction.currentEntitlements is empty.
We have tried to call the server with this endpoint https://developer.apple.com/documentation/appstoreserverapi/get-transaction-history and it's returning the correct transactions correctly.
Any idea what is happening?
Subscriptions
RSS for tagGive users access to content, services, or premium features in your app on an ongoing basis with subscriptions, a type of in-app purchase.
Posts under Subscriptions tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Hi everyone,
I’m seeing a consistent one-day discrepancy between the expiresDate returned by the App Store Server API and the “Expires on” date shown in the iOS Settings / App Store subscription list. I’d like to confirm whether this behavior is expected or if I’m misunderstanding the way Apple rounds dates.
Reproduction steps
Step
Action
Result
1
Purchase a 1-month auto-renewable subscription on 23 June 2025 14:00 JST (UTC+9)
Transaction succeeds
2
Immediately fetch the transaction with GET /inApps/v1/subscriptions/{transactionId}
Response contains "expiresDate": "2025-07-23T05:00:00Z" (= 23 July 2025 14:00 JST)
3
On the same device open Settings › Apple ID › Subscriptions (or App Store › Account › Subscriptions)
UI shows Expires on: 22 July 2025
The same happens for every monthly renewal and on multiple devices. Region is Japan, device time zone Asia/Tokyo.
What I understand so far (and my hypothesis)
Apple’s docs say a monthly subscription renews “on the same calendar date” of the next month, so renewal in this example is 23 July.
If the renewal is scheduled for 23 July at 14:00 JST, the subscription is fully usable until the end of 22 July in calendar terms, because the new billing period starts the moment the 23rd begins in Apple’s canonical time zone.
Therefore, it might be intentional for the UI to display 22 July—i.e., “you can keep using it through the 22nd; on the 23rd it renews.”
This hypothesis makes sense internally, yet it still looks confusing to end users who read “Expires on 22 July” and assume access ends at 00:00 on the 22nd, a whole day earlier than in reality.
Questions
Is showing the day before the renewal date the official/expected behavior? If so, could Apple clarify that the “Expires on” label represents the last full calendar day rather than the exact expiry timestamp?
Which value should we surface in-app when telling users “Your subscription is valid until …”?
The server’s expiresDate (precise to the second, converted to user time zone), or
A UI-style date that’s one day earlier, matching Settings / App Store?
Does Apple have a public document describing this rounding/visual convention?
Have other developers encountered user confusion about the apparent 1-day “shortening” and, if so, how did you word your in-app messaging?
Any insight from Apple engineers or fellow developers would be greatly appreciated.
Thank you!
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
App Store
StoreKit
App Store Server API
How do I escalate for app review rejection, my app gets rejected, but there are apps with the same modal but for a disfferent company doing exactly what I was rejected for? This looks like double standards to me, and it feels completely unfair, and all the reviewer does is paste in a section of the policy that is no help whats so ever.
The issue is, a community app and people join the community through the web site, and the app is a utility extension for the users, but my app is rejected saying I must offer in app purchase, but another couple of apps doing exactly the same thing are not offering in app purchasing capability, but do link to their web site where purchasing is available?
Hi. My company has a product that has been launched on a web app, a mobile app and an extension in Chrome browser. Currently we are building the extension for Safari, however, we have been rejected.
According to Apple, the reason is that we offer Premium feature inside the extension; however, the extension doesn't offer any purchase option. Has anyone had experience with this? Do we need to develop the purchase function within the Safari extension?
Our product has both Free plan and Premium plan that is subscription-based. We have offered a purchase feature on the website, on the web app, and mobile app
Went through several rounds of rejections this week and finally the app was approved. Unfortunately I just discovered that my Subscriptions and Localization are still "In Review" and "Waiting for Review". It's baffling to me that either the reviewer could overlook this or the system allows for this scenario. All issues flagged in the review process were addressed as requested too.
I've already emailed and called about this but they have no eta on when it will be resolved. This seems entirely preventable and it's very frustrating as this has delayed my release.
Is there anything else I can do to get this resolved?
I am a test engineer. When I subscribe with a sandbox account in a test project, I find that the prompt "Not allowed to create an iTunes account" appears, but my account was successfully added in the sandbox. I tried two different email suffixes @gmail.com and @tester.com, and both showed this prompt. The developers in the team were also unable to solve this problem. Does anyone know how to deal with this situation?
Hello,
I'm receiving error StoreKit: Failed to get response from platform.
I have user in SandBox, that user is logged on physical device,
I have correct bundleID.
Product is Approved
I tested via StoreKit configuration file and that worked just fine.
also tried to build app and push to test flight, this way same error.
Any recommendations what I can check ?
Thanks
Hi everyone,
We're working on a fitness and wellness app that offers subscription-based content like workout videos, nutrition plans, and personal coaching.
We've read the updated documentation on the External Link Account Entitlement (ELAE), which allows certain apps to include a link to an external website for account management and payments.
However, based on what Apple describes as eligible “reader apps” (video streaming, books, audio, etc.), it's unclear whether fitness apps can apply for and use this entitlement.
Our questions:
Can a fitness app use the External Link Account Entitlement to link out to a web-based subscription page?
If not currently supported, is there any plan to expand this to other categories like health & fitness?
We are fully compliant with App Store IAP rules today, but we're exploring all legitimate options as we aim to provide a smooth and transparent experience across platforms (iOS, Android, and web).
Any insights from the community or Apple team would be appreciated!
Thanks,
Onur Hazar
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
Subscriptions
In-App Purchase
Apple Pay
Hi,
Using StoreKit 2 with App Store Server notifications like so:
User selects a purchase
App calls Product.purchase()
If successful, App Store notifies our backend with the transaction details, importantly with a UUID for the transaction ID.
This works fine, but when I try to test contingent pricing via the handy StoreKit config Transaction Manager in Xcode by creating a PurchaseIntent if I then complete the purchase in the app the Transaction ID is sequential, (0 for the first, 1 for the second etc), which doesn't work for us as the backend might already have that ID stored so the purchase never completes.
If I disable the config file it works fine, but then I can't use the Transaction Manager debug tool. Is there a way to override the ID of a custom transaction that's created via the StoreKit configuration?
Thanks
Issue Description
The submission did not include all the required information for apps offering auto-renewable subscriptions.
The app's metadata is missing the following required information:
A functional link to the Terms of Use (EULA). If you are using the standard Apple Terms of Use (EULA), include a link to the Terms of Use in the App Description. If you are using a custom EULA, add it in App Store Connect.
Next Steps
Update the metadata to include the information specified above.
Resources
Apps offering auto-renewable subscriptions must include all of the following required information in the binary:
Title of auto-renewing subscription (this may be the same as the in-app purchase product name)
Length of subscription
Price of subscription, and price per unit if appropriate
Functional links to the privacy policy and Terms of Use (EULA)
The app metadata must also include functional links to the privacy policy in the Privacy Policy field in App Store Connect and the Terms of Use (EULA) in the App Description or EULA field in App Store Connect.
Please let me know where I have to add this link (EULA). And by EULA, they mean a simple terms of use link, or is it something else?
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
Subscriptions
StoreKit Test
StoreKit
In-App Purchase
Hi there,
we have an issue with subscription renewal process.
The price of the subscription is 169USD/year. But we see that some of the users renew at 129USD while other renew at normal 169USD price. What is the reason these users renew at lower price?
Best regards,
Mykhailo Tys
My app / subscription gets rejected with the following:
Guideline 2.1 - Performance - App Completeness
We have returned your in-app purchase products to you as the required binary was not submitted. When you are ready to submit the binary, please resubmit the in-app purchase products with the binary.
and
Your first subscription must be submitted with a new app version. Create your subscription, then select it from the app’s In-App Purchases and Subscriptions section on the version page before submitting the version to App Review.
Once your binary has been uploaded and your first subscription has been submitted for review, additional subscriptions can be submitted from the Subscriptions section. Learn More
...ive tried all kinds. I archive a new build, upload it, update the app information top show new build so it ties in...and still nothing works. it is incredible frustrating.
Can anyone help please. Ive wasted days on this
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
Subscriptions
App Review
App Store Connect
App Binary
I have setup offer codes and subscriptions for users to purchase, when a user signs up using an offer code outside of the app the offer code does not save into my database where the subscriptions are saved
the transaction is successful and validated by store kit but I cant see that that user used an offer code - an example
https://apps.apple.com/redeem/?ctx=offercodes&id=6744338284&code=ASKDOM
I then setup an edge function in supabase to retrieve the data that store kit sends back and im not sure where to find the offer code as it still doesnt save
is there an internal apple reference that they use as apposed to the users offer code i.e offer code askdomSA = P3050 for example
how can Identify if an offer code was used
thank you
🔹 Description of the issue:
My app uses Adapty to fetch and display in-app subscription products on a paywall. The system has worked perfectly until recently. After I edited the localizations of the subscriptions in App Store Connect, they were temporarily rejected. Since that moment, the products no longer show in the app.
Even though I re-submitted the localizations and they were approved, StoreKit still does not return any products, and Adapty returns the error:
less
CopyEdit
AdaptyError(code: 1000, message: "No products were found for provided product ids")
🔹 Error Message:
noProductIDsFound — from Adapty SDK when attempting to load paywall products.
🔹 Steps to Reproduce:
Open the Aida Nena app (App ID: 6737695739).
Sign in with a test account or create a new one.
Go to Profile → Subscription.
The paywall will show but no products will appear.
Logs show Adapty attempting to fetch product IDs but none are found in StoreKit.
🔹 What I’ve Tried:
Re-activating the Adapty SDK.
Forcing a cache reset via app reinstall.
Re-checking App Store Connect: all subscriptions and localizations now show Approved (green).
Waiting several hours in case of propagation.
Verifying correct product identifiers are in use — they haven’t changed.
🔹 My Hypothesis:
The StoreKit product metadata is still not properly refreshed after the rejection and re-approval of the localizations. This is preventing Adapty (and StoreKit) from returning the product data even though the products are live and approved.
🔹 Additional Info:
SDK: @adapty/react-native + Adapty iOS SDK under the hood.
This seems to be a known edge case among developers after a product's metadata/localization is changed and re-approved.
Thanks, I appreciate any help.
Hi Apple Team,
I'm a Nigerian developer building an app for local users, and I’m facing a major challenge:
Due to CBN regulations, most Nigerian cards can’t make international payments and do not support Dynamic currency conversion, which means In-App Purchases (IAP) don’t work for most Nigerians.
My app involves real-world services with external rewards and users would have to subscribe to be members, yet it’s unclear whether IAP is still mandatory.
If I am forced to use IAP, most Nigerian users simply can’t pay, and I lose nearly all revenue.
Questions:
Can developers targeting Nigeria use local gateways like Paystack or Flutterwave instead of IAP ?
Will Apple provide alternatives or guidance for regions where IAP is effectively unusable?
This is a critical issue for many local developers. I’d appreciate any official clarification.
Thanks,
Joseph
(Nigerian Developer)
Topic:
App Store Distribution & Marketing
SubTopic:
General
Tags:
Subscriptions
App Store Receipts
Advanced Commerce API
I have created an app and for the final stage i added subscription feature. This works great in testflight, but not when i push out to external testers. I set up what i needed to in apple store connect (i must have done it right as it works in testflight), and i linked it to th emost recent version.
Nothing I do seems to get the sub info to display and pull through to the app in the sub box when selected. No price and the usual stuff.
I was told send for review. Failed the review and im working on that but something tell sme this is a glitch athat needs fixed on my account maybe.
Can anyone help please
Hi, I'm reaching out to report a recurring issue with in-app purchases on iOS that seems to be related to Apple’s transaction handling — not to third-party libraries.
In my Flutter application, I use both StoreKit2 and StoreKit1 (for comparison) via different packages, including the official in_app_purchase package. However, in both cases, I’m experiencing unexpected reuse of transactionId and appTransactionId values, even when initiating fresh purchases with unique appAccountToken values.
Problem Summary:
Purchase Stream Returns Old Purchases
When calling buyNonConsumable() with a new product, the purchase stream still returns data for a previously purchased product, despite clearing all Sandbox transactions and using a new applicationUserName for each attempt.
Transaction IDs Reused Across Distinct Purchases
Even when generating a new UUID for appAccountToken on each purchase, the returned appTransactionId and transactionId are reused — this breaks our server-side logic, which expects these fields to uniquely identify purchases and users.
Example Logs:
// First purchase
{
"appAccountToken": "2d5a0880-f68e-44a7-a414-f51204e63904",
"appTransactionId": "704464472748013865",
"transactionId": "2000000928154716"
}
// Second purchase (different user context)
{
"appAccountToken": "2d5a0880-f68e-44a7-a414-f51204e63904",
"appTransactionId": "704464472748013865",
"transactionId": "2000000928429780"
}
Even when using a different productId, the appTransactionId stays the same. When using StoreKit1, the productId updates properly, but the transactionId still matches the previous one.
This behavior also affects App Store Server Notifications (V2): we have observed notifications tied to appAccountTokens from completely different user accounts (based on internal logs), sometimes delayed by days or weeks.
I’ve prepared a reproducible example using the official Flutter in_app_purchase sample with minimal changes — you can find it here:
Github gist
The code is almost identical to the package example. I only added UUID generation for applicationUserName in _getToken(). In the actual app (not in this example), I retrieve the token from an API.
Additional Observations from the Community:
We’ve also found similar issues reported in other frameworks and languages. For instance, a developer using react-native-iap observed that App Store Server Notifications in TestFlight were tied to previously deleted users, even after signing up with a new user account and generating a new appAccountToken. Details here:
User A deleted → User B signs up → receives upgrade event with User A’s token
Notification uses appAccountToken from old account, not the new one
This strengthens the suspicion that the issue may be related to how Apple associates transactions with Apple IDs in test environments.
Questions:
Is it expected for transactionId or appTransactionId to persist across purchases within the same Apple ID, even for different user contexts (e.g., separate logins in the same app)?
Is there any official recommendation for avoiding this kind of data reuse in Sandbox or TestFlight environments?
Should I expect appAccountToken in server notifications to always match the latest value provided during the purchase?
Thank you in advance for your assistance. I would appreciate any clarification or advice regarding this issue, as it impacts production logic that relies on these identifiers being unique and consistent.
Topic:
App & System Services
SubTopic:
StoreKit
Tags:
Subscriptions
StoreKit Test
StoreKit
In-App Purchase
I am stuck.
Apple asked me to modify the Name/Description of one of my Subscriptions.
But the subscription is "In Review" and everything (including the save button) is disabled. It's lierally impossible for me to update the Name/Description like they are asking for.
I have tried rejecting my submission but they are still locked. I have asked Apple Review for help - like changing the status so that I can edit them but they won't.
I can't get out of review until I modify the Name/Description of a Subscription but I can't update the Name/Description of a Subscription until I'm out of review.
HELP!! 😭
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Tags:
Subscriptions
App Review
In-App Purchase
After I configured a consumable subscription(In App Purchases) on the apple platform, when I change the price in the App's server, is there any existing apple Api support to change the price on the apple platform? Of course, I know I need to resubmit.
We are trying to implement / test in-app purchase for our subscription purchase in the app. We have done all the steps listed in the documentation on apple's website; and
Our subscription plan is sitting in 'Ready to Submit' state.
However, we are getting an empty response from,
final response = await _iap.queryProductDetails({'com.company.xyz.basic1m'});
debugPrint(" Check: ${response.toString()}");
debugPrint("❌ Responses: ${response.productDetails.map((ProductDetailsResponse)=>ProductDetailsResponse.toString()).toList()}");
debugPrint("❌ Responses: ${response.productDetails.length}");
if (response.notFoundIDs.isNotEmpty) {
debugPrint("❌ Not found: ${response.notFoundIDs}");
} else if (response.productDetails.isNotEmpty) {
debugPrint("✅ Product loaded: ${response.productDetails.first.title}");
}
The response we get is,
flutter: Check: Instance of 'ProductDetailsResponse'
flutter: ❌ Responses: []
flutter: ❌ Responses: 0
flutter: ❌ Not found: [com.company.xyz.basic1m]
Note: We are testing with a real device iphone 13 mini via Xcode.
We tried to test using, ''com.apple.test.Subscription1.monthly'', as instructed but we have not been successful with that. And seems like (based on online search), it doesn't work all the time.
We also searched online for a solution, and some of the forums suggest that we have to submit the app for review when adding subscription for the first time. It doesn't mention the same that in the apple documentation. It confusing.
Help and guidance in this regard would be really appreciated.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Tags:
Subscriptions
StoreKit Test
App Store Connect
In-App Purchase