Get help with your SDK implementation.
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
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
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
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() }
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 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
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
I understand that this same question has been asked and answered many time and I want to assure you that having battled with this for over a month now, I have read all the other posts but nothing works. I asked a friend to try subscribing and it worked but for whatever reason, not a single user has been able to subscribe to my app for over 2 months now.I don’t beleive this is parental control because the age limit of my app is just 4 and the error is coming from users all around the world.For added context, I started experiencing this shortly after introducing a weekly subscription plan and upgrading react native to 0.78, and integrating a ota-update package that lets me push updates without going through the review pipeline (I am not pushing any changes that go against Play Policies. Just minor changes). It’s been months now with zero successful subscriptions. I haven’t also had any new subscribers from ios in all this time but I haven’t seen attempts from ios users. For some reason,
We're experiencing an issue with the react-native-purchases SDK where the Purchases.getOfferings() method does not return a response or callback on iOS 18.4. This issue is not present on older iOS versions (e.g., iOS 17.x and below), where the method works as expected.Environment: React Native version: 0.74.3 react-native-purchases version: 8.9.6 iOS version: Issue occurs on iOS 18.4 only Devices tested: Confirmed on real devices running iOS 18.4 Xcode version: 16.2 (16C5032a) Steps to Reproduce: Initialize Purchases with the API key using Purchases.configure(). Call Purchases.getOfferings(). Observe that on iOS 18.4, the method does not return, either as a fulfilled Promise or rejected error. On iOS 17.x and below, the same code path works fine and returns the expected offerings. Expected Behavior:Purchases.getOfferings() should return a valid response or a meaningful error message regardless of the iOS version, as long as the configuration and entitlements are correctly
I’d like to ask for guidance on how to properly handle cases where users attempt to repurchase a subscription product they are already subscribed to.In my app, I’ve implemented a subscription system offering both monthly and annual plans.The issue I’m currently facing is: when a user who already has an active monthly subscription attempts to repurchase the same monthly plan via the paywall, the system silently ignores the request — no callback is triggered, and the only output I can see is the following log:Ignoring purchase request for already subscribed packageWhile investigating this issue, I noticed something interesting: if I configure the package in the offering using PackageType.CUSTOM instead of the standard PackageType.MONTHLY, the PaywallViewModel is able to proceed with performPurchase() (since Package.currentlySubscribed returns false).In this case, the RC SDK ends up calling the Google Play billing flow, which results in an error due to the duplicate purchase. This error i
Hi team, I created the paywall as below and upload a custom image on it. However, the image scale is not consistent on RevenueCat and iOS app. I’ve switch it to ‘Fit’ but seems it still be ‘Fill’.Could you help on this problem? What image ratio and resolution I should used?
Hi,I just submitted a new app to the App Store, but I’ve now noticed some logs in Xcode related to RevenueCat.WARN: ⚠️ Signature failed verification ERROR: 😿‼️ Request to getOfferings(appUserID: "AppUserID") failed verification. This is likely due to a malicious user intercepting and modifying requests. WARN: ⚠️ Signature failed verification ERROR: 😿‼️ Request to getCustomerInfo(appUserID: "AppUserID") failed verification. This is likely due to a malicious user intercepting and modifying requests. Do you know what could be causing these errors? I’d really appreciate your help.Below is the code I’m using to check the subscription status: import RevenueCatimport OSLogpublic final class SubscriptionManager: ObservableObject { private var entitlementId: String = "" @Published public var subscriptionActive: Bool = false { didSet { Logger.subscription.log("Subscription status changed: \(self.subscriptionActive)") } } @Published var customerInfo: CustomerInfo? { didSet
Is it possible to activate Stripes automatic tax collection when using RC-Web?
I'm using React Native to build an Android APK.Since I'm using addCustomerInfoUpdatingListener during app initialization, and within the app, I open WebBrowser to access Web Paywall Links (low code) for payment, will the CustomerInfo be updated after the payment is successful and the WebBrowser is closed? Because if I were to monitor CustomerInfo information
I’m facing a very frustrating error. I’m able to successfully initialize the react-native sdk: useEffect(() => { Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG); Purchases.configure({ apiKey: Config.REVENUECAT_API_KEY_IOS, }); const productIds = ['com.***.*****.staging.pro.monthly']; Purchases.getProducts(productIds).then((products) => { console.log('Products:', products); }).catch((error) => { console.error('Error getting products:', error); });}, []) In this case, it returns a blank array of products. However, in my project configuration, I have successfully imported products from App Store Connect. Secondly, when I run Purchases.getOfferings(), it gives me the Error 23 which mentions misconfiguration. I’m not sure why am I getting that error. I have completed all the steps in the https://www.revenuecat.com/docs/offerings/troubleshooting-offerings guide and I’m still getting the same issue. I’m running my app in a simulator. I know that I need a .storekit fi
Hi,We are trying the new web paywall button in one of our app. It is working great so far but we didn’t find the way to get the info inside the app when a payment is done on the web using the web paywall button.We need trigger some code in our app every time there is a payment in the app based on the subscription taken. Today we an in-app payment, we can simply rely on the response of `Purchases.shared.purchase()`.Is there a way to do the same thing with web payment? Thanks!
The fetchOffers method in the purchase_flutter package sometimes returns me an empty list of products while working in the test environment. While I haven’t faced this issue in the production app yet. And I have been using this package since three years and it was working fine till a month ago I updated it to “purchases_flutter: ^8.7.2”. Does any one knows why is it happening? I doubt that if it is due to the configuration issue since it was working fine since three years.
Hope to launch an Android version Web Paywall Buttondirectly using the Web Paywall Button Pay
ERROR: 😿‼️ There was a credentials issue. Check the underlying error for more details. Invalid API Key.This comes up on TestFlight when loading the paywall. It works on production. Not sure where this is happening from?
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.