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

105 Posts

Post

Replies

Boosts

Views

Activity

The Apple review team is unable to fetch in-app purchase products.
Hello, I’ve uploaded a new build of my macOS app with the first two in-app purchases, but it was rejected under 2.1.0 Performance: App Completeness. After further investigation, it seems that the Apple review team is unable to fetch products. The following code: private let productIDs = ["co.app.freetrial", "co.app.full"] self.products = try await Product.products(for: productIDs) is returning an empty array. (In the TestFlight build, it correctly returns the products.) For me, everything works as expected via Xcode and on a fresh machine using TestFlight. Here’s what I’ve tried so far: The in-app purchases were added to the binary with the first build. I confirmed that each in-app purchase is free of any yellow or red warning messages. Downloaded the app from TestFlight and confirmed that all in-app purchases are available. Updated the in-app purchase price in App Store Connect and verified that the new price is reflected in the app (to rule out any ID mismatches). Reviewed all agreements to ensure no missing signatures. (A few sources online suggested that this could potentially cause issues with in-app purchases for the review team.) I created a new build using a 3rd-party certificate and a provision profile. (Older builds - before adding in-app purchases - were signed with a development certificate and no provision profile, yet they still made it to the App Store. I’m not sure how that was possible or if it contributed to this issue.). Despite these steps, the app continues to be rejected for the same reason. I’m struggling to understand how products are successfully fetched for testers via TestFlight while the review team repeatedly sees zero products. Any guidance on how to resolve this would be greatly appreciated. Thank you
3
0
273
May ’25
RevenueCat paywall and apple review process unable to progress through paywall
I submitted for the first time my app and in app subscription together. do the subscriptions get approved separately? it seems like a loop. in the paywall of my app only for apple its failing to load payments/subscription info which im assuming to be the fact that my in app subscription didn't get approved yet, its currently waiting for review (first time submitting subscription). Meanwhile the app gets rejected multiple times because the reviewer can't seem to go beyond the paywall due to failure to load payments. Is this the similar experience anyone had? Do you have info that'd be helpful to give to the reviewers?
1
1
149
Oct ’25
Issue getting back only a subset of product IDs for purchase controller
As of today we seem to continuously get back 21 of the product IDs we have defined when the shop initializes. This is causing what looks like intermittent bug behavior in our shop. The IDs sent each time are random (not always the same 21). So sometimes they match shop offers and the packs look right and can be bought and sometimes the ones our current shop offers need are not sent and so the offers in game look wrong and error when you try to buy. Is anyone else seeing this new behavior of not getting down all their product IDs successfully?
0
1
103
May ’25
StoreKit doesn't always work correctly in sandbox environment
There is an issue with StoreKit. The line let products = try await StoreKit.Product.products(for: ids) doesn't always work correctly. Sometimes it returns an array with the correct data, and sometimes it returns an empty array. I'm passing the correct ids to products(for:). This problem only occurs when using the sandbox environment (in TestFlight builds). In the App Store version, everything works fine. StoreKit configuration is none. All IAPs are approved. Everything was working fine before this. The problem was discovered on May 1, 2025.
3
15
545
May ’25
How to Best Practices for Implementing In-App Purchases (IAP) in Mobile Apps and Backend Systems
Hello everyone, I’d like to ask for your input regarding best practices for implementing In-App Purchases (IAP) across both the frontend and backend. Here’s our current flow: -Frontend (Mobile) The user opens a specific page. We initiate a payment request using react-native-iap. After the user completes the payment, we send the purchase data (receipt) to our backend. Backend: Accept the purchase receipt from the app. Validate the receipt with Apple’s server. (GET https://api.storekit.itunes.apple.com/inApps/v1/transactions/{transactionId}) If the receipt is valid and the response indicates success, we mark the payment status as PAID. We store the transaction ID in our payment module. The Issue: We recently encountered a situation where Apple returned a valid receipt, so we marked the transaction as PAID. However, later we realized that the payment status was actually Pending. { transactionId: '70002676245699', originalTransactionId: '70002676245639', bundleId: '', productId: '', purchaseDate: 1745560404000, originalPurchaseDate: 1745560404000, quantity: 1, type: 'Consumable', inAppOwnershipType: 'PURCHASED', signedDate: 1745981078460, environment: 'Production', transactionReason: 'PURCHASE', storefront: 'SGP', storefrontId: '', price: 5000, currency: 'SGD', appTransactionId: '' } This raised a few questions: Does a Pending status always resolve to Paid, or is there a risk that Apple may later mark it as Failed or Unpaid? Is there a specific field in Apple's receipt response that reliably indicates whether the purchase is truly active? Should we hold off on granting access or product delivery until the status transitions from Pending to Paid? We’d really appreciate any insights or recommendations on how to handle this edge case to avoid granting access prematurely. Thanks in advance!
0
0
213
Apr ’25
Denmark's biggest mobile payment service is skirting IAP rules
Hello I recently discovered that Denmark's (and soon the rest of the Nordic countries) biggest mobile payment service - MobilePay - is seemingly getting away with selling digital products in their app without using IAP. I am confused how this is possible, as I spent a lot of time making sure I understand the rules -- and I'm quite confident I do, so the only conclusion I can reach from this is that this is a violation that has not been discovered. If it isn't, I would like an explanation. So, what am I talking about? First; MobilePay is an app that lets you send money to whoever, essentially a Danish version of CashApp. You attach a credit card, and you can transfer funds using people's phone numbers. Nothing about this is problematic. There are some fees involved, which is also fine. But. You can select to "wrap your money in digital wrapping paper", which can be unwrapped by the recipient to reveal the amount you transferred. This is, no matter how you spin it, a digital product. It adds about 1 USD to the transferred amount, but that amount goes directly to MobilePay, not to the recipient - and isn't a transaction fee. To me that sounds exactly like the kind of payment that is absolutely mandatory to process via IAP - so how are they not? How does it pass app review? Is there something I'm missing? As someone who has been forced to use IAP for a service I would much rather not share the revenue of with Apple, I find this frustrating, and I'd prefer that everyone was subject to the same rules, especially when it comes to big corporate players like the developers of this app. You can read about the conditions of buying digital wrapping paper here: https://mobilepay.dk/app/legal/trading-conditions-da-dk - this page is in Danish but should be easily translatable. A theory I had is that maybe this wrapping paper feature is just not available to the test user they provided to Apple, as it is only sold to customers in Denmark and Greenland. But that's almost worse than an oversight, because in that case, they deliberately hid it from app reviewers. I have attached some photos of how it looks when you select the product in the app and how it just adds the cost on top of the amount you chose to transfer. I just chose a sample transfer of 1 DKK for the amount itself, and the 7 DKK for the "paper" is then added on top. It's not a lot, but given the size of the app's userbase (over 4.5 million according to themselves), we're likely talking a significant chunk of change they're essentially (if you're being cynical) stealing from Apple. What gives? For reference, the app in question is this one: https://apps.apple.com/dk/app/mobilepay/id624499138?l=da (currently ranked 4th in Finance in Denmark)
2
0
135
May ’25
Not receiving App Store Server Notifications for failed transactions
We are currently integrating In-App Purchases for our app and have configured App Store Server Notifications (v2) in the Sandbox environment. During testing, we observed the following issue: When a transaction is cancelled, declined, or pending (e.g., Ask to Buy flows or authorization pending), No App Store Server Notification is sent to our webhook endpoint. We only receive webhook events where the status is "purchased". This becomes a critical problem for us because our backend must accurately track transaction states including failed and pending purchases, especially for wallet top-up use cases. Additionally, we tried mocking failed transactions (via Xcode local environment and turning off In-App Purchases from Developer Settings) to simulate a technical failure scenario. Even in these cases, no webhook notification was received when the purchase failed server-side. Is it expected behavior in Sandbox that only successful transactions ("purchased") trigger webhooks? Are failed or pending transactions suppressed in Sandbox intentionally? Will webhook behavior be different in Production (i.e., will we receive webhook notifications for failures there)? Is there any extra configuration or entitlement needed to fully test failure scenarios via webhooks in Sandbox?
0
0
89
Apr ’25
Not receiving App Store Server Notifications for failed transactions
We are currently integrating In-App Purchases for our app and have configured App Store Server Notifications (v2) in the Sandbox environment. During testing, we observed the following issue: When a transaction is cancelled, declined, or pending (e.g., Ask to Buy flows or authorization pending), No App Store Server Notification is sent to our webhook endpoint. We only receive webhook events where the status is "purchased". This becomes a critical problem for us because our backend must accurately track transaction states including failed and pending purchases, especially for wallet top-up use cases. Additionally, we tried mocking failed transactions (via Xcode local environment and turning off In-App Purchases from Developer Settings) to simulate a technical failure scenario. Even in these cases, no webhook notification was received when the purchase failed server-side. Is it expected behavior in Sandbox that only successful transactions ("purchased") trigger webhooks? Are failed or pending transactions suppressed in Sandbox intentionally? Will webhook behavior be different in Production (i.e., will we receive webhook notifications for failures there)? Is there any extra configuration or entitlement needed to fully test failure scenarios via webhooks in Sandbox?
0
0
94
Apr ’25
First App Submission — Apple can’t see my In-App Purchase product during review (works in debug, not in TestFlight)
Hey everyone, I’m submitting my first version of an iOS app to the App Store and ran into an issue I can’t seem to resolve. The app was rejected because during review, Apple couldn’t see the In-App Purchase product on the purchase screen. That’s their only complaint — everything else works fine. Here’s what’s going on: • In debug mode via Xcode, the product shows up correctly, and everything works as expected. • In TestFlight builds, the product doesn’t show up at all — neither for me nor for Apple. • The IAP is currently marked as “Waiting for Review”, not “Ready to Submit”, and it is linked to the current app version in App Store Connect. I’m not sure if the IAP being in “Waiting for Review” is the reason it doesn’t show up in the TestFlight version — but I assumed Apple would still be able to access it for testing. Has anyone experienced this? Do I need to wait for the IAP itself to be approved before it works in TestFlight and can be reviewed? Any insights would be super helpful. Thanks!
2
0
136
Apr ’25
Can't remove app subscription & IAP localization
My IAP and Subscriptions were rejected during review. I went to see what the problem was and it was due to my localization descriptions. So I removed Enlgish (Canada) no problem, created a new one, save. Then there was only one left which is English (US) but when I try to remove this last one, I get an error saying 'There was an error with deleting the localization. Please try again later.' when I try to delete it. This is happening for all my subscription and iap items, as well as the subscription group localization. Seems that when there are multiple rejected localization items in a table, you aren't able to delete the last rejected row regardless of language. Anyone else experience this? Any way to get around it? I would prefer not deleting my entire subscription group and iaps.
0
0
108
Apr ’25
product not found !
Hi all, I’m testing Subscription in my Flutter app on a real iOS device (iPhone 16 Pro with iOS 18) via TestFlight. I’ve set everything up as required, but I still get this error: flutter: Found products: [] If everything works perfectly when StoreKit configuration is used in Xcode, but not via TestFlight. All my Subscriptions are approved with the same ID.
0
0
147
Apr ’25
Adding In-App Purchase to app + review required?
I'm trying to understand the IAP development process. I created my first Product on App Store Connect and am trying to build my app to use it. However it keeps failing with "Invalid product ID.". From what I've read, this is because the product has not yet gone through review. But what I don't understand is, of course it hasn't gone through review yet, because trying to use it in any capacity fails, even though I'm using a real physical device and using a Sandbox User. Is this the correct workflow? It seems very backwards that I have to submit the product for review, even before I know how it's going to be used. I'm still building the screen for the product page, and haven't even started touching any backend APIs, yet it's asking for screenshots. Am I misunderstanding something here?
0
0
80
Apr ’25
App is under "Ready for distribution" but in-app purchases are under "Waiting for review"
We have uploaded our app on 17th Apr'25 on app store and status showed "Ready for distribution". However our in-app purchases are still showing "Waiting for Review". It has been 4 days since our app is live on app store but we are unable to make the in-app purchases. Please let us know what steps are we supposed to do on this front
1
0
105
Apr ’25
.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
123
2w
Invalid currency symbol
Strange issue with currency display in subscription products Hi everyone, I'm facing a strange issue in my app where I use a subscription-based in-app purchase model. The products I created in App Store Connect are all in "Approved" status. I've tested with both RevenueCat and StoreKit, but the result is the same. Here are the products being loaded: Product loaded: weekly_product_id Display name: Weekly Pro Description: Weekly Pro Subscription Price: ₺229,99 Product loaded: annual_product_id Display name: Annual Pro Description: Annual Pro Subscription Price: ₺1.799,99 Even though I can see the correct prices and currency (Turkish Lira) in the Xcode debug console, on my real device the currency appears as Philippine Peso, as shown in the attached screenshot. Interestingly, in the iOS simulator, it's displayed in USD. I've double-checked and my device's region settings are set to Turkey. Any ideas on what could be causing this? And more importantly, how can I fix it? Thanks in advance!
3
0
111
Apr ’25
InvalidRequestError on iOS 18.4
We’ve recently encountered an increased rate of purchase errors StoreKit.InvalidRequestError error 1 (https://developer.apple.com/documentation/storekit/invalidrequesterror) specifically on iOS 18.4. We suspect this might be related to the new Advanced Commerce API introduced by Apple, although we haven’t made any changes related to this API in our app. Have you experienced similar issues since the release of iOS 18.4 or when integrating the Advanced Commerce API? Any insights or suggestions would be greatly appreciated. Thanks!
1
1
324
May ’25
App Store Guidelines: auto-renewable subscription offer code as non-consumable alternative?
Hi, My app currently offers a non-consumable in-app purchase to unlock all its features, and I would like to provide this full access for free to an organization with a few thousand Macs. Since Apple limits non-consumable in-app purchase promo codes to 1000 per app, this isn't sufficient for the organization's size. So I'm considering an alternative approach using an auto-renewable annual subscription with offer codes: Create a few thousand offer codes for an annual subscription. Users within the organization would redeem these codes. Instruct users to immediately unsubscribe after redeeming the code. The app would then check the in-app purchase receipt. If the receipt contains a transaction redeemed with an offer code, the app would treat this as a permanent unlock of all features. My concern is that repurposing an auto-renewable subscription in this manner—effectively turning it into a lifetime unlock triggered by redeeming an offer code and immediately cancelling—might violate App Store guidelines. Is using an annual subscription and offer codes this way likely to be compliant with App Store guidelines? Thank you for your guidance!
0
0
111
Apr ’25
The Apple review team is unable to fetch in-app purchase products.
Hello, I’ve uploaded a new build of my macOS app with the first two in-app purchases, but it was rejected under 2.1.0 Performance: App Completeness. After further investigation, it seems that the Apple review team is unable to fetch products. The following code: private let productIDs = ["co.app.freetrial", "co.app.full"] self.products = try await Product.products(for: productIDs) is returning an empty array. (In the TestFlight build, it correctly returns the products.) For me, everything works as expected via Xcode and on a fresh machine using TestFlight. Here’s what I’ve tried so far: The in-app purchases were added to the binary with the first build. I confirmed that each in-app purchase is free of any yellow or red warning messages. Downloaded the app from TestFlight and confirmed that all in-app purchases are available. Updated the in-app purchase price in App Store Connect and verified that the new price is reflected in the app (to rule out any ID mismatches). Reviewed all agreements to ensure no missing signatures. (A few sources online suggested that this could potentially cause issues with in-app purchases for the review team.) I created a new build using a 3rd-party certificate and a provision profile. (Older builds - before adding in-app purchases - were signed with a development certificate and no provision profile, yet they still made it to the App Store. I’m not sure how that was possible or if it contributed to this issue.). Despite these steps, the app continues to be rejected for the same reason. I’m struggling to understand how products are successfully fetched for testers via TestFlight while the review team repeatedly sees zero products. Any guidance on how to resolve this would be greatly appreciated. Thank you
Replies
3
Boosts
0
Views
273
Activity
May ’25
RevenueCat paywall and apple review process unable to progress through paywall
I submitted for the first time my app and in app subscription together. do the subscriptions get approved separately? it seems like a loop. in the paywall of my app only for apple its failing to load payments/subscription info which im assuming to be the fact that my in app subscription didn't get approved yet, its currently waiting for review (first time submitting subscription). Meanwhile the app gets rejected multiple times because the reviewer can't seem to go beyond the paywall due to failure to load payments. Is this the similar experience anyone had? Do you have info that'd be helpful to give to the reviewers?
Replies
1
Boosts
1
Views
149
Activity
Oct ’25
Issue getting back only a subset of product IDs for purchase controller
As of today we seem to continuously get back 21 of the product IDs we have defined when the shop initializes. This is causing what looks like intermittent bug behavior in our shop. The IDs sent each time are random (not always the same 21). So sometimes they match shop offers and the packs look right and can be bought and sometimes the ones our current shop offers need are not sent and so the offers in game look wrong and error when you try to buy. Is anyone else seeing this new behavior of not getting down all their product IDs successfully?
Replies
0
Boosts
1
Views
103
Activity
May ’25
In the US, are we required to use IAP in addition to web payments?
In my understanding, with the latest court ruling in the US, iOS apps may decide to support web-based payments for subscriptions and in-app purchases. However, are we allowed to exclusively support web-based payments and not implement StoreKit at all?
Replies
0
Boosts
0
Views
103
Activity
May ’25
StoreKit doesn't always work correctly in sandbox environment
There is an issue with StoreKit. The line let products = try await StoreKit.Product.products(for: ids) doesn't always work correctly. Sometimes it returns an array with the correct data, and sometimes it returns an empty array. I'm passing the correct ids to products(for:). This problem only occurs when using the sandbox environment (in TestFlight builds). In the App Store version, everything works fine. StoreKit configuration is none. All IAPs are approved. Everything was working fine before this. The problem was discovered on May 1, 2025.
Replies
3
Boosts
15
Views
545
Activity
May ’25
How to Best Practices for Implementing In-App Purchases (IAP) in Mobile Apps and Backend Systems
Hello everyone, I’d like to ask for your input regarding best practices for implementing In-App Purchases (IAP) across both the frontend and backend. Here’s our current flow: -Frontend (Mobile) The user opens a specific page. We initiate a payment request using react-native-iap. After the user completes the payment, we send the purchase data (receipt) to our backend. Backend: Accept the purchase receipt from the app. Validate the receipt with Apple’s server. (GET https://api.storekit.itunes.apple.com/inApps/v1/transactions/{transactionId}) If the receipt is valid and the response indicates success, we mark the payment status as PAID. We store the transaction ID in our payment module. The Issue: We recently encountered a situation where Apple returned a valid receipt, so we marked the transaction as PAID. However, later we realized that the payment status was actually Pending. { transactionId: '70002676245699', originalTransactionId: '70002676245639', bundleId: '', productId: '', purchaseDate: 1745560404000, originalPurchaseDate: 1745560404000, quantity: 1, type: 'Consumable', inAppOwnershipType: 'PURCHASED', signedDate: 1745981078460, environment: 'Production', transactionReason: 'PURCHASE', storefront: 'SGP', storefrontId: '', price: 5000, currency: 'SGD', appTransactionId: '' } This raised a few questions: Does a Pending status always resolve to Paid, or is there a risk that Apple may later mark it as Failed or Unpaid? Is there a specific field in Apple's receipt response that reliably indicates whether the purchase is truly active? Should we hold off on granting access or product delivery until the status transitions from Pending to Paid? We’d really appreciate any insights or recommendations on how to handle this edge case to avoid granting access prematurely. Thanks in advance!
Replies
0
Boosts
0
Views
213
Activity
Apr ’25
Denmark's biggest mobile payment service is skirting IAP rules
Hello I recently discovered that Denmark's (and soon the rest of the Nordic countries) biggest mobile payment service - MobilePay - is seemingly getting away with selling digital products in their app without using IAP. I am confused how this is possible, as I spent a lot of time making sure I understand the rules -- and I'm quite confident I do, so the only conclusion I can reach from this is that this is a violation that has not been discovered. If it isn't, I would like an explanation. So, what am I talking about? First; MobilePay is an app that lets you send money to whoever, essentially a Danish version of CashApp. You attach a credit card, and you can transfer funds using people's phone numbers. Nothing about this is problematic. There are some fees involved, which is also fine. But. You can select to "wrap your money in digital wrapping paper", which can be unwrapped by the recipient to reveal the amount you transferred. This is, no matter how you spin it, a digital product. It adds about 1 USD to the transferred amount, but that amount goes directly to MobilePay, not to the recipient - and isn't a transaction fee. To me that sounds exactly like the kind of payment that is absolutely mandatory to process via IAP - so how are they not? How does it pass app review? Is there something I'm missing? As someone who has been forced to use IAP for a service I would much rather not share the revenue of with Apple, I find this frustrating, and I'd prefer that everyone was subject to the same rules, especially when it comes to big corporate players like the developers of this app. You can read about the conditions of buying digital wrapping paper here: https://mobilepay.dk/app/legal/trading-conditions-da-dk - this page is in Danish but should be easily translatable. A theory I had is that maybe this wrapping paper feature is just not available to the test user they provided to Apple, as it is only sold to customers in Denmark and Greenland. But that's almost worse than an oversight, because in that case, they deliberately hid it from app reviewers. I have attached some photos of how it looks when you select the product in the app and how it just adds the cost on top of the amount you chose to transfer. I just chose a sample transfer of 1 DKK for the amount itself, and the 7 DKK for the "paper" is then added on top. It's not a lot, but given the size of the app's userbase (over 4.5 million according to themselves), we're likely talking a significant chunk of change they're essentially (if you're being cynical) stealing from Apple. What gives? For reference, the app in question is this one: https://apps.apple.com/dk/app/mobilepay/id624499138?l=da (currently ranked 4th in Finance in Denmark)
Replies
2
Boosts
0
Views
135
Activity
May ’25
Customer redeem same promotional offer multiples times
Hello, Does a customer may redeem the same promotional offer multiples times? For example, get 25% of our app subscription for one year, and then we give the customer the same promotional offer for a second year at 25% off? Thank you
Replies
0
Boosts
0
Views
73
Activity
Apr ’25
Migarate to Subscriptions
In my APP for now contains IAP for one time purchase. By adding to APP auto-renewable subscriptions can I ask from customers(that purchased on App Store and IAP ) to purchase subscription. For customers that purchase IAP, ask to purchase subscription after year from IAP was purchased.
Replies
1
Boosts
0
Views
142
Activity
Apr ’25
Not receiving App Store Server Notifications for failed transactions
We are currently integrating In-App Purchases for our app and have configured App Store Server Notifications (v2) in the Sandbox environment. During testing, we observed the following issue: When a transaction is cancelled, declined, or pending (e.g., Ask to Buy flows or authorization pending), No App Store Server Notification is sent to our webhook endpoint. We only receive webhook events where the status is "purchased". This becomes a critical problem for us because our backend must accurately track transaction states including failed and pending purchases, especially for wallet top-up use cases. Additionally, we tried mocking failed transactions (via Xcode local environment and turning off In-App Purchases from Developer Settings) to simulate a technical failure scenario. Even in these cases, no webhook notification was received when the purchase failed server-side. Is it expected behavior in Sandbox that only successful transactions ("purchased") trigger webhooks? Are failed or pending transactions suppressed in Sandbox intentionally? Will webhook behavior be different in Production (i.e., will we receive webhook notifications for failures there)? Is there any extra configuration or entitlement needed to fully test failure scenarios via webhooks in Sandbox?
Replies
0
Boosts
0
Views
89
Activity
Apr ’25
Not receiving App Store Server Notifications for failed transactions
We are currently integrating In-App Purchases for our app and have configured App Store Server Notifications (v2) in the Sandbox environment. During testing, we observed the following issue: When a transaction is cancelled, declined, or pending (e.g., Ask to Buy flows or authorization pending), No App Store Server Notification is sent to our webhook endpoint. We only receive webhook events where the status is "purchased". This becomes a critical problem for us because our backend must accurately track transaction states including failed and pending purchases, especially for wallet top-up use cases. Additionally, we tried mocking failed transactions (via Xcode local environment and turning off In-App Purchases from Developer Settings) to simulate a technical failure scenario. Even in these cases, no webhook notification was received when the purchase failed server-side. Is it expected behavior in Sandbox that only successful transactions ("purchased") trigger webhooks? Are failed or pending transactions suppressed in Sandbox intentionally? Will webhook behavior be different in Production (i.e., will we receive webhook notifications for failures there)? Is there any extra configuration or entitlement needed to fully test failure scenarios via webhooks in Sandbox?
Replies
0
Boosts
0
Views
94
Activity
Apr ’25
First App Submission — Apple can’t see my In-App Purchase product during review (works in debug, not in TestFlight)
Hey everyone, I’m submitting my first version of an iOS app to the App Store and ran into an issue I can’t seem to resolve. The app was rejected because during review, Apple couldn’t see the In-App Purchase product on the purchase screen. That’s their only complaint — everything else works fine. Here’s what’s going on: • In debug mode via Xcode, the product shows up correctly, and everything works as expected. • In TestFlight builds, the product doesn’t show up at all — neither for me nor for Apple. • The IAP is currently marked as “Waiting for Review”, not “Ready to Submit”, and it is linked to the current app version in App Store Connect. I’m not sure if the IAP being in “Waiting for Review” is the reason it doesn’t show up in the TestFlight version — but I assumed Apple would still be able to access it for testing. Has anyone experienced this? Do I need to wait for the IAP itself to be approved before it works in TestFlight and can be reviewed? Any insights would be super helpful. Thanks!
Replies
2
Boosts
0
Views
136
Activity
Apr ’25
Can't remove app subscription & IAP localization
My IAP and Subscriptions were rejected during review. I went to see what the problem was and it was due to my localization descriptions. So I removed Enlgish (Canada) no problem, created a new one, save. Then there was only one left which is English (US) but when I try to remove this last one, I get an error saying 'There was an error with deleting the localization. Please try again later.' when I try to delete it. This is happening for all my subscription and iap items, as well as the subscription group localization. Seems that when there are multiple rejected localization items in a table, you aren't able to delete the last rejected row regardless of language. Anyone else experience this? Any way to get around it? I would prefer not deleting my entire subscription group and iaps.
Replies
0
Boosts
0
Views
108
Activity
Apr ’25
product not found !
Hi all, I’m testing Subscription in my Flutter app on a real iOS device (iPhone 16 Pro with iOS 18) via TestFlight. I’ve set everything up as required, but I still get this error: flutter: Found products: [] If everything works perfectly when StoreKit configuration is used in Xcode, but not via TestFlight. All my Subscriptions are approved with the same ID.
Replies
0
Boosts
0
Views
147
Activity
Apr ’25
Adding In-App Purchase to app + review required?
I'm trying to understand the IAP development process. I created my first Product on App Store Connect and am trying to build my app to use it. However it keeps failing with "Invalid product ID.". From what I've read, this is because the product has not yet gone through review. But what I don't understand is, of course it hasn't gone through review yet, because trying to use it in any capacity fails, even though I'm using a real physical device and using a Sandbox User. Is this the correct workflow? It seems very backwards that I have to submit the product for review, even before I know how it's going to be used. I'm still building the screen for the product page, and haven't even started touching any backend APIs, yet it's asking for screenshots. Am I misunderstanding something here?
Replies
0
Boosts
0
Views
80
Activity
Apr ’25
App is under "Ready for distribution" but in-app purchases are under "Waiting for review"
We have uploaded our app on 17th Apr'25 on app store and status showed "Ready for distribution". However our in-app purchases are still showing "Waiting for Review". It has been 4 days since our app is live on app store but we are unable to make the in-app purchases. Please let us know what steps are we supposed to do on this front
Replies
1
Boosts
0
Views
105
Activity
Apr ’25
.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!
Replies
1
Boosts
1
Views
123
Activity
2w
Invalid currency symbol
Strange issue with currency display in subscription products Hi everyone, I'm facing a strange issue in my app where I use a subscription-based in-app purchase model. The products I created in App Store Connect are all in "Approved" status. I've tested with both RevenueCat and StoreKit, but the result is the same. Here are the products being loaded: Product loaded: weekly_product_id Display name: Weekly Pro Description: Weekly Pro Subscription Price: ₺229,99 Product loaded: annual_product_id Display name: Annual Pro Description: Annual Pro Subscription Price: ₺1.799,99 Even though I can see the correct prices and currency (Turkish Lira) in the Xcode debug console, on my real device the currency appears as Philippine Peso, as shown in the attached screenshot. Interestingly, in the iOS simulator, it's displayed in USD. I've double-checked and my device's region settings are set to Turkey. Any ideas on what could be causing this? And more importantly, how can I fix it? Thanks in advance!
Replies
3
Boosts
0
Views
111
Activity
Apr ’25
InvalidRequestError on iOS 18.4
We’ve recently encountered an increased rate of purchase errors StoreKit.InvalidRequestError error 1 (https://developer.apple.com/documentation/storekit/invalidrequesterror) specifically on iOS 18.4. We suspect this might be related to the new Advanced Commerce API introduced by Apple, although we haven’t made any changes related to this API in our app. Have you experienced similar issues since the release of iOS 18.4 or when integrating the Advanced Commerce API? Any insights or suggestions would be greatly appreciated. Thanks!
Replies
1
Boosts
1
Views
324
Activity
May ’25
App Store Guidelines: auto-renewable subscription offer code as non-consumable alternative?
Hi, My app currently offers a non-consumable in-app purchase to unlock all its features, and I would like to provide this full access for free to an organization with a few thousand Macs. Since Apple limits non-consumable in-app purchase promo codes to 1000 per app, this isn't sufficient for the organization's size. So I'm considering an alternative approach using an auto-renewable annual subscription with offer codes: Create a few thousand offer codes for an annual subscription. Users within the organization would redeem these codes. Instruct users to immediately unsubscribe after redeeming the code. The app would then check the in-app purchase receipt. If the receipt contains a transaction redeemed with an offer code, the app would treat this as a permanent unlock of all features. My concern is that repurposing an auto-renewable subscription in this manner—effectively turning it into a lifetime unlock triggered by redeeming an offer code and immediately cancelling—might violate App Store guidelines. Is using an annual subscription and offer codes this way likely to be compliant with App Store guidelines? Thank you for your guidance!
Replies
0
Boosts
0
Views
111
Activity
Apr ’25