Discussion and help from anything related to RevenueCat.
Recently active
I realize this is similar to the post here, but was hoping to dig into it a bit more on why we are seeing this failure.We are seeing “The device or user is not allowed to make the purchase.” when attempting to call Purchases.getProducts() or Purchases.getOfferings() from our React Native app. A few notes:We’re on React Native 0.63. (I realize that the docs recommend 0.64 or newer, but it was my understanding that it should still work on this version). We’ve ensured that the emulator we are running has the Google Play Services SDK installed. According to the AVD Manager, we’re using a fairly new Android version: Android 11.0 (Google Play Services) We are logged into an account on the emulator that is registered as a license tester on the Google Play Console. The emulator has been rebooted several times.This error happens in both our main app and a simple test app that we put together for the sake of testing. Is there something else that we are missing in our testing process that cou
The data for all of my charts says “Last Updated: 9 hours ago”. I’ve tried refreshing the page, different browser, logging out/back in, etc., but nothing helped. The RevenueCat status page isn’t reporting any issues with dashboards, so I’m not sure if this is happening to others as well?
We tried implementing a custom font for the paywall screen using Expo React Native, but couldn’t get it to work on iOS despite multiple attempts (trying on simulator just to see if the fonts show). I followed both the Expo documentation and the standard React Native approach for custom fonts, but nothing seemed to work. Is there a reliable way to do this using Expo? Followed the instructions here as well (https://www.revenuecat.com/docs/tools/paywalls/displaying-paywalls#how-to-use-custom-fonts-2), along with the naming conventions. Still seeing the error that my custom font couldn’t be loaded - falling back to system font.For reference, I’m loading in fonts into my app using the `useFont` hook in Expo - https://docs.expo.dev/develop/user-interface/fonts/. Would really appreciate some help here!
I'm experiencing unexpected behavior when using a custom App User ID with react-native-purchases.At app start, I call Purchases.configure exactly once (on every login) and immediately provide the Cognito sub as appUserID: const cognitoSub = await Storage.getUser(); Purchases.configure({ apiKey: ..., appUserID: cognitoSub, }); However, when calling await Purchases.logIn(cognitoSub) shortly after, the customerInfo.originalAppUserIdstill returns an anonymous ID ($RCAnonymousID...).Even when purchases are restored, the originalAppUserId is still the anonymous ID, not the custom one passed to configure(). This leads to purchases being restorable across multiple user accounts on the same device, which should not be possible.What’s strange is that in TestFlight restoring purchases with a different account on the same device failed, as intended.But in production, any user on the same device can restore the purchase, even with a different Cognito ID.I’m using the latest libraries:"react-native-
Hello, I am working with no anonymous Id’s on Flutter App. Once the user logs in for the first time I call Purchases.configure(PurchasesConfiguration(‘Key’)..appUserId = ‘id’);If a user logs out and another logs back in I call Purchases.login(‘newId’);I have a flag to know when I have called Purchases configuration for the first time in my business logic. However, I do not know if the persistance is going to be the same as with the Revenue Cat package when app is closed, reset, etc. Will it be safe to call Purchases.configure anytime a user logs in regardless if it has been already called? If not, is there a method to validate if Revenue Cat package has been loaded? Thanks
Hello there! During the initial implementation of RevenueCat into our react-native app, we attempted to set the app user ID as the user's first and last name stored in the app context, to facilitate easier contact later on. This led to a bug that caused a custom App User ID to be assigned to users who created accounts through external providers that do not supply this data. As a result, some users were assigned an "app user ID: undefined undefined".This bug was quickly fixed and the affected users were removed from the database.Since then, the app user ID has been assigned anonymously, in accordance with the documentation, and we identify users using assigned attributes.The issue arose later, as despite having no such users and no code in the app assigning a custom app user ID, we started seeing more users with the ID "undefined undefined", and their accounts were being merged during purchase into a single "undefined undefined" user account. I'm convinced the issue lies within the Reve
Hello,I want to integrate Superwall Paywalls in my app, but use revenuecat for the subscription logic. In this case, I have 2 APPS, <bundle-app> and <bundle-app>.dev, one for production and the other one for DEV. I configured Superwall like revenuecat, with this 2 bundles, but, in revenuecat, I can't connect diferent superwall environment, I can only configure 1 key.Is possible configure superwall for each APP in revenue cat? Thanks.
Hi All,I’ve made a very quick and dirty GDScript port of the Purchases Unity SDK to Godot Game Engine here: https://github.com/werdnahull/purchases-godot. Only Android works so far, but iOS is in the works. As I said, it was done quick, so quite a few things are not done the “Godot” way, such as function names and variables. Callback functions were converted to signals, however.
Considering the latest events around Unity, and the community’s backlash, many are exploring OSS alternatives like Godot. Unfortunately non of the alternatives provide stable IAP solutions.Would RevenueCat explore the opportunity to port the SDK to Godot, or provide some guidance how this can be accomplished?I’m particularly interested in a C# port, however GDScript seems better supported. Godot 4 doesn’t build C# to iOS/Android, yet.
Hi,We are planning to integrate a payment gateway to our app’s web version however Stripe isn’t supported in our country (Philippines). I can’t find relevant documentation for the SDK for any sort of postback or equivalents.Since we are already using RevenueCat, is there a way we can proceed without switching to another IAP platform entirely?I’d love to hear from you if you have any suggestions (aside from opening a Stripe Atlas account).
My App supports premium only model. Each new App User have to buy subscription. I select transfer behaviour “Keep with original App User ID”.1. I sign-up with MyUserA and bought the subscription2. Then I sign-up with MyUserB and want to buy the subscription, but get the error `There is already another active subscriber using the same receipt`. (presumably from MyUserA)In a paywall I see an error “The product is already active for the user”. Before RC error modal I see PlayStore bottom sheet error modal “Error. You’ve already subscribed to {MY_PLAN}...” So question, how can I achieve behavior when every new My App user have to buy subscription, while being login into single PlayStore account?e.gMyUserA → SubscriptionInstanceA → PlayStoreUserGlobalMyUserB → SubscriptionInstanceB → PlayStoreUserGlobalIs this possible?I do not want to share the same bought subscription between my app accounts, but also I do not want users to overcomplicate/bother with their PlayStore user change/relation.
Hello,We have implemented RevenueCat in our React Native app. We want to use it only with Apple app store. We have been testing in the SandBox and now we want to test the real production flow before submitting an update for the app. We always get the sandbox test purchase even after switching the SandBox switch off in the RevenueCat website.
Hey everyone,I’ve been working on an Android app using Next.js 13 (with SSR), wrapped in a Capacitor container. I integrated RevenueCat (@revenuecat/purchases-capacitor) to handle subscriptions. The native logs show that the plugin registers successfully and I can fetch product offerings just fine—RevenueCat pulls the subscription details from Google Play (e.g., monthly, annual). However, whenever I tap my “purchase” button, the actual Google Play purchase dialog never shows up.Here’s what I do see in the logs: Capacitor is recognized as running on Android. RevenueCat logs: “Retrieved productDetailsList…” for my monthly/annual SKUs. CustomerInfo gets fetched repeatedly from the cache (no active subscription found). No sign of purchasePackage(...) or the “Launching billing flow” logs from BillingClient. I also tried: Uploading a signed release AAB to the Play Console in an Internal Test track and installing the app from the Play Store with my tester account. Opt-in link is opene
Hi, I’m working on an Expo/React Native project which is nearly completed. On iOS, everything has been working perfectly - I’m using a V2 paywall. On Android, opening the paywall crashes the app, with the following error:java.lang.IllegalArgumentException: Software rendering doesn't support hardware bitmaps android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:726) android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:81) android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:139) android.graphics.Canvas.drawBitmap(Canvas.java:1604) androidx.compose.ui.graphics.AndroidCanvas.drawImageRect-HPBpro0(AndroidCanvas.android.kt:275) androidx.compose.ui.graphics.drawscope.CanvasDrawScope.drawImage-AZ2fEMs(CanvasDrawScope.kt:260) androidx.compose.ui.node.LayoutNodeDrawScope.drawImage-AZ2fEMs(Unknown Source:24) androidx.compose.ui.graphics.drawscope.DrawScope.drawImage-AZ2fEMs$default(DrawScope.kt:587) androidx.compose.ui.graphics.painter.BitmapPainter.onDraw(Bitma
Hello, I am using Revenue Cat for subscriptions in my flutter app.I have integrated it directly to firebase and Revenue Cat successfully sends all transactions to a firebase collection named revenuecat_events. I have a separate collection users which has all data of the respective users. My query is if and when a subscription gets renewed can revenue cat update the specific user records with the new subscription end date?If yes then how? Thank youfor example. IN the image below, this user had his subscription auto-renewed on February 25th.So how do I update this document when revenue cat sends a new transaction.
Hi, Can I use your web billing / low code web app to let users redeem free access / trigger RC Promotions, so the user doesn’t have to enter a credit card? If so, would this work for first-time users? So could I send people a link that always them to redeem a Promotion, then the user downloads my app, and the promotion is somehow recognized when the user opens app and creates an account? Thanks, Toby
I believe I have configured everything correctly, but I am unable to purchase on Android.I have followed everything shown in this link 'https://community.revenuecat.com/sdks%2D51/why%2Dare%2Dofferings%2Dor%2Dproducts%2Dempty%2D124' but it still doesn't work.Configure if (Platform.OS === 'ios') { try { Purchases.configure({ apiKey: REVENUE_CAT_IOS_API_KEY, appUserID: user?.uid, }) } catch (error) { console.error('error configuring revenuecat for iOS', error) await analytics().logEvent('error_configuring_revenuecat_for_ios') } } else if (Platform.OS === 'android') { try { Purchases.configure({ apiKey: REVENUE_CAT_ANDROID_API_KEY, appUserID: user?.uid, }) } catch (error) { console.error('error configuring revenuecat for Android', error) await analytics().logEvent('error_configuring_revenuecat_for_android') }} This is where I am trying to fetch the products. const purchaseStoryToken = async () => { try { useSetLoading(true) const products
Got a default paywall that is working well with a state for showing a sheet and a sheet modifier.sheet(isPresented: self.$displayPaywall) { PaywallView(displayCloseButton: true) } But I would like to have another paywall in select places. I’m unable to find documentation on this. The params available include “offering” for PaywallView and I’ve tried setting it with a string matching my other paywall offering id and also tried declaring it prior to the view.Does not work at all and makes the project not build.Is there any documentation available on this for paywall v2? This page has nothing on how to use the offering parameter - https://www.revenuecat.com/docs/tools/paywalls-v2/displaying-paywalls
Environment- react-native-purchases: "^8.9.1"- react-native-purchases-ui: "^8.9.1"- react-native: "0.76.7"IssueI tried integrating the customer as RevenueCat documented, and nothing appeared when I clicked the “Manage Subscription” button. It seems that the RevenueCatUI.presentCustomerCenter() is not working. What I've Doneawait RevenueCatUI.presentCustomerCenter({ callbacks: { onRestoreCompleted: ({ customerInfo }) => { setCustomerInfo(customerInfo); checkSubscriptionStatus(customerInfo); }, onFeedbackSurveyCompleted: ({ feedbackSurveyOptionId }) => { console.log('Feedback survey completed:', feedbackSurveyOptionId); }, }, });Expected BehaviorThe customer should have displayed it as it was configured perfectly, as instructed in the documentation. Actual BehaviorIt does not work at all when the button is clicked, and nothing shows up. Very importantly, there has been no response er
Hi team,I noticed that PaywallView is currently gated with #if !os(macOS) && !os(tvOS), which excludes macOS support. I was wondering if there are any plans to expand PaywallView to macOS in the future?As macOS apps continue to grow—especially with Catalyst and cross-platform development—it would be incredibly helpful to have native paywall support on macOS as well. I’d love to see this added to the roadmap if it’s not already on there!Thanks for all the great work you’re doing!
Contextual closure type '@MainActor @Sendable (CustomerInfo) -> Void' expects 1 argument, but 2 were used in closure body .onPurchaseCompleted { customerInfo, storeTransaction in print("Purchase Completed: \(customerInfo.entitlements)") I’m trying to get the original transaction ID from an ios subscription purchase using consumerInfo in revenue Cat but consumer info is found in the package. Need the original transaction ID to match to my backend. Any ideas on how to this?Thanks!
Hi everyone,I'm implementing in-app purchases using RevenueCat and would love some clarity on managing multiple paywalls.My goal is to: Show a default paywall during the onboarding stage. Show a different paywall after a user hits a trial limit or reaches a milestone in the app. I understand that RevenueCat supports Offerings and Paywalls, but I want to confirm:Is it best practice to create two different Offerings (e.g., onboarding and postTrial) and then call the relevant one based on the user's stage?Also, are there any potential caveats or gotchas I should be aware of when switching paywalls dynamically like this?Appreciate any guidance or shared experience!Thanks in advance
Hello, I have this error from RevenueCat: code: 23, message: 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 domain: RevenueCat.ErrorCode, userInfo: "readableErrorCode":"CONFIGURATION_ERROR","readable_error_code":"CONFIGURATION_ERROR","source_file":"RevenueCat/OfferingsManager.swift:237","source_function":"createErrorForEmptyResult(_:)","NSLocalizedDescription": 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-off
The documentation does not provide a way to check if a customer is subscribed. It shows how to for Kotlin, but not with KMP. I tried see if the Kotlin way would work but there is no getCustomerInfoWith(), but there is a getCustomerInfo() but it returns nothing.
help how do i fix this error “ [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). ” here are my configurations
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.