Hey everyone,
I'm currently developing an app for the Apple App Store for the first time and I'm having trouble finding specific information about a virtual currency use case. Despite going through extensive documentation, I haven't been able to find the answers I need.
In my app, I'm implementing a freemium model where users can purchase virtual currency to unlock specific power-ups (it's a game app). I would like to give users some free virtual currency occasionally for promotional purposes, such as after their first game or if they haven't used the app for a certain period. Additionally, I'm interested in generating coupon codes on my own and sharing them online. When users enter these codes in the app, I want to award them a specific amount of virtual currency without requiring them to go through the purchase process.
My question is: is it allowed to give away virtual currency in such a way?
Thanks a lot!
StoreKit
RSS for tagSupport in-app purchases and interactions with the App Store using StoreKit.
Post
Replies
Boosts
Views
Activity
With a web interface and mobile app, a user who buys a subscription through Stripe is automatically created an account that allows them to log in to both the web interface and mobile app.
When going through the review, we received a rejection from Apple review team with the requirement to implement in app purchase.
I have an already published app with the same functionality where the review team did not require IAP implementation.
Does the web interface have to contain 100% of the same features as the mobile app in order for the mobile app to be recognized as a "Read" version and no IAP integration is required?
When asked if Stripe can remain available for purchase through the web interface in conjunction with IAP in the mobile app, I received the response
"In regards to using Stripe alongside in-app purchases, please note that providing access to mechanisms other than in-app purchases for purchases or subscriptions to be used in the app does not comply with the App Store Review Guidelines."
On what basis the subscription purchase in the web interface does not take place, if there are no requirements for mandatory installation of the mobile application and the user can use the web version without installing the mobile application.
I'm using the App Store Connect API to fetch sales and trends reports. Fetching the "SUBSCRIPTION" report works well and it does include recent offer code redemptions.
The dashboard in App Store Connect also confirms that there was a recent offer code redemption.
However, when requesting the Offer Code Redemption Report ("SUBSCRIPTION_OFFER_CODE_REDEMPTION") through the App Store Connenct API using the request shown below I always get a "404 Not Found" error with the message "There were no sales for the date specified." (see below) even though the other sources confirm there were sales for the date specified.
So, for some reason the Offer Code Redemption Report API does not seem to work.
Did anybody make this work? Any idea to fetch the offer code redemption report through the API?
API REQUEST:
https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[reportDate]={DATE}&filter[reportSubType]=SUMMARY&filter[reportType]=SUBSCRIPTION_OFFER_CODE_REDEMPTION&filter[vendorNumber]={VENDOR_NUMBER}&filter[version]=1_0
API RESPONSE:
{ "errors" : [ {
"id" : "586b3f95-3eb8-4249-8df6-06bd8dea001a",
"status" : "404",
"code" : "NOT_FOUND",
"title" : "The request expected results but none were found",
"detail" : "There were no sales for the date specified." }
] }
Hello,
We recently updated (increased) the pricing for annual subscription of our app on the app store. We changed the starting price. On the front end of the app, this is updated as well. On a user's phone, the annual subscription shows with the updated pricing.
Unfortunately, when users are actually subscribing, the dollar value is not showing the updated pricing. We have verified that the actual price charged is the old pricing.
What can be the possible issues with my pricing update?
Steps we have taken for updating price is the following:
Selected App
Selected Features -> subscriptions
Selected the specific Annual subscription plan
In the Subscription Prices section -> Click on "View all Subscription Pricing"
Updated Starting Plans as well as Starting Date.
Please help.
Thanks
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?
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?
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?
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": ""
}],
}
}
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.
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.
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.
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!
Hi, we are thinking of having monthly/yearly subscription for a financial product that offers a account and card. As this relates to an account fee and the fee will be debited directly from the other accounts the bank customer already has with us will there be a commission charge from apple?
According to the documentation: https://developer.apple.com/documentation/storekit/transaction/3749696-id
Transaction.id is a unique identifier. However, something that is not clear to me is:
Is the ID unique worldwide? In other words, will there never be any other transaction with the same ID?
Or is it unique only within the context of my app?
Thanks!
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.
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.
Got a question that I can't seem to find a conrete answer on.
If I have an app selling ebooks, and a website also selling the same ebooks, can users who purchase the ebooks on my website then view them for free in the app?
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
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
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.