Get help with anything related to RevenueCat.
Recently active
I have an App with a single In app purchase that I would like to see restored on reinstall or device switch. I am using anonymous id’s with the ‘Transfer to new App user ID’ setting. Upon app startup I call the ‘syncPurchases’ function immediately after ‘configure’ and wait for the response before proceeding with other revenuecat API calls.if a user reinstalls the app, then he will not have the in app purchase available. He has to restart the app in order to see it take affect. I have only tested this out on Android, so I am not sure it’s an issue with IOS.This is my react-native code:useEffect(() => { const fetchPurchaseData = async () => { // ... omitted if (Platform.OS === 'android') { await Purchases.configure({ apiKey: APIKeys.google }); } else { await Purchases.configure({ apiKey: APIKeys.apple }); } await Purchases.syncPurchases(); const offerings = await Purchases.getOfferings(); const customerInfo = await Purchases.getC
Hi ,I have the purchase code ,but where should I create the configs/env.props file?
Hi everyone, I'm trying to integrate subscriptions to the play store, and doing all the steps in the guide I get the following error: Store StatusCould not check
I’m considering using RevenueCat for my iOS app for subscriptions.However, my customers are coming from all over the world - a lot from Asia.I’ve read on the forum that api.revenuecat.com isn’t reachable from China (and eventually other countries as well). Is this still the case? - If so, what’s the solution for it?Also, is there a list of areas where RevenueCat is not working/operating?
This isn’t really revenuecat specific, but just a general question that someone here might have some good advice. How do you guys handle users that use anonymous apple emails? I’m talking about the “aoeuaoeua@privaterelay.appleid.com” emailsI don’t think apple allows you to use apple-sign-in without it, so I get lots of users that use anonymous emails which is fine.But when they contact me, they provide their real address and I can’t ever find their account in revenuecat because they didn’t use that email.Generally they don’t know how to find the email they used and its very difficult to explain how to look it up. How do you guys handle this situation?
Hi there! Why does the GET https://api.revenuecat.com/v2/projects/{project_id}/products/{product_id} endpoint return the following for any subscription product until that product is purchased at least once?{ ... "subscription": { "duration": null, "grace_period_duration": null, "trial_duration": null } ...}Right after purchasing the endpoint starts to return correct data:{ ... "subscription": { "duration": "P1M", "grace_period_duration": "P3D", "trial_duration": "P1W" } ...}Is V2 REST API production ready?
At WWDC 2020, Apple introduced the ability to do local StoreKit testing in Xcode (that is, testing without connecting to App Store servers and without using sandbox accounts). I am interested in an answer to the question of whether RevenueCat supports local StoreKit testing in Xcode for a RevenueCat-enabled Mac Catalyst app. As you’ll see below, I’ve been getting a “receipt not valid” error when I attempt that kind of testing for a RevenueCat-enabled Mac Catalyst app.Apple's documentation on StoreKit testing in Xcode indicates that local StoreKit testing does work for Mac apps (on a Mac running Xcode 12 or later, and macOS 11 or later). And in its own documentation, RevenueCat gives instructions for setting up local StoreKit testing in Xcode. What's not clear is whether StoreKit testing in Xcode works with the combination of RevenueCat and Mac Catalyst apps.I followed RevenueCat's instructions (just noted in the last paragraph) for setting up local StoreKit testing in Xcode (important
A user reached out to me this weekend saying that they purchased the app awhile ago and some legacy features that should be unlocked for them isn’t on one of their devices. My app grants legacy access based on the purchase date and original purchase version, similar to the way RevenueCats iOS example shows it being done. The user sent me info from each device and it shows that one device believes the first install was recent, and the other a few years ago. Is it really possible for receipts across devices for a universal purchase could be different? Or could there be some kind of issue like this if the user was part of a Testflight beta? If the receipts can be different, what is the best way to handle granting legacy features? Should I just come in on RevenueCat and grant lifetime for them, or is there a better way of detection on iOS?
This is strange. Apple accepted the latest version of my app, with RevenueCat support which was tested and working in Xcode following all the docs, with test users etc. However, the subscription group page on the app store shows that: “A subscription has been returned and is highlighted in the table below.”And both subscriptions (monthly and annual) show an ‘x’ with “Developer Action Needed”Finally, the English Localization section shows the app group subscription group as “rejected.”So when I download my app, and attempt to subscribe, it crashes.Anyone know what’s going on and how to correct?
We have set the Transferring purchases seen on multiple App User IDs option toKeep with original App User ID. We are testing with the sandbox user. Here is the scenario : 1. User A do the signup with device A and make the purchase so device A’s playstore account linked with User A. 2. Now At the same time if User B tries to purchase in device A it fails as expected and purchase remains with User A. 3. After 2-3 days if we try with User B, it allows and purchase get successful and device A is now linked with User B. Which in this case should not allowed. By setting the option to Keep with original App User ID. it should not allowed this. We are testing it in sandbox and we wanted to make sure this never happens in production.
Hi,I am using RevenueCat to handle google play subscriptions on my app. I use React Native. I am bit confused about sharing subscribed google play accounts. I use firebase email authentication.User A logs in with their credentials and gets subscribed. User B uses User A’s google account and logs in his account and app shows as subscribed as well. Documentation shows I can handle it with Restore Purchases but I am so confused how to do that. Could anyone please help me with this please? Thanks.Update: I changed “Transferring purchases seen on multiple App User IDs” option to “Keep with original App User ID” but still facing with same problem:User A:..D ℹ️ No subscriber attributes to synchronize...Gets subscribed:.. D ℹ️ Requesting products from the store with identifiers: ... D ℹ️ Products request finished for flexriders_weekly_sub..User B logs in User A’s Google Play account then logs in via User B’s email and activeSubscriptions below function returns true: if (customerInf
If I delete a subscriber via the api, what happens to their historical purchase data? Is it still available in reports or exports somehow, or is it just erased from our stats? I would imagine the answer is the same if deleted via the dashboard instead of the API, but please mention if it’s different.
I’ve implemented RevenueCat on iOS, following the onboarding guide, and my app has been rejected. struct MainApp: App { @AppStorage("isPaying") var isPaying = false // inject into SwiftUI life-cycle via adaptor !!! @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate init() { Purchases.logLevel = .debug Purchases.configure(withAPIKey: "***", appUserID: nil) }...}// in PaymentsViewPurchases.shared.purchase(package: package) { (transaction, customerInfo, error, userCancelled) in isLoading = false print(customerInfo) if customerInfo?.entitlements["pro_entitlement"]?.isActive == true { isPaying = true } }
If a customer has auto-renewing subscription, is there a Webhook event dispatched that we can use to notify the customer that their subscription will be renewed and their accounts charged?
Hello,I have previously implemented RevenueCat subscriptions usingPurchases.shared.getOfferings { offerings, error in if let offer = offerings?.current, error == nil { currentOffering = offer }}I am now trying to show a different set of upgraded offerings if the specific user already has our base level subscription. I have reviewed the documentation for displaying packages, but there no examples on how to go from fetching a package and getting to a product for purchase. I have tried to integrate the following code: Purchases.shared.getOfferings { (offerings, error) inif let packages = offerings?.offering(identifier: "not the current offerings")?.package(identifier: "Monthly") {// Display packages for sale}}But I don’t know how to display packages, or select them for purchasing. I’ve tried to create a selectedPackage State variable write to it in the function, but that didn't work for me either. When I use the offerings.current code I can get my products to show up, but if try to fet
Hello, I have a customer who was charged once their trial ended, even though they had cancelled their subscription before the trial came to an end. Can you please help explain this?The RevenueCat messages are:Converted from a trial (8:41PM, 2023-05-10) Opted-out of renew (5:12PM, 2023-05-10) Started a trial (8:41PM, 2023-05-03)Thank you!Kris
We've noticed that when a user subscribes with a free trial and cancels it (after the trial period), then subscribes again, our code doesn't log the successful purchase, even though RevenueCat does. This seems to only occur for subscriptions without a trial period, as our code only looks for an entitlement set up as a subscription with a trial period.We believe the issue lies with our code not accounting for subscriptions without a trial period: const purchaseMade = await Purchases.purchasePackage(the_package);if (typeof purchaseMade.productIdentifier !== "undefined") ... For some reason, this returns true when they subscribe with the free trial and false when they subscribe without it.Additionally, we're facing another issue with testing subscriptions after a trial ends effectively. We don't know how to do this without waiting for 3 days(introduction trial period). Do you know of a quicker way to test this?
I’m getting an issue opening any docs page, such as https://www.revenuecat.com/docs, https://www.revenuecat.com/docs/getting-started, or https://www.revenuecat.com/reference/revenuecat-rest-api.The page flashes with content for a second before turning white.Things I’ve tried:Multiple browsers Disabling browser cache The browser on my phone on data instead of WiFi Ensuring browser plugins like ad-block are disabled
I’m currently setup with “Transfer to new App User ID”for my“Transferring purchases seen on multiple App User IDs” option.Where should I be calling SyncProducts() that makes most sense?Should it be if I call getCustomerInfo after signing in and it comes back empty?If I do this, can I safely assume that I’ll never have to show the paywall screen and I can just display a waiting dialog until the new entitlements arrive in my listener?At the moment, I’m just calling SyncProducts after sign in but I would like to hold off from displaying the paywall if I’m certain that the purchases are going to get transferred.I could obviously just test this but as we all know, just because something SEEMS to be working, it doesn’t necessarily follow that it will consistently if the application runs contrary to convention.
I see with the new Developer API that we now have the ability to create products, entitlements, offerings, and packages. This is great, but I would really like to be able to also create a new app via the API. Also as part of this, I would need to then be able to get the public key for the newly created app in order to automate on my side. Are there any plans for adding the ability to create an app through the API in the near future?
Hi! Deep link clicks to apply custom promo codes isn’t working (cf screenshots) in Android. If my code is “BETA”, I’m using the link https://play.google.com/redeem?code=BETA as specified in your doc and in the google play doc. Inputing the same code, “BETA” here, manually in the payment prompt in my app works. I’ll add that deeplinks for single-use promo codes work (using the same link construction rule as for custom promo codes, so if my code is 123456789 the link https://play.google.com/redeem?code=123456789). Any idea how to make deeplinks for custom promo codes work? Best,Jane
Hello - thanks for reading! I have a slightly unique use case and am looking for guidance. Product: A service that allows users to upload a video and we create clips from that video that the user can then watch in the app. Goal: I want users to experience this service for free so they can understand and fully appreciate the value of it. Then on subsequent video uploads I want to charge them. Issue: I’m not aware of any way to discount/coupon the first In-app purchase and then charge the user for subsequent purchases. This is on iOS, and the product is a consumable product. Appreciate any help!Max
Hi,We are trying to create an offer code for a partner that gives their clients a month free and then 20% off our product. Is there a way to have an offer code or some combination of offer code and introductory offering that gives a user both a month free and a discount?Basically, the flow would be - a user comes on to our app referred by a partner. We to set up some relationship with the partner where THEIR users specifically get both: 1 month free 20% off our list price. For further context, we use the in-app offer code redemption sheet currently for offer codes. Are their better options than this for partner offer codes in an iOS app?
i have flutter app for android. I use a monthly subscription(3 days trial). one of the users saw the following story: Changed their renewal preference to MySubscId Started a subscription of MySubscId2023-04-08 4:02 AM UTC Last opened the app2023-04-08 4:01 AM UTC Had their subscription of MySubscId expire2023-04-03 3:06 PM UTC Had their subscription of MySubscId cancelled due to a billing error2023-04-03 12:26 PM UTC Entered a grace period of MySubscId due to a billing error.2023-04-03 12:26 PM UTC Started a trial of MySubscId2023-03-30 12:26 PM UTC First seen using the app2023-03-30 12:24 PM UTC Total Spent for user = 0. so the user used the trial for 3 days, then his subscription ended. but what does “Changed their renewal preference to” mean? Changed their renewal preference to MySubscId Started a subscription of MySubscId2023-04-08 4:02 AM UTCany hints - I will be grateful.
Hello,I’ve just submitted a new app.The hap has 10 IAP (5 kind of products: 1,3,6,12 months + lifetime, each for 2 different groups/price points).I added all 10 products because I want to do price experiments.Of course, the current offering has only a subset of these products; presently one of the two lifetime IAPS is the only product in the active paywall.Apps rejected the app for “App Completeness”; when I asked for clarifications they wrote back:Regarding the guideline 2.1, you have submitted 10 In App Purchases for review but the app binary only includes 1 In App Purchase. If you do not want to include in-app purchase products in your app, it would be appropriate to remove any unused in-app purchase products from App Store Connect before resubmitting for review. So they complain I have 10 IAPs but I am showing just one.Of course I could easily set the current offering to one which has 4 or 5 products, but that still leaves 6 out.How do I manage this rejection? Is it kosher t tell A
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.