Get help with your SDK implementation.
Recently active
I created a paywall, started testing and everything worked fine. But then I deactivated the offer in Google Play and added a new one and after that errors started appearing in the window and now the basic screen is displayed. I have already recreated the offer, but nothing has changed. I’m used Flutter and packages purchases_flutter: ^8.9.0 & purchases_ui_flutter: ^8.9.0W/[Purchases](10485): The Paywall references a package with id '$rc_monthly', but Offering 'new-default' does not contain such a package. It has these packages instead: [$rc_lifetime, $rc_weekly, $rc_annual]. Either add the missing package to the Offering or remove it from the Paywall.W/[Purchases](10485): Displaying default template due to validation errors.W/[Purchases](10485): Could not process value for variable 'sub_offer_duration' for package '$rc_lifetime'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.W/[Purchases](10485): Could not proc
Looking over the consumer proguard rules for the purchases library on Android, I noticed the first line is `-keep class com.revenuecat.** { *; }` which ends up causing most of the SDK to be kept when using R8. This totals over 9100 methods (as of the latest version). Is there a reason that the entire SDK is kept? Can you relax the rules so that some of the unused code can be stripped?
I tried out the metrics API and I noticed something strange:All my revenue is in GBP, yet for the item “Monthly Recurring Revenue in GBP”, the value is returned as 0 and the unit still shows as $. Only the “Monthly Recurring Revenue” item returns a value, but it’s in $.My account “Date and Region” set up also has GBP selected, but I’m getting £0 as my MRR. Is there a way to get the actual value of GBP back? I don’t really want to do a conversion as it will be inaccurate due to currency fluctuations (and that means a conversion to USD and back to GBP which can cause even bigger discrepancies).As an example, if I had £100 in revenue and RevenueCat uses a rate of 1.31 to convert it to USD (Monday’s rate), it would show in the API as $131. If I convert it back to GBP using a rate of 1.35 (today’s rate), the value of $131 would convert to £97. As I will be receiving my funds in GBP, this is quite inaccurate and I want to find something that can tell me my actual revenue instead of a do
Hello,We are in the process of developing a so-called “web2app” onboarding for our iOS app.Currently, all purchases are handled by Apple using IAP:s. Soon, some purchases will be handled by a third party, before the user has even opened our app. In this case, the user will go through a web flow to create their account and pay for our product, after which a webhook is posted to us with some information about the user and their purchase. At this point we will create a record for the user in our system.Now, to my question:The 3rd party payment processing entity will generate a user id, which they will use when posting information about the premium purchase to RevenueCat and to our system (using webhooks). After the user downloads the app, they will be able to authenticate as the user we have created in our system. However, we want to alias the user id given to RevenueCat (generated by the 3rd party), with the user id in our system.Is there a way to achieve this using the RevenueCat iOS SD
The RevenueCat SDK (5.25.3) cannot be built in Xcode 16.4.The error message is as follows:```Failed to find a suitable device for the type IBSimDeviceTypeiPad3x (com.apple.dt.Xcode.IBSimDeviceType.iPad-3x) with runtime iOS 18.5 (18.5 - 22F77) - com.apple.CoreSimulator.SimRuntime.iOS-18-5```
I am participating in the bolt.new hackathon and working to integrate RevenueCat into my React Native Expo mobile app, however I am encountering issues. Primarily, if I understand correctly, the Expo Go app does not include support for `revenue-cat-purchases` library, so I would need to create a development build of the app to integrate RevenueCat into the app. Part of the hackathon terms are to primarily use Bolt.new to build the app, and I don’t believe bolt supports expo development builds (only Expo Go). Has anyone had luck building a subscription based app in Bolt.new? I greatly appreciate any guidance or suggestions.Thank you!
I have created 4 products weekly, monthly, annual and custom. when i try fetch it only gets custom one i cant get them all. what should be problem? I have one “default” offering and add them all in.
I’m using @revenuecat/purchases-js within React Native for Web, and I’ll trigger RevenueCat’s purchase page to be displayed, which has a back button. If I press that back button, the purchase page disappears, but most of my app is covered by a black div, with the exception of my header. Weirdly, I can’t select the div with the element selector in developer tools. Is there a way to address this? Is there an option to open the purchase page in another window, by chance? I couldn’t find one in the docs. Thank you.
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?
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
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:
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
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?
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.