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

can not verify receipt
I have three questions about verify receipt I use this api (https://buy.itunes.apple.com/verifyReceipt)to verify receipt is success or not. But since last month, this interface has started to return an error(21002). I see this document (https://developer.apple.com/documentation/appstorereceipts/verifyreceipt) say its Deprecated. My question is, is the error suddenly returned recently because the interface has been deprecated or for some other reason? (I haven't modified my code about this recently) I can not understand this document: (https://developer.apple.com/documentation/appstorereceipts/validating_receipts_on_the_device) Does this mean that in the new version, as long as the app returns a payment success (purchaseDetails.status == PurchaseStatus.purchased), the payment is guaranteed to be successful, and my server does not need to request payment result verification from Apple's server? I try to use this (https://github.com/apple/app-store-server-library-java) to get TransactionInfo, but I dont konw to get Transaction status to know is success or not. my java server code : AppStoreServerAPIClient client = new AppStoreServerAPIClient(encodedKey, keyId, issuerId, bundleId, environment); TransactionInfoResponse response = client.getTransactionInfo(transactionId); (bug i can note get transaction status, how do i konw this Transaction is success or not)
3
0
153
Sep ’25
Help testing sandbox purchases in Xcode
I am attempting to test non-consumable sandbox purchases, however I am unable to select the "Approve Transaction" option after initiating a purchase. Leaving the transaction in a permanent pending state. I can view the transaction in the transaction manager by navigating to Debug -> Storekit -> Manage Transactions.. but the only available options to select are "Refund Transaction" or "Delete Transaction". What am I missing about Xcode or my environment that is preventing me from testing this purchase flow? Some more information about my set up. I have a .storekit file synced to AppStore Connect with my product Id. There's a StoreKitTestCertificate.cert saved in the project. I've tried running the build on my phone as Debug, Release and ReleaseForRunning all with the same behavior after making a purchase. My phone is logged into a sandbox test user apple account in the developer iOS settings
1
0
206
Sep ’25
StoreKit entitlement not included in provisioning profiles despite In-App Purchase enabled
I’m running into an issue where the com.apple.developer.storekit entitlement is not being included in provisioning profiles, even though my App ID is properly configured for In-App Purchase. Entitlements file: explicitly includes <key>com.apple.developer.storekit</key> <true/> Capability: In-App Purchase is enabled in the Apple Developer Portal and shows as “Enabled.” What I’ve tried: Automatic signing in Xcode → profiles generated, but missing com.apple.developer.storekit Manual signing → deleted and recreated provisioning profiles multiple times; entitlement still missing. Waited several hours for possible propagation. Verified that my in-app purchase products are set up correctly. Error message: Provisioning profile "iOS Team Provisioning Profile: zu.inniu" doesn't include the com.apple.developer.storekit entitlement Question: Has anyone else encountered this? Is there a step I might be missing to get StoreKit entitlements included in provisioning profiles, or could this be a backend issue that needs escalation through Apple DTS? This is blocking me from building my app for physical devices, so any guidance would be greatly appreciated. Thanks in advance!
1
0
330
Sep ’25
App Store Server Notifications and API Client - Toggling Sandbox vs Production Environment
The documentation mentions the following: Verify your receipt first with the production URL; then verify with the sandbox URL if you receive a 21007 status code. This approach ensures you don’t have to switch between URLs while your app is in testing, in review by App Review, or live in the App Store. This way, you can use one server environment to handle both Sandbox and Production environments. It is necessary to pass App Review. However, I'm not manually hitting these URLs - I'm using Apple's libraries. Specifically, the environment is used in SignedDataVerifier and AppStoreServerAPIClient. (I can't link to these because, for some reason, the domain apple.github.io is not allowed. The documentation for these is only found there. You can find it quickly by searching these terms and the domain.) Here is how SignedDataVerifier is being used: const verifier = new SignedDataVerifier( appleRootCertificates, APPLE_ENABLE_ONLINE_CHECKS, APPLE_ENVIRONMENT, APPLE_BUNDLE_ID, APPLE_APP_ID ) const verifiedNotification: ResponseBodyV2DecodedPayload = await verifier.verifyAndDecodeNotification(signedPayload) if (!verifiedNotification) { // Failure return } Here is how AppStoreServerAPIClient is being used: const appStoreServerAPIClient = new AppStoreServerAPIClient( SIGNING_KEY, APPLE_IAP_KEY_ID, APPLE_IAP_ISSUER_ID, APPLE_BUNDLE_ID, APPLE_ENVIRONMENT ) const statusResponse: StatusResponse = await appStoreServerAPIClient.getAllSubscriptionStatuses(originalTransactionId, [Status.ACTIVE]) In the source code for SignedDataVerifier.verifyAndDecodeNotification, I can see that it throws a VerificationException(VerificationStatus.INVALID_ENVIRONMENT) error . So for SignedDataVerifier is it as simple as wrapping my code in a try/catch and checking that the error's status code is 21007? I'm unsure about this because if you scroll to the bottom of the linked source code file, you can see the enumeration VerificationStatus, but it's unclear if this member has a value of 21007. The source code for AppStoreServerAPIClient only says that it throws an APIException if a response could not be processed, so I'm not too sure about how to handle this one.
2
2
931
Sep ’25
Subject: Advanced Commerce setup — one generic subscription vs per-product generics, and reporting identifiers
We’ve been approved for the Advanced Commerce API and are setting up the generic product identifiers per the guide: https://developer.apple.com/documentation/advancedcommerceapi/setting-up-your-project-for-advanced-commerce#Set-up-generic-product-identifiers We have multiple auto-renewable subscriptions (for simplicity: Product 1, Product 2, etc.). We created a new subscription group for Advanced Commerce and are about to add the subscription(s) inside that group. Should we create one auto-renewable subscription (generic, e.g. subscription.ac) to represent all of our subscriptions, or one generic per product family (e.g., product1.ac, product2.ac, …)? If the answer depends on whether subscribers can hold multiple products simultaneously, please advise which structure supports that (e.g., separate groups). Reporting identifiers / segmentation: In Sales and Trends and Payments & Financial Reports, which identifier(s) will appear after migration: the legacy StoreKit product_id, the new generic product id, and/or the SKU? If we use a single generic subscription for all products, what’s Apple’s recommended way to segment revenue by product (Product 1 vs. Product 2)? If SKUs don’t surface in these reports, should we prefer multiple generics/groups to preserve report-level segmentation?
1
0
126
Sep ’25
how is the refund amount calculated for auto-renewing upgrade?
Hi, We have a app with some auto-renewing subscription in a group of subscriptions. When a user upgrade from a subscription to another, the "user receive a refund of the prorated amount of their original subscription" (https://developer.apple.com/app-store/subscriptions/). How is the prorated calculated ? Example : subscription to 14,99$ / month. If subscriber upgrade after 10 days, is the refund calculated 10/30 of 14,99$ (so ~5$) ?
0
1
83
Sep ’25
Implementation of IAP -> Trial Period to Purchase Product
I would like to know if it is allowed to offer the user to either unlock the app immediately or partake in a 3-day trial period before making a purchase. I created 2 IAP non-consumable products; 1 for the immediate [which is at a discount] and for the after trial period ends [this is at a higher cost]. Is this something that Apple allows or is frowned upon?
0
0
81
Sep ’25
How to test "Remove from Sale" for subscriptions in Sandbox?
I want to test the "Remove from Sale" scenario in Sandbox. I set my subscription to "Remove from Sale" for all territories in App Store Connect, but I can still make new purchases and auto-renewals continue in the Sandbox environment. Is this a known limitation? Or is there a specific way to make this work for testing? If it can't be tested, I'd like to know the expected production behavior. What changes occur in the App Receipt and what App Store Server Notification is sent?
0
0
64
Sep ’25
Receipt and Notification behavior after "Remove from Sale"
What is the expected behavior for App Receipts and ASSN v2 notifications when a subscription is set to "Remove from Sale"? I tried to test this in Sandbox, but the "Remove from Sale" setting in App Store Connect doesn't seem to affect the Sandbox environment. For existing subscribers, what happens in the receipt? Does auto_renew_status change to 0 and is expiration_intent populated immediately? Also, which notificationType is sent via ASSN v2?
0
0
107
Sep ’25
Can I set a custom subscription price (e.g., ¥710 or multiples of 10 yen) in App Store Connect?
Hello, I am setting up an auto-renewable subscription for my iOS app in App Store Connect. I would like to set the monthly subscription price to ¥710 (Japanese yen). From what I understand, Apple requires us to use predefined price tiers for in-app purchases and subscriptions. However, I’m not sure whether subscriptions allow more flexibility than one-time in-app purchases. 👉 My questions are: Is it possible to set an arbitrary subscription price such as ¥710, or must I pick the closest price tier from Apple’s official subscription price list? If arbitrary prices are not allowed, is there an official list of available subscription price points for Japan that I can refer to? Can we set subscription prices in multiples of 10 yen (e.g., ¥700, ¥710, ¥720), or are we strictly limited to the price points Apple provides? Thank you in advance for your help!
0
0
293
Sep ’25
Sandbox account in tvOS
Now I’m testing in-app purchase for my app but I can’t find how to set up my snadbox account in tvOS. Acoording to Apple support team, the following menu item should be available in the settings; Settings &gt; Users and Accounts &gt; Sandbox Account But it’s not the case for me even I activated develope mode in tvOS already. Can anyone explain how to set up sandbox account in tvOS or how to activate the menu above? Thanks in advance.
1
0
487
Sep ’25
apple In App Purchase always response 20112
Hi,I am facing the 21002 issue.Have you went through it? If you have resolved it, please dive me a hand. Below is my code,and I Have tested in sand box environment. NSURL receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; if (![[NSFileManager defaultManager] fileExistsAtPath:[receiptURL path]]) { SKReceiptRefreshRequest receiptRefreshRequest = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:nil]; receiptRefreshRequest.delegate = self; [receiptRefreshRequest start]; return; } NSData data = [NSData dataWithContentsOfURL:receiptURL]; / receipt_data/ NSString *receipt_data = [data base64EncodedStringWithOptions:0]; After I test the purchase procedure, use the above receipt-data to verify on the server https://sandbox.itunes.apple.com/verifyReceipt,which always response 21002.I have no idea to deal with it.Thanks.
2
0
254
Sep ’25
Does a Delivery App with Commission & Subscription Plans Require IAP?
Hello everyone, I’ve been struggling with App Store Review regarding my delivery app, and I’m hoping someone here can shed light on whether my app actually requires In-App Purchase (IAP) under Apple’s guidelines. Here’s my situation: My app connects riders with delivery jobs. We have two rider payment models: Commission Plan (10%) – Riders don’t pay upfront, but 10% is deducted per completed delivery. Fixed Subscription Plan – Riders pay a fixed monthly fee in advance, which allows them to keep 100% of their delivery earnings. The challenge: Apple Review has rejected my app multiple times, insisting that I must use IAP for these payments. I’ve written back and forth with them several times explaining that: The commission plan isn’t a digital feature, it’s simply a revenue share from physical delivery work. The fixed plan is more like a business service fee for using the platform, not for unlocking content or digital features. Despite this, the Review Team continues to state that my app “requires IAP.” My questions are: Based on Apple’s official guidelines, do apps like mine (delivery/logistics with commission/subscription for riders) really fall under IAP rules? Has anyone here had a similar issue with a marketplace or service-based app? If this does require IAP, what’s the reasoning — since the payments are tied to real-world services, not digital content? I’d appreciate advice, shared experiences, or even clarification from someone who has successfully passed review with a similar model. Thanks in advance!
1
0
241
Sep ’25
IAPs after rejection
Hi everyone, After my app was initially rejected, all my IAPs now show the status “Developer Action Needed.” There’s nothing I need to change on them — they were just returned because it was the first submission and the app itself was rejected. Do I need to do anything with the IAPs before I resubmit, or will they still be attached and reviewed automatically with the next binary? I’ve seen conflicting answers, so I’d like to confirm the correct process. Thanks, Cris
1
0
106
Aug ’25
In-App Purchase Failing
hello, I have an app with In-App purchase set up, it works fine in TestFlight on an iOS device but the download from the App Store gives me a transaction failed message. I tried to replicate in the simulator but from what I've read is that you can't do in-app purchase testing in the simulator. Perhaps I'm wrong here but I've tried multiple sandbox accounts, etc.. and still get an unusual "...password can't be reused..." error (pasted below) in the debug description. I'm curious if anyone else has dealt with this scenario and if so how did you go about researching/identifying the issue and/or resolving it. Partial error message: <SKPaymentQueue: 0x60000000e370>: Payment completed with error: Error Domain=ASDErrorDomain Code=530 "(null)" UserInfo={NSUnderlyingError=0x600000c74750 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed The authentication failed." UserInfo={NSMultipleUnderlyingErrorsKey=( "Error Domain=AMSErrorDomain Code=2 "Password reuse not available for account The account state does not support password reuse." UserInfo={NSDebugDescription=Password reuse not available for account The account state does not support password reuse., AMSDescription=Password reuse not available for account, AMSFailureReason=The account state does not support password reuse.}"
1
0
240
Aug ’25
Urgent - React Native IAP Issue
While using react-native-iap and being successfully connected with initConnection() I'm not receiving information on subscriptions with requestSubscription(). Attaching the code here, if anyone could assist asap please would be really grateful thanks! Been at it all day and just can't figure. const handleBuySubscription = async (productId) =&gt; { try { await requestSubscription({ sku: productId, }); setLoading(false); } catch (error) { setLoading(false); if (error instanceof PurchaseError) { errorLog({ message: [${error.code}]: ${error.message}, error }); } else { errorLog({ message: "handleBuySubscription", error }); } } }; but the requestSubscription({ sku: productId, })
0
0
102
Aug ’25
react native iap not providing the subscription information
I am handling the buy subscription with this function const handleBuySubscription = async (productId) =&gt; { try { await requestSubscription({ sku: productId, }); setLoading(false); } catch (error) { setLoading(false); if (error instanceof PurchaseError) { errorLog({ message: [${error.code}]: ${error.message}, error }); } else { errorLog({ message: "handleBuySubscription", error }); } } }; but the requestSubscription({ sku: productId, }) does not return anything, and it is stuck at await
0
0
79
Aug ’25
In-App Purchases Returning “Invalid Product ID” After App Store Release
Hello, I’m facing an issue with in-app purchases after my app was approved on the App Store. I’ve created 100 consumable products, all of which have been approved by Apple. The purchases work correctly in both TestFlight and debug mode, but once the app is live on the App Store, I receive an “Invalid Product ID” error. I reached out to Apple Support, but they directed me to ask this question on the forum instead. Could someone please help me resolve this issue? Its been week now, I am losing my customers.
2
0
225
Aug ’25
App rejected due to 3.1.1 - Business - Payments - In-App Purchase
Guideline 3.1.1 - Business - Payments - In-App Purchase, as my app currently allows users to purchase digital content (courses) using an external payment system. I am working to comply with Apple’s requirements by integrating In-App Purchase for all digital content within the app. My app contains approximately 100,000 individual courses, and I am seeking guidance on how to effectively implement In-App Purchase for such a large number of items. Creating 100,000 separate In-App Purchase products in App Store Connect seems impractical due to the scale and potential limitations. I would like to explore feasible solutions, such as: Using a subscription model to provide access to all courses. Creating category-based bundles (e.g., Programming, Design) to group courses. Implementing a dynamic purchase system where users can select specific courses after a single In-App Purchase transaction, managed server-side. Could you please advise on the best approach to manage In-App Purchase for 100,000 individual courses? I am happy to provide additional details about my app’s functionality or work with your team to ensure compliance. Please let me know if a consultation or further documentation is needed to proceed. Looking forward to your guidance. Best regards, Shuvajit Maitra
1
0
128
Aug ’25