Discussion and help from anything related to RevenueCat.
Recently active
I am integrating RevenueCat Web Billing (Stripe) into my Flutter Web app, but I am running into a persistent issue where my Stripe products are not being recognized despite following all the official documentation.[The Issue] In the RevenueCat Dashboard, the Store Status for my Stripe products constantly shows as "Not found" (or "Product not found in live mode..."). In my Flutter Web app, when trying to fetch offerings, I get a "Configuration Error: Production not found in RevenueCat" error, and the offerings list returns empty. [My Environment] Platform: Flutter Web (purchases_flutter) Integration: Stripe Web Billing (connected via the new Stripe App Marketplace OAuth method. Account: acct_1T...) RevenueCat Apps: Configured both "ParentSage (Stripe Production)" and "ParentSage (Stripe Sandbox)" [Steps I've Already Taken & Verified] Stripe Connection: Confirmed that the Stripe account is successfully connected via the Stripe App Marketplace. Price ID: I strictly used the St
I noticed a similar question was posted 3 years ago, but it didn’t receive a response. I couldn’t find any documentation clarifying whether it’s okay to use the same Google Cloud service account and the same Pub/Sub topic for multiple android apps. Is it okay to share them across the apps, or is it better to create a separate service account for each app?
I get notifications via the mobile app when users start a trial, renew, etc but I’d also like to get a notification when a customer cancels a subscription or opts out of renewal.Is this already possible? If not, place consider making it possible.
Hi,When a user buy a consumable from my app, I need to give them a quota for creating a listing. So it would be better if thats near instant after success purchase.Thats why i created another route to verify that purchase, grant quota. In case of webhook delays.But in api endpoints i couldnt get the store identifers of products. Instead i only get RC api id of that product. Since we dont use entitlements i couldnt use any way to get that store ids. I also have a mapping table in my db to get correct quota thats why i need to get that store ids. Am i missing something? `https://api.revenuecat.com/v2/projects/${PROJECT_ID}/purchases?store_purchase_identifier=${transactionId}`,currently i used this one to verify a new purchase.
I have a nice little app that currently accept payments in Stripe. It's a desktop app for Windows that integrate into my website. Currently users purchase the desktop app on my website which payments are going directly to Stripe. I Do have a macOS version of the app and it uses RevenueCat which all of payments and data about payments show on the Revenuecat dashboard. I would like my Windows app sales to show on the Revenuecat dashboard. Is there a way that I can have my Stripe payments to show on the dashboard without the need to add code to my website or windows app. Is there a way I can just link Stripe and Revenuecat together
We’re using purchases_flutter (9.12.0) on Flutter web with RevenueCat Billing (Stripe). The flow is:User is on our paywall screen (Flutter UI). User taps Subscribe/Purchase → we call Purchases.purchase(PurchaseParams.package(package)). RevenueCat opens the Stripe checkout in a fullscreen overlay (iframe from pay.rev.cat / Stripe).Issue: On Android Chrome, the overlay shows and the scrollbar appears (content is taller than the viewport), but touch/scroll doesn’t work inside the checkout form. Scrolling works on iOS Safari and desktop Safari. So the overlay knows the content doesn’t fit (scrollbar is visible), but scroll gestures don’t reach or don’t work inside the Stripe iframe on Android Chrome. We reverted our own CSS/JS tweaks (pointer-events, viewport, etc.) and the behavior is unchanged. Environment: Flutter web, RevenueCat Web Billing + Stripe, Purchases.configure(webKey) and Purchases.purchase(PurchaseParams.package(package)). CSP allows frame-src for pay.rev.cat and Stripe. Has
Hi everyone, I'm getting this error. I think I've entered everything correctly, but it's giving me this error. Can you help me?
java.lang.NoSuchMethodError: No static method configure(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/revenuecat/purchases/common/PlatformInfo;Lcom/revenuecat/purchases/Store;Lcom/revenuecat/purchases/DangerousSettings;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/String;)V in class Lcom/revenuecat/purchases/hybridcommon/CommonKt; or its super classes (declaration of 'com.revenuecat.purchases.hybridcommon.CommonKt' appears in /data/app/~~FYWMBB2RNwMfSGeYJ27sOg==/com.myapp.myapp-4FgKj70kwbLDgFLKHfUN7A==/base.apk!classes5.dex) at com.revenuecat.purchases_flutter.PurchasesFlutterPlugin.setupPurchases(PurchasesFlutterPlugin.java:403) at com.revenuecat.purchases_flutter.PurchasesFlutterPlugin.
I have problems finding the platform specific API key, there is no path such as:Project Settings > API keysBut I can see API keys on the left side (image attached) but I can not find the API key need it to submit the app for review or production release
estou recebendo a mensagem de missing_secret ao testar o webhook, mas nao sei onde gerar a key secret
Hi,Is it possible to have platform-dependent configuration in paywalls? Eg. I want to redirect users to different URLs based on whether they’re on iOS or Android when they tap on the “redeem promo code” button.Currently, what I can think of is having a custom variable hard-coded in the app, and using that in the paywall.However, I would prefer something like locales - you could provide different values for each supported platform.
"react-native-purchases": "^9.10.0","react-native-purchases-ui": "^9.10.0", Hi I am using React Native Expo and displaying my paywall using RevenueCatUI.Paywall. I have a default offering setup and linked to a default paywall. I have also just created an exit offer offering and am setting up a new paywall for this. I would like the the exit offer paywall to show the default offering pricing so that I can cross out the default pricing and display the discounted exit offering pricing next to it. How can I accomplish this? This seems like a fairly standard thing a paywall would display but I can’t figure out how to show default offering pricing on my exit offer offering paywall.Example of the type of exit offer paywall I am trying to create is below.
I am facing issue in configuration where I have added all things properly but then also I am getting the error “[RevenueCat] 😿‼️ There is an issue with your configuration. Check the underlying error for more details.”. I am using react version “19.1.0” and react-native version “0.81.5” and react-native-purchases version “^9.7.6”.
I read that Promo Codes on the checkout flow for Web Billing is in the roadmap. What is the latest update?It’d be awesome to be able to have it integrated as part of the checkout flow, so it looks official, and without having to create custom products/paywalls, etc.
Users located in Russia (RU) report that RevenueCat paywall assets are not loading – specifically images and icons. The paywall UI renders, but asset requests fail or never resolve, resulting in missing visuals (empty placeholders / broken images) and a degraded purchase experience I already tried configuring an alternative proxyUrl (https://api.rc-backup.com/) in the RevenueCat SDK. However this did not solve the issue, because paywall images and icons are loaded from a different asset domain which is still inaccessible from Russia
Hey guys There is something wrong with revenue cat dashboard today? My paywalls that i edited this morning have just vanished. Its like the dashboard is not functioning correctly. Please advise urgently.
Hello !I am working on an existing application where i have to get back the customer ↔ subscription relation.As far as i understand, the transfer event is available only from the webhook (transfered_from / transfered_to).The API offers a way to “create” a transfer, through `POST | customers/{customer_id}/actions/transfer`.But there is no way to get this transfer information / history in the API.Am i correct here ?While browsing the original user profile on the dashboard, i can see in “Customer history” the information:`Got their purchases transferred to new_user_id`So the transfer information seems to be present, but cant find a way to get it through the API.Currently considering a dashboard scraping to get this information, but i certainly miss something. How to get the new user id from the API, when i only know the old/original user id ?
I have an app where I want to offer:Remove Ads for say $6.99 as a one time purchase VIP Pass for say $11.99/year that includes the ad removal and other VIP features.As the cost of the yearly sub is more than the one time purchase for ad removal I want to make it so if a user pays at least once for the yearly sub and doesn't ask for a refund, then the no_ads entitlement stays in their account even if they end up canceling at some point the VIP pass.Is this possible? how can I achieve it? Or is there a way for me to check in the code that they've had at least one successful vip pass payment that has not been refunded even if I don't get the entitlement?
Hi,I’m implementing team subscriptions where an admin has a normal auto-renewing subscription, and team members receive a promotional entitlement that expires at the same time as the admin’s current period.On renewal, I try to extend the members’ entitlement by calling the V1 “grant promotional entitlement” endpoint again with a new end_time_ms. const url = `https://api.revenuecat.com/v1/subscribers/${encodeURIComponent(appUserId)}/entitlements/${encodeURIComponent(entitlementId)}/promotional`;const response = await fetch( url, { method: 'POST', headers: { Authorization: `Bearer ${revenueCatApiKey.value()}`, 'Content-Type': 'application/json', }, body: JSON.stringify( { end_time_ms: endsAtMs, } ), });Response:{ insertId: "699397e5000ee469665d0539" jsonPayload: { appUserId: "okolifiqPsTzY10TRV9yA627o3w2" endsAtMs: 1771281961210 entitlementId: "Team Pro Access" expiresAt: "2026-02-16T22:46:01.210Z" message: "rc:grant_entitleme
Currently deciding to integrate RC in my apps. The docs on webhooks did unveil some questions;1) Should we both handle parsing events from the WH payload and call the `subscribers` api, as detailled by the docs.2) The docs detail processing should be delayed; Can we still safel, call the API within the same handler or **must** we defer.3) If the API call fails (e.g. rate-limits) how should our function ideally behave (200 ok vs. e.g 500 to trigger a new WH event. After all - the DB should be in sync with RC.4) Is there a plan for a Supabase integration / typescript starter? Thank you!
Hey all! I just built a free tool that allows you to see forecasts directly in RevenueCat. It's 100% private, local, and open source.I've been wanting to see forecasts in RevenueCat for a while and decided to take a weekend to build this free Chrome extension that does just that.You can install it for free here: https://luckycat.tools/Enjoy and I hope its helpful — wishing you all success in 2026.Oh and any and all feedback welcome!
Hey guys, I have recently formed a LLC and have created a brand new developer accounts on Apple and Google. i would like to move my apps to the company developer accounts, and i was wondering about what would be the process with migrating on RevenueCat. I have already created a brand new account on RevenueCat, and got a few questions. Would the MMR and the data be synced when I connect the details on Google and Apple after the transfer? Is there anything I can do beforehand to ensure a smooth transition between the account with very little down time? I would love to get a small check list or some guidance on what to do to ensure a smooth transition between the accounts,I heard about the 36 hours propagation of Google, and would love to get prepared beforehand to ensure I don’t have users which are unable to purchase haha. if anyone could shed some light on the full process and migration to the new RevenueCat it would be awesome! thanks! 🙏
sadf
Hi,Not sure what information to share to help debug this. It doesn’t happen always, but when trying to load the Paywall component using React Native it freezes randomly (not sure the reason). It makes me wonder if it could be happening in production.I’m sharing the environment I’m using:Component Version react-native-purchases ^9.9.0 react-native-purchases-ui ^9.9.0 PurchasesHybridCommon (iOS) 17.37.0 RevenueCat (iOS native SDK) 5.58.0 RevenueCatUI (iOS native) 5.58.0 React Native 0.81.5 Expo SDK 54 iOS Deployment Target 16.2 Xcode Simulator OS macOS 26.3 (25D125) Architecture ARM-64 (Apple Silicon) According to Claude (after I dumped the crash report from the iOS simulator) it said this: Issue: RevenueCatUI.Paywall causes main thread deadlock on iOS SimulatorThe native SwiftUI paywall (RevenueCatUI.Paywall) triggers a HEIF image decode deadlock on the iOS Simulator, resulting in a 0x8BADF00D watchdog kill.Crash signature:Main thread blocked on __psyn
Hi team 👋,I’m currently building an onboarding-style subscription flow and wanted to confirm official support for multi-page paywalls in RevenueCat Paywalls v2.My use caseI want to create a 4-step paywall flow inside a single paywall, similar to onboarding screens: Value Intro (benefits, no products) Free vs Pro comparison Trial reminder selection Plan selection & purchase (products attached only on final step) The goal is: One continuous paywall experience Navigation between steps using buttons (e.g., “Next”) Products shown only on the last page Analytics tracked per step My questions Does RevenueCat currently support true multi-page paywalls (multiple pages within a single paywall)? If yes: Which template or layout should be used? Is there a Pages panel or page selector that must be enabled at creation time? Can pages be added after paywall creation, or must it be chosen initially? If not: What is the recommended best practice to implement a m
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.