Discussion and help from anything related to RevenueCat.
Recently active
I’m seeing this error pop up in production only, through Sentry logs. It is intermittent -- it looks like most users are able to subscribe successfully. And, I know that in some cases this may be a legitimate situation where someone clicks purchase and then cancels out of it.However, I see this happening a lot more than I would expect if it were just that situation. In addition, I have specific reports of users trying to make the purchase and seeing an error message in my app. When I triangulate that back to the Sentry issue occurring on that device at that time, it’s the “Purchase was cancelled” error.So my question is, if the user is saying they are attempting to purchase and not canceling it, but they are still getting this error back from RC, how can I further debug?For additional context here is the complete error I get back from RC. Again, this happens intermittently when users attempt to make a purchase, even if they state that they did not cancel it:{ code: 1, message: Purcha
Hi everyone, when a user creates / restores a subscription in the application - how can I get his store account (mail)? or any other identifier associated with the store acount/subscrition id. which will be the same on another device. is it possible? I didn't find it in documentation/examples.
When I use the price string from the API, we see 12.99 like we have in the Apple app store. However, when I access the price itself in the Flutter client library, I see 12.989999771118164. I am not manipulating this price at all, I am printing it directly from Flutter lib. Do you think this is: 1) Apple weirdness 2) RevenueCat API bug OR 3) Flutter bug?
HiAre there any plans to add Samsung Galaxy store and Samsung Tizen (TV)?D
Hey there, good morning!I have this React Native app, and I have 2 separate environments for it: TEST and PROD. Naturally, both environments have separate DBs and users. My app is not live yet and I'll soon be integrating with RevenueCat, and I have a few questions on how do that, especially when I'm using the TEST env.Question 1Should I have separate RevenueCat projects for TEST and PROD? I believe it's best to try and avoid this, as it sounds it might get too confusing, handling multiple API keys, etc. This is an indie project, btw.Question 2Is it a good practice to upload TEST builds to the app store for testing? I'm assuming the best practice for sandbox testing is to always use PROD builds.Question 3Assuming I'll have a single RevCat PROD project and doing sandbox testing with PROD builds, that means that my TEST builds won't have any connection with RevCat/stores whatsoever. How to handle the RevCat-related code in my TEST env?I guess I'll need to check for the TEST env and bypas
Hi folks,I'm experiencing some issues with handling pending purchases in our app. Let me first outline the scenario:We have a consumable product that users can purchase repeatedly. Each time a user makes a purchase, we store tokens in Firestore collection associated with their Firebase Auth userId. We've also integrated RevenueCat with Firestore to log purchase events and we are using the same AppUserID in revenue cat as the Firebase Auth userId to keep data in sync.The issue arises when I test purchases using the “Slow test card (approved after a few minutes)” option. With this, the purchase initially goes into a "pending" state. I know that reopening the app later will register the purchase under the correct AppUserID in both the RevenueCat dashboard and our Firestore collection tracking RevenueCat events.I've read articles suggesting solutions, such as setting up a listener or periodically calling getCustomerInfo() to monitor for updates. The goal would be to automate this so that i
I am integrating RevenueCat into both my iOS and Android applications, and I've encountered an issue with how purchases are assigned to customer IDs across different logins: On iOS: When I log in with Account A, set the customer ID to A (with revenuecat’s login), and make a purchase (not subscription), the purchase is correctly associated with customer ID A in the RevenueCat dashboard. However, when I log out and log in with Account B (in my app), set the customer ID to B (with revenuecat’s login), and make another purchase, the new purchase still gets associated with customer ID A instead of B. On Android: After logging out of Account A and logging in with Account B, the new purchase correctly associates with customer ID B as expected. I've already set the “Restore Purchases Behavior” in RevenueCat to “Leave purchases on the original App User ID”.Expected Behavior: My expectation is that purchases made by customer A should only be associated with customer ID A, and purchases by cust
I have created a product in google play console, and I also created a revenuecat product with the same id, but the the following line of code returns an empty array.// Fetching all products by passing an array of their product_idconst products = await Purchases.getProducts(['product_id']);// Printing the list of products available.console.log(products); // Example response:[]Project info:Expo SDK version: 45 React native: 0.68.2 react-native-purchases: 4.6.1 Device tested: android
Hello, It’s unclear from your documentation what the recommended approach is when a company has two subscription levels (e.g. Basic and Pro). The Entitlements documentation clearly shows two separate subscription levels of “gold” and “platinum” in the images (below), but then the Offerings documentation only really explains what to do if you have a single subscription level (and then you choose the Monthly, Annual, etc identifiers). The recommendations on the forums seems to go from “use separate offerings” to “use a custom identifier”. Based on the example image you have on the entitlements documentation below, I’m assuming you’d recommend keeping both tiers in a single offering, but using customer identifiers instead of the default ones (e.g. gold_monthly, gold_annual, platinum_life, etc).I’d strongly encourage you to add this 2-tier setup to your Offerings documentation, since it’s a very common scenario, and it was really unclear to me what the best approach was. Thank you!
We use react native and want a hard paywall. The issue is a user does the onboarding flow > sees paywall > can swipe down or press “x” and it goes. Even if a user goes off the app then back on, the paywall won’t pop up again. Is revenuecat paywalls only worth doing for freemium business models? If so this should be highlighted upfront.
I keep getting rejected in the app store for the same thing - a black screen on load. I’m unable to reproduce the error on my end no matter what I do, whether in the simulator or on a real device, new install or whatever. All the review team give me is a screenshot of a black screen and tell me that’s what they get on launch. I can’t fix it because I can’t reproduce it, all I can do is add a time out on the revenue cat loading so it still gets past that point.I get barely any information out of them as you can image, so I have no further specifics and normally they approve it after the second or third time anyway because it probably manages to load or something. But every time I add a new update half the time they reject it again for this same black screen issue..There’s literally zero problems with the app, the subscriptions or how they are set up - everything works perfectly. Why do they have a problem with revenuecat loading in their review environment?
We have subscriptions setup in our app however our client wants to see which users from our database are subscribed. Is there a way to pass in an email so that we can query the revenuecat API to get a list of subscribed users and email, or to see on the customers dashboard the emails of those who are subscribed? Any advice will be appreciated. :)
Hello RevenueCat Support,I’m currently running an experiment where new users are enrolled into a test offering, which provides a specific offer (e.g., Offering B). However, I’ve encountered an issue with returning users who reinstall the app:When a user who previously used the app and uninstalled it re-downloads, they are treated as a new user and enrolled into the test offering as expected. Upon purchasing within this test offering, their purchase history associates with their old user ID, causing them to revert to the default offering rather than retaining the test offering they were enrolled in.Could you advise on the best approach to avoid this issue so that users in this situation continue to receive the test offering (e.g., Offering B) even after restoring their previous purchases? I’d like to ensure experiment consistency and prevent unexpected default offering switches for returning users.Thank you for your guidance!
Hi everyone, I’m having a problem with RevenueCat on my application, it’s giving me this error: And on my Application it works in the Xcode environment how can I solve this problem thank you! :
Hi,In my Flutter app I am using ‘purchases_flutter’ (6.2.0) for IAP and everything is working fine with Google or Apple stores. However Amazon IAP is not working - getting following error when call ‘offerings = await Purchases.getOfferings();’:‘Timeout error trying to get Amazon user data’It seems that error returned from server side, any chance to clarify what can cause this error? I reviewed all configuration on both, RevenueCat and Amazon, everything seems according to docs.
I've set a 30-day trial for the annual plan and a 7-day trial for the monthly plan in Apple Store Connect. However, the paywall is not displaying the correct trial periods. it shows 7 days for annual and 14 days for monthly, How can I resolve this issue?
Hello,Whenever I submit a build, the Google Play Store (and possibly the App Store) automatically runs a series of tests they’ve created. If I submit multiple builds in a day, the number of test interactions can exceed the number of actual users who downloaded the app that day. I don’t have a login page, everybody can use my app anonymously.Is there any way to exclude these test users from the RevenueCat dashboard? They significantly skew the free trial start statistics.
Now Apple requires privacy manifest for each third party SDK. We are using revenue cat 6.10.0 and there is no xcprivacy file inside this revenue cat for unity version. Where can I get xcprivacy for revenue cat to use it in unity3d project?
Hello, Team, hope you are doing well.I upgraded revenueCat module to latest one in my ionic/angular project.this is the module in package.json"@revenuecat/purchases-capacitor": "^7.3.1"it’s working on xCode without issue.but I can’t build android build on Android Studio.Execution failed for task ':revenuecat-purchases-capacitor:compileDebugKotlin'.> 'compileDebugJavaWithJavac' task (current target is 17) and 'compileDebugKotlin' task (current target is 19) jvm target compatibility should be set to the same Java version. Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.This is the error log when building. if I use old package, the android build will work without error."@awesome-cordova-plugins/purchases": "^6.4.0""cordova-plugin-purchases": "^5.5.1" Can anyone help me to resolve this issue?
Hello, I have detected what appears to be fraudulent activity. In October, one of our apps (older, unmaintained) reported unusually high revenue (~4x). I found the anomaly in Mixpanel: 49 in-app purchases where made from Tokyo between October 4 - 13th. Each of these users literally opened the app, started a 7-day free trial, and never returned. In every single case. Strangely, most of these trial converted, resulting ~4x the normal revenue. My app did not experience any boost in ratings or rank (49 downloads wouldn’t really move the needle here). But it did see a steep rise in revenue. As far as I’m aware, this “IAP attack” hasn’t occurred in any other app we operate, nor is there any impact on private API/backend resources. QuestionWhat kind of attack is this? Should we report it to Apple or might that backfire into a suspension? Would greatly appreciate any insight on this.
Hi all, looking to use the Revenue Cat API to dynamically set the price of a subscription within my app - looking at the API docs I’m struggling to find a way to make a GET request with either a UserId or SubscriptionId to get the price of a subscription. Is there a way to do this currently, and if so - how?
Hi,While testing my subscriptions on IOS with a sandbox account i found a strange behaviour of getCustomerInfo(), needing to call it twice in order to get the correct data.The way i’ve set my app is to call getCustomerInfo on appLaunch and on appResume, to check for updates. The scenario is the following:I purchase a subscription and get back info that the entitlement is active and my expirationDate is 5min from now (because of the sandbox account). Then i minimize the app and wait 6 mins, after which i can see the sub renewal transaction appearing in rc dashboard and in the customer details screen. I open the app, which triggers getCustomerInfo, but it’s returning the same data i got from when i first purchased the sub. Then when i minimize the app and open it again, triggering getCustomerInfo for the 2nd time, it return the correct updated data with the new expirationDate.Is this the expected behaviour? Is this because of Sandbox? Or am i doing something wrong?P.S. it’s a flutter app
I’m moving RevenueCat 4.x to 5.x and I’ve created my account and integrated my existing app to it.Even though on the dashboard, the `In-App Purchase Configuration` section prompts that I have valid permission, I still can’t purchase when testing it on sandbox environment and receive this error “Apple In-App Purchase Key is invalid or not present”Could someone tell me what’s wrong here?
Hello! I am architecting the backend for a mobile application and despite reading through a lot of documentation posts, I feel I’m going in circles trying to grasp some subtle points and would love to get some answers before committing a lot of development. So I understand the basics of user IDs and anonymous user ids. Our app will ONLY allow users to login (and get an explicit User ID recorded in our database) AFTER a purchase.No problem: users get an anonymous ID, they sign in and we assign them a new, unique App User ID, which we record, and use login() to associate with their RC account. The question happens when the same user logs into a fresh device (or reinstalls). They get a new anonymous ID upon starting up, but then what happens when they “Restore purchases”?My hope is that we would be able to get access to the previously assigned App User ID. However, the documentation for Restoring Purchases mentions:If an anonymous ID restores and the owner of the receipt is an identified
iOS purchases made using a promo code aren’t being recognised in my app. Initially I take a user to the URL below from my app. Once they come back Purchases.syncPurchases() is called. I also have a button in the same page that calls Purchases.restorePurchases(), but pressing that seems to have no effect as well. I do have a listener for any changes in the customer information using this Purchases.addCustomerInfoUpdateListener((info) {}), it starts when the app is opened. Once a promo code has been used successfully and the user comes back to the app and the syncPurchses method is called there is still no update in customer info. My app is in production (available on app store) and I already have in-app-purchses/subscriptions working and fully integrated. What is going wrong here? https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.