Discussion and help from anything related to RevenueCat.
Recently active
Hi RevenueCat team,I'm running into several webhook limitations while trying to set up proper environment separation for my project. I have 6 apps in one project:Dev iOS Dev Android Preview iOS Preview Android Production iOS Production AndroidDev, Prev, and Prod have their own backend and Webhook Url.Problems I'm facing: Can't select multiple specific apps - When creating a webhook, I can only choose "All Apps" or a single app. There's no way to select just "Dev iOS + Dev Android" for a single webhook. Why is this not possible? I don’t understand it... Each webhook URL can only be used once - If I try to create two separate webhooks (one for Dev iOS, one for Dev Android) pointing to the same backend URL (https://my-dev.supabase.co/webhook), I get an error that the URL is already in use. Maximum 5 webhooks per project - Even when I work around the above issues by adding query parameters to make URLs unique (e.g., ?env=dev&platform=ios), I can only create 5 webhooks but I need 6
Hi RevenueCat Team,I'd like to suggest an improvement to the feature request process.From what I've observed, new feature ideas are currently posted as regular forum topics. While the team is responsive in acknowledging them, the threads are often closed after the request is "forwarded to the team."This process can feel like a bit of a black box for users. We don't have a way to see if a feature is being actively considered, its priority, or an estimated timeline. I personally suggested two features about a year ago, and the lack of a clear status update makes it discouraging to contribute new ideas.I propose creating a dedicated feature request portal/page. A system like this would be a huge win-win: Prioritization: It would allow users to upvote and comment on requests, giving your team a clear signal of what the community needs most. Transparency: A status (e.g., "Planned," "In Progress," "Released," "Won't Do") would keep everyone informed and manage expectations. Centralizatio
I just purchased something in sandbox mode but the operation doesn’t appear on the customer’s history. Looking through the logs, I’ve seen this error. Haven't seen any posts about it - any additional information?Note that I'm using Superwall as the main paywall provider and RC is just observing.
Hello,We are currently utilizing the API to track purchased products and the total balance of virtual currencies.We have noticed that detailed virtual currency transaction history is not available through the API, only via the UI.Are there any plans on the roadmap to expose the full transaction log? Additionally, it would be extremely valuable to include a reference ID field for each virtual currency transaction made through the API, allowing us to connect the transaction directly to a specific action or event, rather than relying solely on timestamps for correlation.We look forward to hearing about your API development plans.Thank you.
This is driving me crazy because there is a corrupted user in my sandbox environment and I can’t continue working without deleting it. But deleting it doesn’t work because it’s cached for a few hours. We REALLY need a way to be able to completely delete a user in sandbox environment along with clearing the cache.
Recently Google introduced one time products. Do we need to update any libraries? Asking for react-native purchases specifically.
I have a new-ish app that launched about 2 months ago. I launched the app without RevenueCat, but added it about a week later. I had done a few thousand installs and trial starts during that period. As a result of adding the RevenueCat SDK late, my early data on the platform is totally messed up (missing data, incorrect subscription retention metrics, etc).Can I simply import all of my purchases (server-side, using app store server notifications which I have stored) and expect RC to handle it seamlessly? This means creating the previously unseen customers, merging the seen customers with their newly received ASSNs, etc. Else, how can I fix the bad data I have for the first week of my app?
a
We are using RevenueCat only for non-subscription in-app purchases (e.g. consumables). We currently handle reward distribution exclusively via webhook events on our backend. However, we’ve encountered some cases where a purchase fails (e.g. credit card limit exceeded or other payment method failures), but the frontend has no way to detect this and may incorrectly treat the purchase as successful. We’d like to ask: For non-subscription products, is there any way on the client side (React Native SDK) to detect if a purchase has failed right after calling Purchases.purchasePackage()? What specific webhook events does RevenueCat send to indicate: a successful non-subscription purchase? a failed non-subscription purchase (e.g. payment declined, card limit, etc)? Based on your answers, we plan to distribute in-app rewards only after receiving the successful purchase webhook. Additionally, we would like to clarify the behavior for “Billing Issues” or “Pending” states.If a purc
Hi everyone,I’ve seen older posts about RevenueCat working on Paywalls UI support for Unity, but nothing concrete has been released yet. Our app is built in Unity, and right now managing paywalls requires developer work every time we want to test or update something.Does anyone know if there’s an official timeline for Unity Paywalls UI (similar to what’s available on iOS/Android/Flutter)? Has there been any word from the team recently, or are there recommended workarounds in the meantime?Thanks in advance!
We recently upgraded `react-native-purchases` from `^7.4.0` to `^9.1.0` in order to comply with the **latest Android billing policy changes**. Since then, on **iOS 18 (EAS build, Expo Managed Workflow)**:- In-app purchases succeed- App Store receipts are received correctly- BUT transactions **do not show up on the RevenueCat dashboard**- Entitlements are **not unlocked** ⚠️ Android is working fine — purchases are tracked correctly and entitlements are unlocked as expected. No changes were made to our RevenueCat dashboard configuration. --- ### Environment:- "expo": "^51.0.0"- "react-native": "0.74.5"- "react-native-purchases": "^9.1.0"- Build: EAS Build - Expo Managed Workflow - Platform: iOS 18 The issue started **immediately after upgrading the SDK** and deploying via EAS build on iOS 18. We’d appreciate guidance on whether additional configuration is required for SDK v9 on iOS 18.
Copied Hi, I am facing an issue with the iOS version of my react native app. As the title suggests, when I perform an action in the app which causes the paywall to open (subscription paywall), it closes itself after a second or two of being visible with PAYWALL_RESULT of CANCELLED. Versions:"react-native-purchases": "^9.6.0","react-native-purchases-ui": "9.6.0",I cannot seem to find any other people who have documented experiencing this issue, and there are no warnings or errors thrown in xcode or the metro terminal which can give me any further clues.If you require any more information from me in order to help, do not hesitate to ask for it!Updated: also same issue on physical device as well Ipad, simulator and emulatorVideo recording link: Thanks very much.
Hi RevenueCat Team, We are using RevenueCat only for non-subscription in-app purchases (e.g. consumables). We currently handle reward distribution exclusively via webhook events on our backend. However, we’ve encountered some cases where a purchase fails (e.g. credit card limit exceeded or other payment method failures), but the frontend has no way to detect this and may incorrectly treat the purchase as successful. We’d like to ask: For non-subscription products, is there any way on the client side (React Native SDK) to detect if a purchase has failed immediately after calling Purchases.purchasePackage()? What specific webhook events does RevenueCat send to indicate: a successful non-subscription purchase? a failed non-subscription purchase (e.g. payment declined, card limit, etc)? Based on your answers, we plan to distribute in-app rewards only after receiving the successful purchase webhook. Additionally, we would like to clarify the behavior for “Billing Issues” or “
I wanted to add a social proof carousel to my paywall, and the text inside the carousel didn’t show up! I tried changing the colour of the text didn’t work. There was an emoji in the text, which was visible just fine. Can you help me debug this? I tested on two real devices, and it didn’t work on either of them. I also tried a different style of the carousel, but still the same problem.
The upper part is cut off. Android. Flutter.This is how it should look (taken from the dashboard). This is what I’m calling in Flutter.RevenueCatUI.presentPaywall(displayCloseButton: true);What could be the issue that cuts off the upper part as seen in the first screenshot?
I’ve seen this issue reported already, but there’s specific context which seems to justify opening a new one.It appears on Sentry (Android, Kotlin Multiplatform) and it seems always triggered by Google Play’s automated testing (note however that the app is not live yet, so reports in general are limited).I’m not using `PaywallActivity` in the app. I’m not using a pre-configured paywall, but my own views + SDK functions.RevenueCat is initialized early in app’s lifecycle, as instructed.# I: There is no singleton instance. Make sure you configure Purchases before trying to get the default instance. More info here: https://errors.rev.cat/configuring-sdk**Issue ID:** 69094325**Project:** pivot**Date:** 08/10/2025, 14:03:31## Issue SummaryPurchases SDK not configured before use in PaywallActivity**What's wrong:** The **Purchases SDK** is not configured before use. This occurs in **PaywallActivity**.**In the trace:** The issue occurs after the app enters the foreground and **PaywallActivity**
Hi I’d like to check whats the best practice / what are developers doing to figure out what people actually payed for after using the paywall.I have two products users can choose from.A one off payment to pay for “tokens” (Consumable) A monthly subscriptionWhen a Customer pays for something, this triggers an event on `addCustomerInfoUpdateListener` To figure out If they subscribed I check ‘activeSubscriptions’ .. If a subscription is in the array then I know thats what they bought But if they choose a consumable, im looking at `nonSubscriptionTransactions` I can see a purchaseDate for each one. Do I look at the date to figure out if they just made the purchase? Whats best practice here? Thanks
Hello! I am trying to get my tabs to fill the width of their parent container. Everything in the stack is set to fill width, but it’s still not working. Can you please help?
Recently I have released a new iOS which has no user login, and it generates and stores unique App User ID on device. Many users reported that they cannot use the app across multiple devices, and I figured it is because of your setting “Transferring purchases seen on multiple App User IDs”. Seems there currently is no setting that would support my use case, which I believe must be quite common.In my other apps, with similar setup, the setting for “Transferring purchases seen on multiple App User IDs” is “Share between App User IDs (legacy)” and there it works well. - Why this setting is no longer supported? 😕I have gone through your docs once again, and it seems you recommend not setting App User ID in setups like this, but without it many things become unusable - I don’t have the same id for user device across all services (e.g. diagnostics, analytics, etc.), some external integrations won’t work, also can I grant an entitlement or set a different offering for an anonymous user?To su
Hi there! I’m Jon. I’m building an app for the Play Store and I was wondering if it’s possible to set up a non-renewing free trial on Android. On iOS, it’s pretty straightforward since I can just create a $0 non-consumable as the free trial. However, I don’t think it’s possible to do the same in the Play Store.I want to post on here to see if anyone else is wondering the same thing as me and what are the different ways I can set up this kind of free trial on Android.Thanks and I look forward to hearing from everyone soon! :D
Please, help. We need the answer for android and IOS.
In App Store Connect, I’ve set up one subscription group that contains the following four auto-renewable subscriptions: PREMIUM – Monthly PREMIUM – Weekly SIGNATURE – Monthly SIGNATURE – Weekly im currently testing my application in Sandbox and Testflight but when user upgrade from one plan to another as long as its not the same plan the auto renew turns off automatically im confused is it just a sandbox and testflight thing? coz the autorenew keep working 5 6 times if its the same subscription but when user upgrade or downgrade to another plan it turns off
I’ve migrated an Android app to RevenueCat that previously used Google Play Billing v5 (or older). The app offered several non-consumable one-time purchases. These were acknowledged, not consumed, and users could restore them via queryPurchaseHistoryAsync() before the migration. My app did not require a user to authenticate and relied completely on Google Play Billing to restore purchases made by users.After integrating RevenueCat, no existing users show active entitlements - even after calling both restorePurchases() and syncPurchases(). New purchases made via RevenueCat work fine.I’ve verified: Old product IDs still exist in Play Console and are added under Products in RevenueCat, mapped to the correct entitlements. Users are using the same Google Play account. No backend was used previously to store purchase tokens. queryPurchasesAsync(INAPP) now returns empty results for these users. It seems older non-consumable purchases may have been acknowledged but are now invisible to t
My Kotlin Multiplatform app (iOS and Android) does not use any form of user authentication or account system, it relies entirely on Google Play Billing and App Store for entitlements. After integrating RevenueCat, I’m using the default anonymous user IDs that are automatically generated on each device install.My concern is whether this setup introduces a risk of users losing access to their entitlements under any of the following scenarios: The app is uninstalled and reinstalled. The user switches devices (but uses the same Google Play/Apple ID). The app data is cleared or restored via backup. The anonymous ID changes for any reason. Since RevenueCat identifies users by this anonymous ID, and my app has no backend or custom user IDs, it seems that if a user’s anonymous ID changes, they could lose their entitlement records unless RevenueCat re-syncs their purchases from Google Play.Questions: Is it safe to rely solely on anonymous IDs when my app depends on RevenueCat for entitlem
Problem Description:I'm experiencing an issue where getCustomerInfo() and getOfferings() hang indefinitely and never resolve, but only on my personal device. The app works perfectly fine for all other users and on all other test devices.What I'm Seeing:The SDK initializes successfully, but when I call getCustomerInfo() or getOfferings(), they never complete:LOG 🔑 [RC] isSDKConfigured: trueLOG 🔑 [RC] Refreshing subscription status...LOG 🔍 [RC] getUserSubscriptionStatus - StartingLOG 🔍 [RC] Checking if SDK is configured...LOG 🔍 [RC] isConfigured: true (took 4ms)LOG 🔍 [RC] Calling Purchases.getCustomerInfo...LOG ⏳ [RC] getCustomerInfo still waiting... 10s elapsedLOG ⏳ [RC] getCustomerInfo still waiting... 20s elapsedLOG ⏳ [RC] getCustomerInfo still waiting... 30s elapsed[continues indefinitely...]Additional Context:Once, early on, I received this error: "RevenueCat.OfferingsManager.Error error 0." but haven't seen it again since The app works fine on all other devices and f
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.