Discussion and help from anything related to RevenueCat.
Recently active
Hey!I have the following use case but coudln’t find a great solution for it yet. This seems like something that should work out of the box, so I’m asking here. In my mobile app, I initialize RevenueCat once and call the login method later to identify a user as soon as I have their userId. However, if that customer has not made a purchase yet, they will not show up as customers in the RevenueCat dashboard. That’s a real bummer because I regularly want to give existing but selected users access to premium entitlements. I cannot do that though if they are not even in the RevenueCat dashboard. From what I understood, calling the configure method creates a user account if none is already created (and cached). Why is that user account not showing in the dashboard?Consider this case: I do direct customer acquisition and get them to download the app and create a user account. Now I want to grant them a specific entitlement. This seems like a very basic feature. But right now, I don’t see how I
Not having the ability to upgrade/downgrade Stripe plans via Web Billing is painful. I read in another post that the RevenueCat team was working on this in Q2. Any updates?
Hello,I deleted a user on accident. I have the RevenueCat id, is there any way to restore this user and their entitlement? Will it restore when the subscription bills again? Im hoping there is some deleted db that RevenueCat persists for a bit or some solution. Thanks!
How can I solve this problem?
I’m interested in using RevenueCat for subscriptions and purchases in a Tauri app released for Android and iOS. The only information I found was a thread from a year ago which suggested using API and said that Tauri v2 support was not on the roadmap:Has anything changed since then? I’d love to use RevenueCat but part of its appeal is using an SDK that ties together all the API calls and the native purchase flow together. Are you planning to support Tauri v2 in the future? It’s a wild guess but given that Tauri’s architecture is similar to Capacitor, I suspect a lot of work done for Capacitor could be reused.
I’m unable to select the monthly or yearly package, and there is continuous logs in console sayingW/[Purchases](24112): Could not process value for variable 'sub_offer_duration' for package '$rc_annual'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.
I'm running into an issue where offerings are not loading only on iOS 18.4. All of my apps that use RevenueCat have been working fine for months, and they still work perfectly on iOS 18.2, and earlier versions. This is happening in all of my apps and I haven’t changed anything recently. I’ve gone through everything mentioned in this article multiple times to make sure my setup is correct. I’ve tested this on both a real device (using a sandbox account) and the simulator The issue is the same on both. I even created a brand new product just for testing, added it to App Store Connect and RevenueCat, but it still didn’t work. I’m not using a StoreKit configuration file. The SDK version is 5.20.2.Here is my debug log, with identifiers anonymized: DEBUG: ℹ️ Configuring SDK using RevenueCat's UserDefaults suite.DEBUG: 👤 Identifying App User IDDEBUG: ℹ️ Debug logging enabledDEBUG: ℹ️ SDK Version - 5.20.2DEBUG: ℹ️ Bundle ID - com.example.MyAppDEBUG: ℹ️ System Version - Version 18.4 (Build 22E
I have a React-Native Expo project. I used StoreKit file and synced it with App Store and edited the original scheme to use this StoreKit file and my simulator was working perfectly and offerings were loaded perfectly. I then do npx expo prebuild --cleanbefore submitting to Test Flight. I created build using and submitted to Test Flight.eas build --platform ioseas submit --platform ios --latestI got an error:There is an issue with your configuration Check underlying error for more details…. <continue> Below is my code: import {ActivityIndicator, Alert, Button, FlatList, Platform, View} from "react-native";import {useEffect, useState} from "react";import Purchases, {PurchasesOffering, PurchasesPackage} from "react-native-purchases";import styles from "@/screens/IAP/IAPStyles";import CustomText from "@/components/CustomText";import Heading from "@/components/Heading";function IAPScreen() { const [currentOfferings, setCurrentOfferings] = useState<PurchasesOffering | null>(nul
Hello!TL;DRIs there a better/faster way to test monthly and yearly subs (i.e. start them, see them renew, see them expire and see the paywall come back in a matter a few hours) other than1- install the app from TF using an AppleID that is a user of the app in App Store Connect and added to TF2- sign out of the phone with that Apple ID3- sign on the phone with another Apple ID that is only present in the sandbox of ASC (this one is not on TF so the first AppleID has to install the app on that phone for its benefit)4- test the subs, with monthly renewing every 5 mins and yearly every 60 mins (and either expiring after a handful of times)?The problem with this is that if I have to reinstall the app to reset things, I have to sign out the sandbox only account, sign in the TF one, install from TF, sign out again, sign back in the sandbox account, test.I’ve asked two GenAIs whether I should add the sandbox AppleID to app users and TF, they both said no. I can’t remember what I have tried at
How can I test IAPs in my Expo managed app in the iOS Simulator? I’m getting PURCHASE_CANCELED when I try to purchase a subscription in my app using an Apple Sandbox account. The app is running on the Apple Simulator with iOS 16.4 installed. Looking through the messages in Console.app I see this: Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=500 "(null)" UserInfo={client-environment-type=Sandbox, storefront-country-code=USA, NSUnderlyingError=0x60000212cae0 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed" UserInfo={NSMultipleUnderlyingErrorsKey=( "Error Domain=AMSErrorDomain Code=2 \"An unknown error occurred. Please try again.\" UserInfo={NSLocalizedDescription=An unknown error occurred. Please try again.}", "Error Domain=com.apple.accounts Code=4 \"No auth plugin to verify credentials for accounts of type com.apple.account.iTunesStore.sandbox\" UserInfo={NSLocalizedDescription=No auth plugin to verify credentials for accounts of type com.a
I’m still using the old API key because when I tried migrating, purchases made with the old key weren’t recognized by the new API (I opened an issue here: https://github.com/RevenueCat/purchases-flutter/issues/472). Today I tried migrating again and noticed the issue still persists. Subscriptions made with the old API key are recognized by the new API, but one-time purchases still aren’t. If the user taps the “Restore Purchases” button, it does correctly recognize it — but I feel like that’s unnecessary friction for the user, and it could lead to negative feedback for the app. I’m also getting the lint warning that Purchases.setup (Flutter) is deprecated. So I just want to know: can I still keep using the old API key? And will support for it eventually be dropped?As a side note, when I restore the purchase made with the old API key, I get this message on console, and then the purchase is fully restored: 🤖‼️ Couldn't acknowledge purchase after restoring it, this most likely means the s
Hi, I'm struggling to handle lifetime products with experiments and paywall v2.I have a flutter app that has some free and paid items. All paid items are lifetime/non consumable and each one unlock a different entitlement related only to that item. Let's say I have 2 offerings for each item to do some A/B testing. 1: The only way that I thought of using this 2 offerings for each different item is putting in the metadata the entitlement identifier for the offering and a boolean to say which one is the one active. Is that the only way to do it? As only one offering can be marked as default/current I couldn't see other way. Besides that I couldn't get offerings by its entitlement using the api in Flutter. 2: Now, let's say that I want to run Experiments for each item with this 2 offerings in the experiment. Will I get many offerings that are "current", each one with a different entitlement on the metadata? Or will I get only one as current? Having trouble figuring out this. Thanks for the
We’re trying to use Revenuecat Web billing with stripe. Our business is registered in India and this is the error we get. From what I see, we need to pass a description when creating a payment intent for stripe, which is probably something Revenuecat is doing in the backend, you can read about it here https://support.stripe.com/questions/failed-international-payments-from-stripe-accounts-in-indiaIs there something we’ve missed from our side or is it an issue?
I am using Jetpack Compose in my Android app. I have created a composable screen in which based on the user (Free or Premium), I show the paywall. Now, when the user makes a successful purchase, my composable screen is getting dismissed automatically. I am using the below code if the user is not premium. PaywallDialog( PaywallDialogOptions.Builder() .setOffering(currentOffering) .setFontProvider(CustomFontProvider(RobotoFontFamily)) .setDismissRequest { onNavigateUp() } .setListener( object : PaywallListener { override fun onPurchaseCompleted( customerInfo: CustomerInfo, storeTransaction: StoreTransaction ) { onPurchaseOrRestoreCompleted() } override fun onRestoreCompleted(customerInfo: CustomerInfo) { onPurchaseOrRestoreCompleted() }
I'm using Flutterflow with native integration. I've made all the necessary settings. My app is from Google and is in closed testing, all the subscriptions are configured correctly. I've already redone the project, recreated the products and the error is still the same.
Hi, I'm reaching out for help with an issue I'm facing regarding a new subscription product I added. I have previously configured subscription products in RevenueCat that are working successfully on both iOS and Android platforms. However, I recently added a new product with the identifier lite_professional_yearly. Here is the setup: The product is added in RevenueCat with the store-specific identifiers: iOS: lite_professional_yearly Android: lite_professional_yearly:lite-professional-yearly The product is added and active in both the Apple App Store and Google Play Console. It is included in the default Offering in RevenueCat. The product shows correctly on iOS devices, but does not appear on Android. Could you please help me investigate why this product is not appearing on Android while it works fine on iOS? Thank you!
## Environment Details - React Native: 0.79.2- react-native-purchases: 8.9.7- react-native-purchases-ui: 8.4.0- Platform: Android- Development Mode: Yes (Expo)- Build Type: Debug ## Issue I'm experiencing an issue with the RevenueCat SDK in my React Native app on Android. During development, the native module is not being properly detected, resulting in the error: ```LOG 📱 [RevenueCat] RevenueCat module check: RNPurchases=false, RCTPurchases=falseLOG 📱 [RevenueCat] Purchases object is not availableLOG 📱 [RevenueCat] RevenueCat native modules not found in NativeModules``` When attempting to initialize the SDK, I get the following error: ```WARN 📱 [RevenueCat] Configure failed but continuing with simulation: [TypeError: Cannot read property 'setupPurchases' of null]``` And when trying to use the SDK's methods: ```ERROR 📱 [SubscriptionContext] Error executing getOfferings: [TypeError: Cannot read property 'isConfigured' of null]ERROR 📱 [SubscriptionContext] Error executing get
I have a webhook set up and working. A user recently paused their subscription, and we received the relevant SUBSCRIPTION_PAUSED event through, which includes the date the subscription will auto-resume.But now the user says they have unpaused the subscription. We have not received any new event though, so from our end, in our customer database, their subscription status is still paused, meaning they are unable to use our app properly.Should we be receiving an event through when they unpause a subscription? And if so, what event type is it? I can’t find anything in the docs, so how are we meant to handle this situation?Thanks,Ian
On march 25th my appsflyer integration stopped working with the error Appsflyer ID not setHow can I make sure I am able to send start trial events to appsflyer?
My react native application takes around 30s to return data from the Purchases.getProducts() function call. There has been no issues until now regarding this and we haven’t changed anything regarding initialization. I am using react-native-purchases@7.28.1 which should be stable according to documentation.
Failed to build iOS app - Swift Compiler Error (Xcode): 'SubscriptionPeriod' is ambiguous for type lookup in this context, also on IOS emulator; already built apps cannot load subscription products, it keeps load indefinitely. Launching lib/main.dart on iPhone 16 Plus in debug mode...Xcode build done. 26.7sFailed to build iOS appSwift Compiler Error (Xcode): 'SubscriptionPeriod' is ambiguous for type lookup in this context...Pods/PurchasesHybridCommon/ios/PurchasesHybridCommon/PurchasesHybridCommon/StoreProduct+HybridAdditions.swift:47:50Swift Compiler Error (Xcode): 'SubscriptionPeriod' is ambiguous for type lookup in this context...ios/Pods/PurchasesHybridCommon/ios/PurchasesHybridCommon/PurchasesHybridCommon/StoreProduct+HybridAdditions.swift:64:54Could not build the application for the simulator.Error launching application on iPhone 16 Plus. Please i need assistance on this Thank You!
I have been trying to get the hybrid mobile app (iOS) working with revenuecat, react native SDK on the native side, and bridging with the web app running in the webview using the web sdk without success, and starting to wonder if it is actually possible if anyone knows?Thanks
My paywall has dynamic terminology for if the user has access to a 7 day free trial or not and I want to determine if the user is eligible for the free trial offer I have setup for my subscription on ios and android.My app is built in react native and I’m using the react-native-purchases library from RevenueCat.I know for IOS I can use the const eligibility = await Purchases.checkTrialOrIntroductoryPriceEligibility(["myPackage"]);but for Android this isn’t available/doesn’t work.For Android can I fetch the offerings and check the introPrice field in the product and if it isn’t null I can assume that they’re eligible to use the free trial ? const offerings = await Purchases.getOfferings();const annualPackage = offerings.all["myPackage"]?.availablePackages.find(pkg => pkg.packageType === "ANNUAL");if (annualPackage && annualPackage.product.introPrice != null) { setFreeTrial(true);}
Environment: React Native: 0.76.5 (bare workflow) react-native-purchases: 8.9.7 react-native-purchases-ui: 8.9.7 Platform: Android (Google Play Store only) RevenueCat API Key: (confirmed correct in code) Audit Log: paywall_published on Default (paywall) by Mukul Sharma @ 2025-05-12 05:34 PM UTC I’ve published a paywall UI via the RevenueCat dashboard and confirmed in the audit log that it’s live. In my React Native app I’m calling: export const ENTITLEMENT_IDS = { PRO: 'pro', PREMIUM: 'premium',} as const;export type EntitlementKey = keyof typeof ENTITLEMENT_IDS;const presentPaywall = useCallback( async (entitlement: EntitlementKey): Promise<PAYWALL_RESULT> => { setIsLoading(true); try { const result = await RevenueCatUI.presentPaywallIfNeeded({ requiredEntitlementIdentifier: ENTITLEMENT_IDS[entitlement], }); return result; } finally { setIsLoading(false); } }, [fetchCustomerInfo, fetchOfferings]); I see my originalAppUs
We've configured our subscription in App Store Connect with the following setup: Introductory Offer: 2-week free trial Promotional Offer (Offer Code): 20% discount for the first year While the paywall correctly reflects the free trial via RevenueCat, we're unable to read or display the discounted price from the promotional offer using any of the available variables or fields in the paywall.Is there a way to retrieve or display the discounted price from the offer code directly in the paywall? Or does RevenueCat currently not support surfacing this data?Any guidance would be appreciated.
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.