StoreKit

RSS for tag

Support in-app purchases and interactions with the App Store using StoreKit.

StoreKit Documentation

Post

Replies

Boosts

Views

Activity

Clarification Regarding VAT Tax Remittance for App Store Income
We are currently experiencing an issue in accounting for the income obtained from the App Store. As stipulated in the Paid Agreement, the App Store is responsible for collecting and remitting VAT tax to the relevant tax authorities in Vietnam. We seek your assistance in addressing the following concerns: Do we still need to remit VAT tax for the income deposited into our bank account? If VAT tax remittance is not required for the income deposited into our bank account, how can we provide documentation to support this in our accounting records?
2
0
527
Jan ’24
AppTransaction issues for previous purchases under VPP
Dear StoreKit Engineers, I recently migrated my app to freemium model from paid and am using AppTransaction to get original purchase version and original purchase date to determine if user already paid for the app before or not. It seems to be working for normal AppStore users but I am now flooded with complains from VPP users who previously purchased the app. It seems AppTransaction history is absent for these users and these users are asked to sign-in using Apple ID. What is the solution here?
1
0
552
Jan ’24
CONSUMPTION_REQUEST x3 after success PUT (202) responses
I don't often get CONSUMPTION_REQUEST or indeed REFUND but when I do I receive the same CONSUMPTION_REQUEST 3 times, 8 hours apart, before I do get the REFUND notification several hours after the 3rd and final CONSUMPTION_REQUEST. The response I get from the PUT of /inApps/v1/transactions/consumption/{transactionId} is 202 so I can only assume it was accepted and good. Is the fact I received it 3 times an indication that it was poorly formatted or incorrect somehow? Is there anyway to test the consumption PUT? I've yet to see an in-app consumable that I received a CONSUMPTION_REQUEST for, that was 100% consumed, and wasn't REFUND_DECLINED. They have all been refunded to date. This makes me suspicious that I'm doing something wrong even though all the information I'm getting says otherwise?
0
0
690
Jan ’24
Receiving the same original transactional ID for two different subscriptions has occurred.
User purchased the initial subscription and transmitted the relevant data to our server, where the receipt is stored for subscription validation. As per the documentation, the "Original Transaction Identifier" is expected to be unique across all receipts in a chain of renewals for an auto-renewable subscription. Specifically, for subscription "S1," all auto-renewed receipts consistently share the same original transaction ID. However, following several auto-renewals of the first subscription (User 1), information from Apple's response revealed details about a second subscription (S2), and remarkably, the second subscription (User 2) has the same original transaction ID as the first one. Is there a potential connection with Apple's test environment? We currently lack any information or clues regarding the differentiation of accounts. Webhook Request from App Store (iOS Payment Notification) For Subscription (S1) - For User 1 { "id": "***", "auto_renew_adam_id": "***", "auto_renew_product_id": "com.globalmed.loveeveryday.monthlysub", "auto_renew_status": "true", "unified_receipt": { "id": "", "environment": "", "latest_receipt": "", "latest_receipt_info": [ { "id": "***", "expires_date": "2024-01-19 05:47:24Etc\/GMT", "expires_date_ms": "1705686444000", "expires_date_pst": "***", "in_app_ownership_type": "***", "is_in_intro_offer_period": "***", "is_trial_period": "true", "is_upgraded": "false", "offer_code_ref_name": "", "original_purchase_date": "2023-05-19 03:54:26Etc\/GMT", "original_purchase_date_ms": "", "original_purchase_date_pst": "", "original_transaction_id": "580000785864406", "promotional_offer_id": "", "product_id": "com.globalmed.loveeveryday.monthlysub", "purchase_date": "2023-11-19 04:54:20Etc\/GMT", "purchase_date_ms": "1700412860000", "purchase_date_pst": "", "quantity": "", "subscription_group_identifier": "", "transaction_id": "580001118634891", "web_order_line_item_id": "" }], } } For Subscription (S2) for For User 2 { "id": "***", "auto_renew_adam_id": "***", "auto_renew_product_id": "com.globalmed.loveeveryday.monthlysub", "auto_renew_status": "true", "unified_receipt": { "id": "", "environment": "", "latest_receipt": "", "latest_receipt_info": [ { "id": "***", "expires_date": "2024-02-19 05:47:24Etc\/GMT", "expires_date_ms": "1708364844000", "expires_date_pst": "***", "in_app_ownership_type": "***", "is_in_intro_offer_period": "***", "is_trial_period": "true", "is_upgraded": "false", "offer_code_ref_name": "", "original_purchase_date": "2024-01-08 04:37:02Etc\/GMT", "original_purchase_date_ms": "1704731822996", "original_purchase_date_pst": "", "original_transaction_id": "580000785864406", "promotional_offer_id": "", "product_id": "com.globalmed.loveeveryday.monthlysub", "purchase_date": "2024-01-19 05:47:24Etc\/GMT", "purchase_date_ms": "1705686444000" , "purchase_date_pst": "", "quantity": "", "subscription_group_identifier": "", "transaction_id": "580001139103833", "web_order_line_item_id": "" }], } }
1
0
695
Jan ’24
Unable to find In App Purchase capability in Imessage App
I've apple developer account, i already agreed all agreements, tax, and banking in appstore connect. I'm trying to create an imessage app that support in app purchase, but I'm unable to find the In app purchase in the list of capabilities, in both the main target and MessageExtension target. step to reproduce: new project -> imessage app -> choose MessageExtension target, try to add capability.
0
0
418
Jan ’24
How to offer membership to a gym or club from the app
We have a cycling studio/ bike gym. We offer classes and you need a membership to reserve a class. This is very similar to a gym membership. I just need to make sure how the payments will work. According to the guideline 3.1.3(e) Goods and Services Outside of the App I think we can offer payments with a traditional credit card entry. Is this so? Because in the forum I found answers stating you need to use in-app-purchase. I really need to make sure before beginning the app development. Thank you.
0
0
309
Jan ’24
Offer code redemption over another offer code in subscription
We are implementing offer code with subscription. I am wondering if we can redeem an offer code over another offer code? Let's say i have offer code "SUMMER24" and redeemed that code for monthly renewable subscription and if i am going to apply again another offer code "WINTER24" with monthly renewable subscription. Is it possible to do so? And if yes then presentCodeRedemptionSheet is not giving receipt for "WINTER24" code.
1
1
291
Jan ’24
iOS misleading users with payment notification timing
I'm getting really frustrated with emails from my App users who believe they've been charged for a free in-app purchase when they haven't. My App offers many in-app purchases of digital items and I give 4 of these away for free to let users get comfortable with how it works in-app. Over the last couple of years I've had a steady increase in angry emails from users who accuse me of fraud by charging them for a free item. I couldn't figure out for a while what this was as they would leave a 1 star rating, delete the app and ignore my emails for more information. Recently I had someone a bit more patient engage and explain it to me. The purchase for some reason popped up on my notifications right when I bought the [Free Item in my app]. It was from a movie I bought and the bill was delayed. The timing of that notification is what is misleading users about the free in-app purchase. Can someone take note of this please and perhaps delay any payment notifications so they aren't sent when the in-app purchase is for FREE? Thanks!
1
0
644
Jan ’24
App rejected for not making in-app purchases, but the app region does not support IAP anyway
I'm getting multiple times rejections for the same reason: Regarding 3.1.1, the subscription can be purchased in the app using payment mechanisms other than in-app purchase. To resolve this issue, it would be appropriate to subscriptions included in or accessed by your app must be available for purchase using in-app purchase. My app is providing subscription-based video content exclusively in Tunisia (already indicated in the App review process), this region does not support IAP (based on this https://support.apple.com/en-us/102775), It's not possible to make IAP work consequently and I'm forced to provide local payment methods through a webview, this is still rejected for the same reason: make it IAP compliant .. I've also provided similar app in the same region providing alternative payments and not implementing IAP and these app are in the app store already.
2
0
380
Jan ’24
Seeking Guidance: Navigating In-App Purchase Guidelines for a Hybrid Digital-Physical Service
Hello everyone, I'm the developer of a small e-learning platform and (hopefully) soon an iOS app. We developed a cross-platform app that offers paid online video courses and question trainers to learn and practice for the theoretical and practical exams for various German boating licenses. We launched our service back in December 2023 on the web and on the Google Play store without any problems. The App Store on the other side presents us with major problems. Our app got refused so many times that I forgot to count, so that I'm seeking for a little bit of help from the community. Apple's main problem with our app is that we're not offering options to purchase access to these courses within our app, but instead only offer them through our website. In the submissions, Apple always rejects our app with the reason Guideline 3.1.1 - Business - Payments - In-App Purchase and writes: Your app accesses digital content purchased outside the app, such as online courses, but that content isn't available to purchase using in-app purchase. We understand that we have to comply with Apple's guidelines for the App Store, which includes providing an option to buy access to these courses within our app. To solve these problems they suggest: The paid digital content, services, or subscriptions included in or accessed by your app must be available for purchase using in-app purchase. Apps that offer paid digital services and content across multiple platforms may allow customers to access the content they acquired outside the app as long as it is also available for purchase using in-app purchase. See Guideline 3.1.3(b) Multiplatform Services for more information. We understand all these rules, but our problem is, we cannot implement IAP because our service is not of a digital-only nature. Our packages for training for the boating licenses contain more than access to these video courses and question trainers. Our customers also get physical content like a welcome package containing nautical charts, drawing tools, a compass and ropes for training knots. Moreover, our service includes practical boating lessons on-site at a partner boating school with 1:1 instructions. We have tried to explain that our business model consists of a physical and digital unit whose components cannot be sold separately. We wrote in our conversation with Apple: It is important to note that our services are sold as a complete bundle. Customers cannot purchase individual components such as the 1:1 sessions, physical materials, practical lessons, or digital content separately. This integrated approach is crucial to the efficacy and educational integrity of our program. Apple always wants us to implement IAPs, obviously not understanding our business model. Wouldn't it be against the guidelines if we offer IAPs that provide access to the courses, but also send physical packages? Our understanding of the guidelines for IAPs is, they are only allowed for digital content inside the app like consumables, subscriptions and full access, but not for physical goods. We asked if we could publish our app when implementing "purchase methods other than in-app purchase to collect those payments, such as Apple Pay or traditional credit card entry" as cited in § 3.1.3(e) "Goods and Services Outside of the App". But they ignored these issues and continued to ask us to implement IAP. We then reached out to Apple providing us help on how to implement IAPs with physical goods. For example we would need to link an IAP to an account within our system and collect user data like name and address to send the physical content to. They did not provide us information on how to to this (as we haven't seen any apps out there on the App Store doing similar things) and if that would be allowed at all. We wrote: However, this leads us to a significant operational predicament. The in-app purchase system does not provide us with crucial customer information, specifically billing addresses, which are vital for us to deliver the physical components of our service. This gap in the process is not just an inconvenience; it is a critical flaw that hampers our ability to fulfill our commitments to our customers. We require your immediate assistance and a practical solution to this problem. How can we gather the necessary shipping details within the constraints of your platform? This isn't just a minor detail; it's a fundamental requirement for our business to operate effectively. Your prompt attention to this matter and a workable solution would be appreciated, as it is essential for us to continue offering our service on the App Store. Has anyone experienced similar problems and knows how to deal with them? Do you have any general suggestions on how we could solve the problems described? Does Apple not understand our business model correctly or do we not understand Apple's guidelines correctly? We would be very grateful for any help, as we are at our wit's end.
0
1
376
Jan ’24
Sandbox test user web payment
I have apple web payment integrated on website, and it work fine when i test it using real cards. I wanted to test it using apple TEST cards, so i invited SANDBOX test user from here https://appstoreconnect.apple.com/access/users/sandbox and logged in to test device using this test id. but it fails to start a merchant session. System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream. at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) --- End of inner exception stack trace --- at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context) at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Net.Http.HttpClient.d__58.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() at Gateway.MobileWallet.Domain.ApplePay.Clients.RequestPaymentSession.ApplePayPaymentSessionClient.d__3.MoveNext() in
1
0
849
Jan ’24
in-app purchase, how to purchase for third part
Hi Everyone, my company developed an App for back pain. The app is designed for patients (end users) that can use it to do excercises to get some relief. Patients can purchase extra-exercises or services. I want to explore the possibility that third parties (eg. Hospitals, Gyms, Assurances) can purchase the extra-contents on behalf of patients. I know there is VPP but it is only for paid apps not for free apps with in-app purchase. There is a way to give credit or voucher spendable only for my app? any other suggestion? I thank anyone who can help me
0
0
281
Jan ’24
Subscription status mismatch
Hi, some day ago I got these webhook events for a subscription: 2024-01-06 10:40:47 SUBSCRIBED subtype INITIAL_BUY 2024-01-20 03:02:29 DID_RENEW subtype BILLING_RECOVERY 2024-01-20 03:52:08 DID_CHANGE_RENEWAL_STATUS subtype AUTO_RENEW_DISABLED 2024-01-20 10:41:03 DID_FAIL_TO_RENEW (no subtype was received) When I get the subscription status form appstore server API, status is 1 (active). We don't have grace period enabled in our app. I'm not sure how to interpret this result; from our perspective we should remove access to the user.
3
0
799
Jan ’24
There is a condition where receipts cannot be retrieved for test flight delivery.
Enviloment : TestFlight AppleAccount : sandbox The problem that is happening : Unable to get receipt with storeKit.requestReceipt Prerequisite : The form to input ID and password is displayed even if the user is already logged in to AppleAccount (not displayed when normal). The same operation is not reproduced by using the sandbox during debug builds. - (void)requestReceiptWithBlocks:(ReceiptCallback)callback { self.receiptCallback = callback; SKReceiptRefreshRequest *receiptRequest = [[SKReceiptRefreshRequest alloc] init]; receiptRequest.delegate = self; /** When start() is executed, iOS displays the "Sign in to iTunes Store" dialog if you are not yet logged in to the iTunes Store */ [receiptRequest start]; } storeKit.requestReceipt { success, receipt in guard success, receipt != nil else { if success { // receipt nil } else { // requestReceipt failed } } } Does anyone know why the receipt would be in a state where it cannot be retrieved? Thank you.
0
0
315
Jan ’24
How to receive usage-based payment on the app
Hi everyone, we are trying to incorporate a usage-based payment system in our app, quite similar to how AWS charges users. It would ideally be a monthly recurring payment, but the amount charged would vary by user and by month. Looks like we can't do this through in-app payments, so what is the best way to do this? If we incorporate an external payment method like Stripe, would that be an issue during the app review process? We just can't seem to find a way to execute this through in-app purchase, and must go with another method. We would really appreciate an advice or past experience!
0
0
289
Jan ’24
In-App Purchase:No Token Available When Expected.What is this token?
ERROR: 💰 Product purchase for '***' failed with error: Error Domain=RevenueCat.ErrorCode Code=2 "There was a problem with the App Store." UserInfo={source_file=RevenueCat/SKError+Extensions.swift:64, NSUnderlyingError=0x600000c91890 {Error Domain=SKErrorDomain Code=0 "An unknown error occurred" UserInfo={NSLocalizedDescription=An unknown error occurred, NSUnderlyingError=0x600000c68570 {Error Domain=ASDServerErrorDomain Code=1003 "No Token Available When Expected." UserInfo={NSLocalizedFailureReason=No Token Available When Expected.}}}}, readable_error_code=STORE_PROBLEM, NSLocalizedDescription=There was a problem with the App Store., source_function=asPurchasesError} And, I have also tested with SwiftyStoreKit and encountered the same issue.
5
0
858
Jan ’24
In_app_purchase Flutter Package: Purchased Stream not firing after successful purchase on iOS
Description: I am facing an issue with the in_app_purchase Flutter package, which is the official package for handling in-app purchases. After successfully making a purchase on iOS, the 'Purchased' stream is not firing as expected. Steps to Reproduce: Request a purchase by buying a consumable or non-consumable product. Enter necessary credentials if required (e.g., email, password). Click on Sign In. Expected Results: The 'Purchased' stream should fire after a successful purchase on iOS. Actual Result: The 'Purchased' stream is not firing after a successful purchase on iOS. Bottom sheet to purchase the product is popping up again after the purchase is complete. Environment: Flutter version: 3.16.8 on channel stable Package version: in_app_purchase 3.1.11 Operating System: iOS 17.2
0
0
337
Feb ’24