Discussion and help from anything related to RevenueCat.
Recently active
Hello, Im having issues with opening Paywall V2 inside Expo app (Android). On iOS it works totally fine but on Android the app crashes (the screen becomes black).Here is the code for my modal:```import { useRouter } from 'expo-router';import { View } from 'react-native';import RevenueCatUI from 'react-native-purchases-ui'; export default function Paywall() {const router = useRouter(); return (<View className='flex-1'><RevenueCatUI.Paywalloptions={{displayCloseButton: true,}}onDismiss={() => {router.back();}}/></View>);}```Deps:```"expo": "^53.0.9","react-native": "0.79.2","react-native-purchases": "8.10.1","react-native-purchases-ui": "8.10.1",```Important note: It also didn't work on Expo SDK 52 and RN 0.77
Hello, Our app allows user’s to change their subscription, so that when their current subscription expires, the new subscription will start.I was looking for some data from the RC SDK that would indicate this upcoming change but I can’t find anything at all. The dashboard will show that a users `renewal preference` has changed, but the SDK doesn’t seem to have this information.I found this issue, which addressed the same topic, but the “answer” (not from an RC employee) was to just not handle that scenario… which as you can see from the last comment, isn’t great.Is there anyway we can get details of the subscription renewal change?
Hi,I have configured Stripe + RevenueCat integration based on the documentation, but I do not see any subscriptions created in my RevenueCat test data. The IDs appear to line up (see screenshots), and server-to-server notifications are enabled with ‘Track new purchases from server-to-server notifications’ turned on. The RevenueCat app is installed and visible in Stripe. I have mapped Stripe product IDs (from the Default Sandbox) to product IDs in RevenueCat. However, even when a successful subscription is created in Stripe, nothing is received by RevenueCat.If someone could help me understand what might be going on and what steps I might take to debug, it would be much appreciated!
Hello, I am using the RevenueCat Paywall system. My application does not use compose, I use activity, fragment and xml system.I can use RevenueCat Paywall perfectly. Now I want to do A-B testing using the Experiments feature. I followed the document but I could not apply A-B testing.Let me explain what I did step by step:1. I made all the necessary installations for RevenueCat paywall and I was able to successfully display the paywall I designed by giving offerName as a parameter and purchases are working.2. I designed a new paywall and associated it with an offer.3. I made a configuration as I added in the visual from the Experiments section.4. I started Experiments.Result:A-B test was not applied. The paywall or offer I wanted is not coming. The default offer is constantly coming.I am sharing the code snippet I used and the configuration on the experiments page visually. Can you tell me where my mistake is or how I can solve it?Best wishes!Note: My app version corresponds to the vers
Hi,I am from the UK and about to launch my new mobile app.I have set my paywall up correctly and app store connect correctly. All price regions are set. My app store and device region are set to the UK. My account is logged in.In development mode, I see the correct currency on the paywall which is pounds. When I launch in testflight I see $ (on the paywall) and then on the app purchase subscriptions sheet I see pounds. This happens on multiple devices in testflight.Why is this happening?I am hesitant to actually push to app store until I can be sure this is fixed.I do not want all of my customer seeing $ on the paywall, it must show the correct currency.Of all the threads I’ve read on this, no on whether from revenucat or elsewhere can actually describe the problem.Thanks.
I wanted to go through an example and understand the current state of a subscriber. The dashboard has “Subscription expired 11 days ago” and my database still has the user marked with the subscription as active and entitled.The way I manage the user database record with entitlements is only via webhooks (I listen to them and grand and remove entitlements accordingly). I think I have some logic issues since in this example the record is not in sync. Example is for user ID: eL9WN4QjQpZgB36ZCPnGhuIC2cq1Customer History in the RC dashboard has these as last few events: My database has these records (event is central USA time): as you can see, the last events are a RENEWAL and then a CANCELLAION after 3 days (which is what my configured grace period is). I did not receive any “conclusion” event for this user. No BILLING_ISSUE, no EXPIRATION nothing like that.As you can see EXPIRATION came first and that is when I removed their entitlements. But then a RENEWAL came 8 days later so I added th
I know for web billing the user can access their customer portal on each email - What’s the recommended path for providing a “billing” screen in the app itself?Is the recommended path to simply use the purchases SDK and build a custom GUI or can we load in the customer center dynamically?If custom GUI, is the customer center link anywhere in an SDK response for things like getting invoices, receipts, etc.. might be good enough to simply have a “manage subscription” button that links out to you all. Thanks!
## Issue DescriptionWhen implementing RevenueCat UI (v7.x.x) in a Flutter application, I've encountered a consistent issue where `PaywallResult.cancelled` is always returned in iOS Sandbox testing, even when purchases are successfully completed. This affects both consumable purchases and subscriptions. In android works well. This issue is only with the Paywalls v2. With the v1 used to work correctly. ### Actual Behavior- Android: Works as expected, returning `PaywallResult.purchased` for successful purchases- iOS Sandbox: Always returns `PaywallResult.cancelled`, even though: - The purchase is successfully processed by RevenueCat - The entitlement/purchase is correctly reflected in RevenueCat dashboard - Customer info is properly updated I would like to know if there is any known solution for this or is related with the sandbox environment. Thanks!
same as reported here and no solution is provided in that thread:
I offer Yearly/Monthly and lifetime on my paywall. I know that for subscriptions they are in the same subscription group.. so if a user chooses to switch from monthly to yearly they aren’t subscribed to both, it automatically switches them.. but what if they are on a subscription and choose lifetime? It’s in a diff section of appstore connect and not part of the “subscription group” so would they then be both subscribed and have the lifetime unlock ? All three products are on my paywall in the same offereing and maybe rev cat handles making sure only one is active? thanks!
Message:Hi RevenueCat team,Some of our Android users are encountering a fatal error when calling Purchases.getOfferings():PlatformException: PlatformException(error, There is no singleton instance. Make sure you configure Purchases before trying to get the default instance. More info here: https://errors.rev.cat/configuring-sdk, null, lb.f0: There is no singleton instance. Make sure you configure Purchases before trying to get the default instance. More info here: https://errors.rev.cat/configuring-sdk at com.revenuecat.purchases.Purchases$Companion.getSharedInstance(SourceFile:12) at com.revenuecat.purchases.hybridcommon.CommonKt.getOfferings(SourceFile:8) at com.revenuecat.purchases_flutter.PurchasesFlutterPlugin.getOfferings(SourceFile:5) ... ) This issue is happening sporadically in production, and the error implies that Purchases.configure() was not called — however, our code ensures that configuration is completed before any calls to getOfferings() are made.This may indicate a ra
Hi RevenueCat team,We're seeing a critical crash affecting some of our iOS users when calling Purchases.getOfferings(). The app terminates with the following fatal error:EXC_BREAKPOINT Fatal error > getOfferingsWithCompletionBlock: > PurchasesHybridCommon/CommonFunctionality.swift This is not just an error — it’s causing the app to crash and close immediately, making the app unusable for affected users.This issue appears to originate from RevenueCat's SDK internals and must be addressed as a top priority. Please investigate and provide a fix or workaround immediately. This is a production-blocking issue for iOS.Thanks.
Hi RevenueCat team,Some of our iOS users are getting the following error when calling Purchases.getOfferings():PlatformException: PlatformException(23, 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, {readableErrorCode: CONFIGURATION_ERROR, readable_error_code: CONFIGURATION_ERROR, storeError: {code: 1, domain: StoreKit.StoreKitError, message: Couldn’t communicate with a helper application.}, 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
Hi RevenueCat team,Some of our iOS users are encountering the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, A network error has occurred. The request timed out., {readable_error_code: NETWORK_ERROR, message: A network error has occurred. The request timed out., code: 10, underlyingErrorMessage: The request timed out., storeError: {message: The request timed out., code: -1001, domain: NSURLErrorDomain}, readableErrorCode: NETWORK_ERROR}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) File "<asynchronous suspension>" This happens intermittently on iOS devices, even when the internet connection appears to be stable. The error seems to originate from the underlying NSURLErrorDomai
Hi RevenueCat team,Some of our Android users are experiencing the following error when calling Purchases.getOfferings():PlatformException: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Billing is not available in this device. DebugMessage: Billing service unavailable on device.. ErrorCode: 3.}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This happens exclusively on Android devices, and the error message indicates that billing is not available. However, the affected users are running on standard Android devices
Hi RevenueCat team,Some of our Android users are getting the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, Error performing request., {code: 10, message: Error performing request., readableErrorCode: NetworkError, readable_error_code: NetworkError, underlyingErrorMessage: Failed to connect to api.revenuecat.com/3.82.170.40:443}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This is happening only on Android, and it's clearly a connectivity issue between the device and the RevenueCat API server.The devices are connected to the internet and other network operations succeed, so we need to know why this specific request to api.revenuecat.com is failing.Please investigate and resolve th
Hi RevenueCat team,Some of our Android users are encountering the following error when calling Purchases.getOfferings():PlatformException: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Error when fetching products - DebugMessage: Billing Unavailable. ErrorCode: 3.}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This is happening exclusively on Android devices. The message suggests Billing Unavailable, but users are using valid Google Play accounts and devices. We're not sure why RevenueCat is failing to fetch pr
Hi RevenueCat team,Some of our Android users are encountering the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, Error performing request., {code: 10, message: Error performing request., readableErrorCode: NetworkError, readable_error_code: NetworkError, underlyingErrorMessage: thread interrupted}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) File "<asynchronous suspension>" This is happening only on Android and appears to be triggered sporadically across different users. The underlyingErrorMessage: thread interrupted part is concerning — it’s unclear why this would happen under normal conditions.This issue is blocking access to offerings and needs to be addressed immediately
Hi RevenueCat team,Some of our Android users are intermittently experiencing the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, Error performing request., {code: 10, message: Error performing request., readableErrorCode: NetworkError, readable_error_code: NetworkError, underlyingErrorMessage: Unable to resolve host "api.revenuecat.com": No address associated with hostname}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This is affecting real users in production, and it’s blocking them from accessing any available offerings. The devices are connected to stable networks, and no other connectivity issues are present.Please investigate and provide a fix or actionable guidance. This need
In reading over the documentation, I see that the appAccountToken in the StoreKit transaction is only set if the app user ID is a UUID (https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notifications#user-identity). We use firebase for auth and their user IDs are not UUIDs. We can generate a UUID from the Firebase ID, but we’d need to to create a UUID → Firebase UID lookup. We can easily do this if necessary, but I’m not clear on the benefits. "What do we lose out on if appAccountToken is not set because we aren’t using UUIDs?
Hi folks.I already have internal purchase logic in my app, and I’m trying to implement RevenueCat’s PaywallView to do A/B testing.My PaywallView presents this message: PaywallView has not been correctly initialized. purchasesAreCompletedBy is set to .myApp, and so the PaywallView must be initialized with a PerformPurchase and PerformRestore handler.Is there documentation on this requirement?
On the paywall the yearly subscription has a tag that shows the percentage of how much the user would save by selecting the yearly subscription. Is there a way to show the actual dollar amount instead of the percentage ?Thank you.
Hey everyone, I am asked to input the Sandbox Api Key here: Any idea where I can find it?
In my previous apps, account creation wasn't a feature, so I relied solely on RevenueCat's SDK to determine subscriber status.However, my new app incorporates an account system powered by Firebase Authentication. I plan to integrate the RevenueCat Firebase extension to facilitate this. My goal is to grant premium access to users consistently across Android, iOS, and web platforms.Therefore, I'm wondering if Firebase Auth custom claims can serve as the sole mechanism for checking a user's subscription status. My concern is that if a user signs in with their premium app account but uses a different Apple ID or Gmail (not linked to the original purchase), the RevenueCat SDK might incorrectly return 'false' for their subscription status."
I am showing a PaywallViewController (iOS, UIKit) without a “Restore” button in my app (I am showing it in my own UI in a step before). Unfortunately, the “Continue” button now sits just at the top edge of the view which looks a bit unprofessional. I see no way to change this myself. Please see the attached screenshot (taken in the Catalyst version of our app). Thanks!
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.