Get help with your SDK implementation.
Recently active
Is it possible to end a free trial and offer user to upgrade to a paying subscription?I’m working on a VPN app where I would like to offer limited bandwidth for trial users. If they use it before trial ends I want to offer them to convert earlier.This question was asked for iOS sdk, however iOS is a different market.I haven’t found any limitations from Google side to offer a limited functionality for trial period as long as it is clearly described on the subscription page.
What does “Error 12 Received malformed response from the backend.” mean when running this Flutter code?CustomerInfo? customerInfo = await Purchases.getCustomerInfo();How can I debug/fix this?Note that I am only seeing this in iOS.
I use revenuecat web sdk, my code: const {customerInfo} = await Purchases.getSharedInstance().purchase({ rcPackage: offerings.current.annual, customerEmail: customerEmail, htmlTarget: document.getElementById('purchase-button'),});Is there a way to make Apple Pay the default payment method?So that this tab opens immediately:
Hi! I created a custom paywall, published it, but the correct version is displayed only if the English localization is installed, in other languages the default paywall is displayed There is localization in the application, I also added localization in the paywall constructor The problem appeared today, before that everything worked correctly
So it has been a couple of days since I launched an app and today I got a chance to get my friend to try it out. He even purchased it as it was solving his problem. Then I checked both AppStore Connect Analytics as well as Sales Reports, even the Revenuecat Dashboard - none of these show the actual purchase. Is this info realtime or does it take time to reflect? And just to be sure, I checked with him he mentioned the pro features are unlocked as well which means the purchase has gone through.
I am using the following code in RN to determine if a user is subscribed: const customerInfo = await Purchases.getCustomerInfo(); const isActive = Object.entries(customerInfo.entitlements.active).length > 0; I have received multiple emails recently about people saying they are subscribed but being prompted to subscribe again. No code has changed in this regard. I’ve received emails from iOS and Android users. Is there a better check or a bug in the SDK? The above code is run when the app boots and sets a global session state. It seems to have worked well for a year+.
I’ve see this asked before both in terms of subscription price and in-app purchase price. It seems the only way to the current subscription price in the local currency is to get that information from the webhook. This seems completely against the core value proposition of Revenuecat as a source of record for in-app payments. Why don’t you guys actually fix your apis? Is this product still under active development? It seems the client sdks rely on the v1 REST api and the v2 REST api has been abandoned. Please clarify what’s going on and give a firm roadmap of when you expect to fill out the v2 api.
I’m sometimes seeing that the initial view of the RC Paywall or calling `Purchases.shared.customerInfo()` can be super slow - sometimes over 90 seconds. This even happens after I’ve loaded the offerings successfully.For Paywalls, this results in the view showing the ‘loading’ screen (where it has the skeleton of a paywall, with the ‘shine’ reflecting over the top) for an extended period of time. For calling `customerInfo()`, it means my app takes a significant amount of time before the function returns a value, or it means I don’t get any values from the `customerInfoStream` for that same duration after app launch.As mentioned, this happens even if I call `Purchases.shared.offerings()`, which always seems to return quickly.This seems to only be a problem on the first launch of the app, and it mainly seems to be an issue when running in the simulator - running from Xcode onto a real device seems to be ok, although this has me nervous. Primarily, I want to know if this behavior is exp
Hi team, This issue has been there for over week and I tried all possible solutions based on my search and asking around, the in-app one-time purchase flow seems to work absolutely fine if the app is installed on my device through XCode Build process or even in simulator but when installed through Testflight, it shows “No Packages Available”. This is my first app so it is getting even tricker, and just a few hours ago Apple rejected for the same reason saying in-app purchase is not loading. Because it shows “No Packages Available”, in “Upgrade Now” button is not visible. I checked the Revenuecat details as well as Apple Store Connect details and I see it seems to be correct. Any help please?
Hi team,I’d like to know how I can control which offers are shown on the paywall, depending on my own logic.Specifically:• On Google Play, if I create an offer with the eligibility set to “Developer Determined” and tag it with something like offerX, how can I make sure that the paywall only shows that specific offer if I choose to, based on logic in my code?• On iOS, if I create a promotional offer, is it possible to display the paywall with that promo shown as “redeemed” (active) or not, also based on code logic?In other words, I’d like to programmatically control which prices and offers are shown on the paywall: either the standard prices or the prices from a specific promotional or introductory offer I’ve created and selected.Is this currently supported using your Paywall API / SDK, or do I need to build a custom paywall to have that level of control?Thanks in advance! Best regards,David
Hello, I need help. My paywallscreen does not generate the Apple Store Connect purchase receipt in the Testflight environment and it is hindering the approval of my application on Apple. I thought it would be because the signature was in review status, but Apple support informed that the status is only approved when the application has the approved binary following the guidelines. However, our binary will never be approved because it does not generate the Revenue Cat receipt. What can we do? I need urgent support because I am thinking of removing the Revenue Cat implementation to resolve this error as soon as possible. And the following error appears: 'Unable to complete the purchase. Product ID not mapped'
Hi community,I’m stuck with the subscription product change before expiration. How to implement it in my android app (preferably in java)? All other operations are well executed through the paywall, except the product change. Unfortunately, it charges the new chosen plan at full price (instead a calculated pro rata up to the expiration date) and does not cancel the prior one. I asked to chatGPT, but there were a lot of issues with their suggested codes. I gave up with AI after more than 6 hours trying their codes. Each of their corrections generate new issues.Is there someone here who can help me?Ben
I have two views in my app: HomeView and ResultsView.Both of them have a navigation bar button which opens Paywall using fullscreencover. Paywall uses RevenueCat PaywallFooter. Now when purchasing from HomeView onPurchaseCompleted is called, however when we purchase via ResultsView onPurchaseCompleted is never called even though purchase goes through.Im guessing it has something to do with the fact that ResultsView is further down the Navigation Stack. But its super odd.
I recently realized I can use paywalls for consumables, the token packs in my game, which is great. But I can’t get the ideal config I’d like. My current home grown store has a buy button for each pack which I find more intuitive in this case than selecting a pack and one buy button for the whole group. I think that works great for subscriptions/lifetime where you just want one option, they all do the same thing, it’s just the terms that are different. In my paywall you can hit the buy button next to each pack or tap on the packs image (which would also be nice but would be fine if I couldn’t do that). As far as I can tell this isn’t possible but just making sure. If not would be great to have this. Attached is a screen of what my home grown paywall looks like. Additionally I have a badge showing % off compared to the base pack, I haven’t tried to generate that with the current tools, I’m not sure if it’s possible.. of course I can bake it into the images but ideally it’s dynamic a
Similar post https://stackoverflow.com/questions/72245004/add-an-offer-to-an-already-existing-user-subscription-in-my-android-app-google We offer a monthly subscription and want to incentivize users who attempt to cancel by presenting them with a discounted renewal of the same plan. We use a developer-determined offer for the same monthly subscription, applying it to replace their existing subscription.And trying to apply offer like this. /// switch subscription Future<CustomerInfo> switchToOffer(SubscriptionOption option, String oldProductIdentifier) async { return Purchases.purchaseSubscriptionOption( option, googleProductChangeInfo: GoogleProductChangeInfo( oldProductIdentifier, prorationMode: GoogleProrationMode.deferred, ), ); }While attempting this switch, the store returns an error: “Something went wrong on our end. Please try again”I am trying to figure out whether this approach is even possible, and—if it is—what we might be doing i
Hello everyone,We recently launched a new paywall experiment designed to display our updated v2 paywalls. However, a subset of users were shown the legacy v1 paywall—which still advertises a trial we’ve discontinued—and were subsequently billed during what should have been their free trial. In an effort to stem support ticket volume amid our active marketing campaign, we removed the v1 paywall entirely. Now, we’re seeing users presented with a paywall configuration that doesn’t even exist in our dashboard (see attached image). Has anyone encountered this behavior on React Native with RevenueCat’s new v2 paywalls? We’d greatly appreciate any insights or urgent fixes, as this issue is impacting our current marketing efforts.We’re on:expo 52.0.36react-native-purchases 8.9.1react-native-purchases-ui 8.9.1react-native 0.76.7 const handlePurchaseStarted = useCallback(({ packageBeingPurchased }: { packageBeingPurchased: PurchasesPackage }) => { posthog.capture("onboarding_paywall_purchase
ssss
Hi, are there any plans to make the Paywalls v2 feature available with the Capacitor SDK? Would be really nice if it was :)Thanks!
Error Description:TypeError: Cannot read property 'setupPurchases' of nullEnvironment Details:- Platform: React Native (Expo)- react-native-purchases version: 8.9.4- React Native version: 0.76.9- Expo version: ~52.0.42- OS: Android- Build type: Development Error Context:- Error occurs during RevenueCat SDK initialization- Android Manifest includes the billing permission (com.android.vending.BILLING)- Using Expo managed workflow with dev client (expo-dev-client ~5.0.19)Steps to Reproduce:1. Initialize RevenueCat SDK in app startup2. Error occurs immediately during the Purchases.configure() call3. The native module appears to be null when the app tries to access itAdditional Information:- The app is using Expo Router for navigation- RevenueCat configuration is attempted in the app root component- Billing permission is correctly declared in AndroidManifest.xml- Project is using the latest stable version of react-native-purchasesAttempted Solutions:1. Verified billing permission in Android
Dear RevenueCat Support,I'm encountering an issue where RevenueCat is automatically transferring entitlements between users, and I'd like to understand how to disable this behaviour.Preventing Entitlement Transfers In my use case, each user should retain their own subscription entitlements without automatic transfers happening when a subscription is detected on another App User ID (possibly due to device sharing or restored purchases). Is there a way to completely block entitlement transfers? I looked through the dashboard and documentation but couldn’t find a setting to control this. Is this something configurable per app or only through SDK behavior?
Manually Transferring Entitlements There are scenarios where I want to manually transfer entitlements from one user to another (e.g., merging accounts or correcting mistaken user assignments). I couldn’t find any API to transfer an entitlement from user_a to user_b. Is there any API or other way using which i can intentionally transfer entitlement ??
Hi, 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
Hi team is there any plan for releasing a sdk for electron in future? I know flutter does it however flutter team don’t focus much on macOS and web in general.It would be great if there is an electron sdk. Lot of popular apps are electron based.
I’m busy testing my app and subscriptions are happily going to RevenueCat dashboard, no issue there. When I trigger a cancellation for the subscription from Google Pay, I see it going to the pub/sub without a problem, I see that in my setup screen, the pub/sub shows the time the cancellation went through (Google Developer Notifications Topic IDLast received 2025-04-16 at 04:30 PM UTC) - yet, it doesn’t actually cancel from the dashboard or update in the SDK. Since subscriptions end after 30 minutes, there’s no way to test the “your subscription won’t renew functionality”. I’m fairly confident it generally works, but I’m worried that Google might reject it as they will be cancelling a subscription, but my app will happily show that it will renew.Am I missing something? (I’m yet to figure this out fully for Apple as I had a whole different nightmare with them).EDIT: Immediately after writing this, I decided to just go for it and send it for approval and saw the cancellation came thr
Hi!I am using the new Paywall V2 with Flutter and on Android the image at the top of my paywall is not at the top of the screen.There is a space above the image that is as large as the notification bar, almost as if it was wrapped with a SafeArea but also had a offset of notification bar height.I use RevenueCatUI.presentPaywallIfNeeded().I have set the background color of the paywall to red for these images to be as clear as possible.How it looks from Paywall editorThe componentsHow it looks on AndroidEdit:I have now also tried with text at the top, and that works with no problems. The editor updates the view so that the text is above the image. On the Android device the text appears on the red part and the image is not moved down any further (maybe some pixels)
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.