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

How to verify JWSSignedPayload signature in App Store Server Notifications v2
I am implementing In App Purchase and integrating App Store Server Notifications version 2. I am able to receive the JWSSignedPayload from Apple. The payload is Base64 encoded and contains header, payload, and signature. The documentation clearly explains how to decode the payload and extract claims such as notificationType and data. What is unclear is how to verify the JWS signature itself. I could not find concrete documentation that explains: Which Apple public key or certificate should be used for verification How to retrieve or rotate the key used to sign the payload The exact steps required to validate the JWS signature before trusting the payload Signature verification is critical for security, and simply decoding the claims without validation is not sufficient. I am looking for official guidance or a recommended approach to verify the JWSSignedPayload signature for App Store Server Notifications v2.
0
0
4
51m
Promotional offer purchase fails in Sandbox with ASDServerErrorDomain 3902 after payment sheet
Hello, I’m integrating promotional offers for auto-renewable subscriptions using StoreKit 2. The offer is displayed correctly, the Apple purchase sheet appears, and I can start the payment flow. The sheet shows the correct discounted price and the end date of the offer. However, after confirming the purchase, an alert appears saying “Unable to Purchase - Contact the developer for more information” When dismissing the alert, Xcode logs the following: Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3902 "No se ha podido realizar la compra" UserInfo={ NSLocalizedFailureReason=No se ha podido realizar la compra, client-environment-type=Sandbox, AMSServerErrorCode=3902, storefront-country-code=ESP } Test environment: App installed from Xcode on a real iPhone Logged in with a Sandbox Apple ID Using StoreKit 2 Promotional offer applied using: Product.PurchaseOption.promotionalOffer(_:compactJWS:) On the server side, I generate the promotional offer signature exactly as described in Apple’s documentation: https://developer.apple.com/documentation/storekit/generating-a-signature-for-promotional-offers The signature is generated using a Subscription Key Signed with ECDSA + SHA256 Uses the correct invisible separator (U+2063) The signature is validated locally using the derived public key and verifies correctly The sandbox user has had previous subscriptions, which is why this promotional offer is eligible and shown. Given that: The offer is displayed correctly The purchase sheet shows the discounted price and duration The signature validates locally The error occurs only after confirming the purchase My question is: Is this a known limitation or issue with promotional offers in the Sandbox environment? Should promotional offers be tested exclusively via TestFlight instead of Sandbox? Any clarification would be greatly appreciated. Thank you!
2
0
25
2h
App rejected, In-app lost, won't review again because in-app missing
Hi, at first I submitted an app where you asked for a way to review everything while you mentioned a demo mode would be fine. I added a demo mode and submitted the app together with in-app purchases. Now you are asking for an actual API token for an external service which I cannot provide. I responded with the info about the demo mode. The next review was rejected because the in-app purchases are kind of lost. I cannot map them. Next re-submit was rejected because the in-app purchases are missing. The in-app purchases are stuck in a waiting status. Please do whatever you need to do to either release the in-app and let me map them again or map them yourself. Regards, Vitali
0
0
19
18h
Critical Bug: "Session Bleed" during Enrollment - Payment renewed wrong account despite correct UI
I experienced a severe backend session handling error where the payment gateway used a wrong billing token, despite the frontend UI explicitly displaying the current user's details. This resulted in an accidental renewal of a different developer account. The Setup You opened the Developer App and logged in as ____. You filled in your details correctly (Name: AB, Last Name: CD). The screen confirmed this: "You are paying for ____." The Action You pressed the Enroll/Pay button. You approved the payment with your card/UPI. The Invisible Switch (The Bug) At the exact moment you clicked "Pay," the Apple App didn't look at the screen you were seeing. Instead, it looked deep into your phone’s history and said: "Wait, I know this phone! This phone belongs to an old account that already has a membership. I'll just renew that one." The Result The system took your money and sent it to the Old Account it remembered from history, completely ignoring the New Account (____) that was right there on the screen. The Outcome New Account (____): Still says "Pending" because it never got the money. Old Account: Got renewed instantly because the system prioritized the "device history" over the "logged-in user." It was a bait-and-switch by the app. You clicked "Pay" for AB, but the wire connected to Old Friend.
1
0
23
19h
Promo code for Watch-only IAP failing
Hi, I have an "Apple Watch Only" app that you can download for free and conduct a 7 day trial. After that, there is an IAP to unlock a lifetime license. For the life of me I can't find out how the process of redeeming promo codes for the IAP should work. Once generated, people try to redeem them in the AppStore (on their phone), but then they end up in a hanging process saying it's reinstalling the app to redeem the offer. But then nothing happens. Also running "Restore Purchase" within the app to pickup any maybe by now activated license is not working. Why does it even want to reinstall the (free) app? This doesn't sound right. Does anyone have IAP for a watch-only app and can shed some light on the promo code topic?
0
0
29
2d
in-app won't pass review for unknown reason
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,
3
0
90
3d
"This in-app purchase has already been bought" Error and SSL Failure on Restore
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.
0
0
25
5d
In-App Purchase Continuous Rejection
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.
1
0
385
5d
Payment Marked as "Paid" But Not Received After 3 Business Days
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.
1
1
241
6d
Monthly subscriptions immediately fail with "purchase cancelled" while yearly subscriptions work fine
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!
1
0
55
6d
Unknown Error when Trying to Add New Offer Codes
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!
3
1
591
1w
Annual in-app subscription upgrade prorated?
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.
1
0
54
1w
Request Guidance on IAP Requirements for Dynamically Priced Digital Video Content
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
0
0
46
1w
Switching App Store Server Notifications from V1 → V2 — what happens to existing subscriptions?
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.
1
0
100
1w
Unexpected expiresDate for monthly subscription renewal?
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!
0
0
99
1w
One-time purchase with free trial
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?
10
1
11k
2w
Pysical Goods Service Annual purchase
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.
0
0
41
2w
StoreKit2 originalTransactionId
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.
0
0
42
2w