Get help with your SDK implementation.
Recently active
I'm encountering an issue where the in_app_purchase event does not show up in Firebase Analytics, even though the user successfully completes a subscription using RevenueCat on Android. Purchases.configure(PurchasesConfiguration.Builder(context, apiKey).build())Firebase.analytics.appInstanceId.addOnSuccessListener { appInstanceId -> Purchases.sharedInstance.setFirebaseAppInstanceID(appInstanceId)}Other details: I’m using Firebase SDK directly (no third-party wrappers). appInstanceId logs successfully.
With the new Paywalls v2, there is no way to change the GoogleReplacementMode when making a purchase. I would need to set purchasesAreCompletedBy to MY_APPS to be able to set a custom purchase logic for the paywall to change the mode accordingly. Even the community support does not agree that thats even the correct approach to solve this issue (see this thread from 2 months ago)
Hi,so until now I’ve used Apple In-App Subscription only with RC. I have two subscription tiers (entitlements). Now I’m build a web dashboard and want to sync the tiers and give the users to manage their subscriptions and subscribe to a tier. Works fine with web Billing but after some testing I saw that users can subscribe to several tiers (entitlements) the same time in the web billing version. Or is that only because I’m using the Sandbox version and the system has no time to react? Can we allow the user to manage their subscription in the dashboard? As far as I understood correctly, they can manage their payments only via the stripe dashboard (only when subscribed via web). In case the user subscribed via our iOS app, the user can only manage their subscription via the app? Thanks in advance!
Hi, I’m using RevenueCat’s showPaywall() in Flutter on iOS. Plan A: 1-year with 7-day free trial ($89.99) Plan B: 1-year discounted ($39.99), no trial I want users to start the trial, but if they choose the discounted plan during the trial, they should be charged immediately.Instead, RevenueCat on iOS just updates the renewal preference. No charge happens, and if they cancel before trial ends, they’re never charged.Is there any way to force an immediate charge on iOS using the built-in paywall?Thanks!
Hi,I have a separate component responsible for loading the paywall.Purchases.configure is setup in the useEffect in the index.tsx file as that’s the first component it hits.Then, my subscribe button calls a function that loads the paywall.This wasn’t happening prior to updating the the latest expo/expo supported react native that comes built into their latest SDK.For referencePackage.json:"react-native": "0.79.3","expo": "^53.0.11","react-native-purchases": "^8.9.5","react-native-purchases-ui": "^8.9.5", Any suggestions? Thank you.
I’m using RevenueCatUI and have configured the restore button action correctly in the RevenueCat dashboard. It used to work fine, but recently the onRestoreCompleted modifier is no longer being triggered when I tap the restore button that i configured remotely Here’s the code:PaywallView(displayCloseButton: false) .ignoresSafeArea() .onAppear { print("paywall onAppear") } .onDisappear { print("paywall onAppear") } .onPurchaseStarted { package in print("onPurchaseStarted") } .onPurchaseCompleted { transaction, customerInfo in print("onPurchaseCompleted") } .onPurchaseCancelled { print("onPurchaseCancelled") } .onPurchaseFailure { error in print("Purchase failed with error: \(error)") } .onRestoreStarted { print("Restore started") } .onRestoreCompleted { customerInfo in print("Restore completed, checking subscription status") } .onRestoreFailure { error in print("Restore f
I am an administrator on this project, and I connected the RevenueCat extension on Stripe. The Stripe App Integration on RevenueCat was selected by the owner of the project. I am still getting this error:{ code: 7103, message: "The receipt is not valid." }whenever I try to post a call to curl -X POST \ https://api.revenuecat.com/v1/receipts \ -H 'Content-Type: application/json' \ -H 'X-Platform: stripe' \ -H 'Authorization: Bearer strp_XXXX' \ -d '{ "app_user_id": "XXX", "fetch_token": "sub_XXX" }'I also tried using server to server notifications, and the same error occured. What could be other possible issues for this to happen? I have not tried deleting the Stripe integration and doing it again yet.Thank you for your replies,Calda
Hi RevenueCat team and community!How about paywalls that come alive? Animations could breathe life into paywalls and encourage users to buy. I’ve even whipped up a quick Android prototype – just take a look!SDK tech solution - use Lottie animations. This seems to be possible since all platforms (?) are covered:Android: lottie-android (https://github.com/airbnb/lottie-android, Apache 2.0) iOS: lottie-ios (https://github.com/airbnb/lottie-ios, Apache 2.0) Web: lottie-web (https://github.com/airbnb/lottie-web, MIT) React Native: lottie-react-native (https://github.com/lottie-react-native/lottie-react-native, Apache 2.0) Flutter: lottie-flutter (https://github.com/xvrh/lottie-flutter, MIT) Kotlin Multiplatform: compottie or similar (https://github.com/alexzhirkevich/compottie, MIT) Capacitor: Web?Component payload example:{ "fit_mode": "fit", "id": "someid", "margin": { "bottom": 0, "leading": 0, "top": 0, "trailing": 0 }, "name": "", "padding": { "bottom": 0, "leading": 0, "top": 0,
Hi,I am implementing a paywall for our iOS app. The problem is that we are two devs, so our Developer team is not an organization - which means that I need to use different bundle id and team than him. This does not effect other functions of the app, such as api calls to firebase and other, but it seems to affect Revenue Cat. When testing the paywall, do I need to have same bundle id as is set in App Store? Thanks for help! Edit: Also, I should add that the paywall simply crashes (does not retrieve offerings), but on the revenue cat dashboard a new “customer” appears.
Hi,How i can change the bottom color (gray bar) under "restaurar compras" using Flutter?Im using the demo flutter code from docs, but don't have option to change that part.Thanks.
I would really prefer to test and build as much as I can before having to deploy to the app stores and do the whole build process. Is there really no way to test in editor in sandbox mode?
I’m using purchases_ui_flutter 9.0.0-beta.3 with Flutter web support, and trying to get a rough idea of how much effort I should be putting into building a custom paywall, or whether I can wait for support in the SDK.Is there a rough timeline for this that can be shared, or is this not being actively developed? Thanks!
Hi there,I’m trying to get custom fonts working on a Paywall V2 within an Expo project. After following the RC instructions, things work fine on iOS - however I’m not sure what I’m supposed to do to get Android to use the custom fonts. On Android, my Paywall just defaults to a system font rather than the custom fonts (and all variants end up looking the same).My Expo config is as follows:Expo config This creates the following structure my `android` folder when I build the project - which appears right (as in, the fonts are being copied and an xml file is being generated by expo-font):Generated android folder structure from ExpoThe generated XML file looks like this:Generated xml_hind.xml file I’ve also uploaded the fonts to the Paywall of course. However what I’m unsure about is what am I meant to set as my Android resource names in RC? I’ve tried a combo of various things, but none seem to work. In addition the “Learn more” text doesn’t actually link to anything in this dialogue - so
I recently started using multiple app variants workflow as described here https://docs.expo.dev/tutorial/eas/multiple-app-variants/ So basically for development and production it will have have different bundle identifier.For exampleDevelopment Build: com.yourname.stickersmash.devProduction Build: com.yourname.stickersmashI had configured everything and it worked great for com.yourname.stickersmash . So the question is to support both dev/production build with same codebase, how should I configure revenuecat? What’s the good practice?Do i need to create another app in revenuecat dashboard , everything exactly same except the “Google Play package” and “App Bundle ID” ??Note: after building with com.yourname.stickersmash.dev I’m having error, ofcourse it should have error as in revenuecat dashboard is configured as com.yourname.stickersmashThe error : [RevenueCat] 😿‼️ Error fetching offerings - PurchasesError(code=ConfigurationError, underlyingErrorMessage=There's a problem with your co
Hi there, I have an iOS app with auto-renewable subscription. Previously, we used to store the purchases in our server database and open features inside the app based on it. Now, we are trying to move to RevenueCat and opening the features using the below code instead of relying on our server side subscription status.CustomerInfo.entitlements["Pro Access"].isActive After user update the new version with RevenueCat, will you get the active subscription automatically from Apple Receipt and enable entitlements or should we call syncPurchases programmaticaly so that you will enable entitlements based on it? Please advise, Thank you.
Hi! Is there an endpoint available that allows me to only get my active subscribers?I was only able to find this endpoint, which just returns all customers:https://api.revenuecat.com/v2/projects/{projectId}/customersI saw this old thread where this wasn't possible, but it would be great if it's been added since then.Furthermore, I looked through the docs here, but wasn’t able to find an endpoint that just returns my active subscribers / free trials.https://www.revenuecat.com/docs/api-v2#tag/Entitlement/operation/detach-products-from-entitlement
I’m using RevenueCat Experiments and would like to clarify how targeting rules interact with experiment variants. I’ve reviewed the documentation here: RevenueCat Targeting FAQ, which states that experiments are evaluated before custom targeting. However, based on my testing, it appears that RevenueCat respects targeting rules first before applying any experiments.My setup: I’ve defined a custom subscriber attribute called subscription_type, which can be either "Free" or "Premium". For the appLaunch placement, I’ve added the following RevenueCat targeting logic: If subscription_type == "Free" → show a paywall. If subscription_type == "Premium" → no paywall/offering should be shown. I’ve also created an experiment on the same appLaunch placement that tests two different paywall variants. What I’m observing: Users with subscription_type == "Free" are correctly entered into the experiment and see one of the A/B tested paywalls. Users with subscription_type == "Premium" do n
Hi all In my app I am able to make purchases. That is working fineHowever the users who have not yet purchased but interacted with the app including going to the paywall are not showing up under customs in RevenueCat.I am using Flutter flow.What could I be doing wrong?
The new Customer Center doesn’t seem to be showing the userID. In the previous version, the userID was visible in the Purchase History. However with the new version it’s nowhere to be found. I can confirm this on both debug and production builds (not sure if these are supposed to be different?).I’m looking at iOS platform and on latest SDK 5.28.1 version.I assumed this was removed on purpose in the new Customer Center so I was just about to add it to my app manually. But after seeing it existed in the demo from the June 2025 launch party, I am not sure if there’s something I have to do on my side to show the userID in the Customer Center? My user’s all have anonymous ids.This is how it looks like:
I need to display the subscriptionPeriod and the price of the currently active subscription directly within the app.My app uses anonymous user IDs (no login or authentication), and I don’t have a backend server involved.What is the best way to retrieve and display this information using the RevenueCat React Native SDK?
I’m trying to follow the docs for the capacitor purchases plugin. I’m migrating my codebase from the awesome-cordova-plugins approach I used with capacitor 2. Incidentally, docs are not entirely clear as sometimes there’s no capacitor example (only cordova). Anyway, my issue isIf I use one of these ...const customerInfo = await Purchases.getCustomerInfo();Purchases.getCustomerInfo().then((customerInfo) => {Then use this ... it tells me there’s no entitlements property …customerInfo.entitlements.activeBut if I double up the ‘customerInfo’ then it doesn’t complain …customerInfo.customerInfo.entitlements.activeNote that these issues are showing up in VSCode editor … I haven’t converted all the code yet, so nowhere near actually building/running this.What’s going on? Not sure if this affects anything but I wasn’t going to uninstall the old plugins until all my new code is written, so all these are still there:"@awesome-cordova-plugins/purchases": "^5.37.3","@revenuecat/purchases-capacit
Hi RevenueCat team,I'm experiencing an issue with the relative_discount calculation in my paywall.Setup- Package 1: 6 months subscription at €59.99- Package 2: 12 months subscription at €55.00 (with 8% OFF badge)Expected behaviorThe annual package should show ~54% discount compared to 6-month package:- 6 months annualized: €59.99 × 2 = €119.98/year- 12 months: €55.00/year- Real discount: (119.98 - 55) / 119.98 = 54.17%Actual behaviorPaywallView displays "8% OFF" which is incorrect.Questions1. How is relative_discount calculated exactly?2. Is this comparing against a different reference price?3. Should I configure something specific in my offering setup?Environment- purchases_ui_flutter: ^8.10.1- Platform: Android/iOSAny guidance would be appreciated!
I am trying to build my app with Xcode 26 beta 1. RevenueCat is generating errors:For many functions, I’m getting this error.“Concurrency is only available in iOS 13.0.0 or newer” Here is an example of the code in Obsoletions. func paymentDiscount(for discount: SKProductDiscount, product: SKProduct) async throws -> SKPaymentDiscount { fatalError() } I am using RevenueCat 4.43.3Is there a way I can avoid these errors - I am not ready to move to RC 5.x yet.My code supports iOS 16 or later.
Hi all, I am trying to set up a new react native app and having trouble with this err: [Error: There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More information: https://rev.cat/why-are-offerings-empty]I had this working just last week (paywall was showing up, products fetched properly etc.) but it suddenly stopped working. I have not changed anything in my revenuecat setup, I haven’t changed anything in my app store connect or revenue cat setup (I’ve checked revenuecat audit logs, nothing changed in last 3 weeks). The only potential issue was there was a new app developer agreement for free apps, so I signed and its been over 24 hrs since I’ve signed it but still seeing these issues.I know this is an issue many others have faced, but I have gone th
Hey team - getting this crash on Xcode 26b1 (17A5241e) running on any iOS 26 simulators. I’m on the new v5.28.0 SDK. I can’t repro this in a sample project, otherwise I would’ve posted this to Github as an Issue, not sure if it’s something in my project setup, etc. Things I’ve tried:I commented out any other use of the RC SDK to make sure there wasn’t some race condition happening I’ve tried changing my deployment target to iOS 26 (instead of iOS 17 where I am now) I’ve tried some of the other configure functions including the config builder one, they all crash the same It’s affecting all iOS 26 sims, doesn’t crash on iOS 18 sims I simplified my AppDelegate to the following and still getting the crash (it crashes with a real API key or a fake one in there): import RevenueCat@mainclass AppDelegate: UIResponder, UIApplicationDelegate {}extension AppDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) ->
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.