Discussion and help from anything related to RevenueCat.
Recently active
Are there any plans to support fetching Web Billing products on mobile platforms?ContextWe are using RevenueCat Web Billing to manage our web app subscriptions.On the companion mobile app, we would like to show users some details regarding their subscription.As such we are configuring our Purchases instance with the WebBilling API Key.This works well for the most part - with entitlements & subscription expiration data coming in as expected on the CustomerInfo response.IssueOther information (such as price) can only be obtained via the product instance itself.And any attempt to fetch the WebBilling product returns a “Not Found” error with it being obvious that the SDK is only searching among the PlayStore / AppStore products.Furthermore, attempting to manually specify the store via the PurchasesConfiguration.Builder is also met with an exception. And sure enough, looking into the implementation reveals that the provided store is cast to the one native to the platform (e.g. on Androi
I am getting logs that occasionally with some users Purchases.sharedInstance throws UninitializedPropertyAccessException even though Purchases.configure was called literally on the line before. Our app is only available via Google Play Store, so there shouldn't be any issues connected with prerequisites not being met on that front. Is Purchases.configure asynchronous in some sense? I skimmed through the code and I saw no indication that the configuration (and initialization of sharedInstance) should fail in any sense. One thing I should also note is that I access Purchases.sharedInstance via DI using Hilt. It occurred to me that maybe there somehow exist two instances of Purchases (one configured, and one not), but I think if that was the case, this problem would be ubiquitous, and not impacting just some of the users some of the time. I am using SDK v8.17.1
How are people restoring purchases with App2Web and RC paywalls?I’m in the sandbox for all of this right now, and I’ve been testing flows on Dipsea to see how they are supposed to work and I can’t figure this out at all:The restore purchase button in RC Paywalls does nothing if there is no active iOS or subscription or if there is an active RevenueCat Billing subscription. At the very least .onRestoreFailure should be called, but it is not, it seems like a bug that has been around for some time according to these forums. I noticed in Dipsea this is also the case, nothing happens when you press restore purchase. There is a progress wheel for a split second and then nothing.This leads to my next questionIf someone makes a purchase via App2Web, how do they restore their purchase? There seems to be no way of doing this right now via the RCPaywall? Or am I missing something? If they press restore purchase that does not seem to restore anything in sandbox or give them a prompt to sign in wit
Hello,On the Paywall is there a way to dynamically show the free trial text according to whether the customer is subscribing for the first time or has already subscribed before ?
I have noticed from the 14th and 15th of May that our scheduled data export on version 5 has had some columns move. Specifically `first_seen_time` and `auto_resume_time` which used to be in that order and have now been reversed in the export from the 15th onward. Has anyone else experienced this or similar? it broke our importer so I just wanted to see if it’s unique or if others have had the same and/or experienced this with other columns or exports in the past so I can find the best strategy to deal with it in our data pipeline. Thanks!
The filter for Last Seen App ID using either contains or does not contain seems to be broken. For example, I am trying to filter non-anonymous IDs using Last Seen App ID does not contain “$RCAnonymousID”. All customers are shown. Similarly, using contains returns no customers.
Hello, is there a way to check if the user that hasn't bought anything yet, is from Apple US Storefront with react native?
Hi RevenueCat Team,I’m seeing a currency mismatch in my TestFlight build on iOS 18.4 and 18.5: Tester’s Apple ID region is set to India. In-app UI shows prices in USD. Purchase sheet shows prices correctly in INR. I’ve tried uninstalling, reinstalling but no change. This started happening after updating to iOS 18.4 and 18.5, and IOS 18.3 is worked fine Is this a known sandbox/TestFlight issue or something with my RevenueCat setup? Any advice?Thanks
This has been partially addressed in previous posts, but I think it’s worth brining up again because there are aspects of solving for this that are not straightforward.I’m an indie iOS developer with limited resources, and my requirements are that a user is able to subscribe within one of my apps, and get access to all my other apps as well (3 in total). In RevenueCat I understand how to link products across multiple apps within the same project with a single entitlement, that part is straightforward. The parts that aren’t relate to user management.Apple doesn't provide for this, and recommends user management with my own server. RevenueCat creates anonymized user IDs, but they are not useful for my case since they’re linked to an app instance on a particular device. RevenueCat recommends custom App User IDs, but that still requires that I use my own backend for user management.I want to spend my energy bringing features to my users, and not spend it maintaining subscription infrastruc
I would like to know do RevenueCat support the c++ language? I'm currently using react native and their new architecture supports C++. Also I have some other projects that are not react native but they are Juce projects, which is a framework written completely on C++. I would like to know if there are any plans to release a C++ SDK.Juce allow us to create cross platform music applications. It's written in c++. I am trying my best to not need to write platforms specific code for iOS, macOS and android. I just like to use C++
Hi everyone,I'm running into an issue when testing the subscription flow in my Android app. After installing the app and reaching the paywall, I get the following error message:"Item not available in your country"This only happens on Android, and it prevents me from completing the flow to test the subscriptions properly.Here are a few details:The app is currently in closed alpha on the Play Store.Both the app and the subscription product are marked as available in my region (I've double-checked the Play Console settings), I am using flutter.The issue doesn't happen on iOS – only Android.I'm located in a supported region, and the Google account I'm using should meet all the criteria.Has anyone experienced this before or know how to fix it? Any help would be greatly appreciated – I’m stuck and really need to test the flow end-to-end.Thanks in advance!
Hey everyone!I'm using RevenueCat’s default PaywallView in my iOS app, and I’d like to know if there’s a supported way to run a custom validation before the actual purchase happens, using the default paywall UI.Here’s the use case I need to support: A user logs in to App Account A using Apple ID X, then subscribes successfully. Later, they log out and log in with App Account B, but still using the same Apple ID X. Before allowing them to subscribe again, I want to detect that Apple ID X already has a subscription tied to a different app user ID. To do this, I use restorePurchases() and compare the originalAppUserId.But currently, I can only run this validation before presenting the paywall, which isn’t ideal UX-wise.I saw that originalTemplatePaywallFooter accepts a purchaseStarted callback, like: CustomMarketingView().originalTemplatePaywallFooter(purchaseStarted: <PurchaseOfPackageStartedHandler?>) But i can't make it work. ❓What I’d really like:To trigger my validation onl
Hi,We encounter a problem when integrating RevenueCat with promotional offers on iOS. We’re using the same App User ID on all device, but we get different results on iOS emulator, on an iPhone plugged on a Mac and on an iPhone with Testflight. We were able to integrate “Developer Determined Offer” on Android with no issues.On the iOS emulator, when we use the RC function Purchases.getProducts, we correctly see the promotional offer full_access_fidelity in the returning JSON:{ "currencyCode":"USD", "discounts":[ { "cycles":12, "identifier":"full_access_fidelity", "period":"P1M", "periodNumberOfUnits":1, "periodUnit":"MONTH", "price":2.9, "priceString":"2.90 $" } ], "identifier":"sfw_full", "introPrice":{ "cycles":1, "period":"P1W", "periodNumberOfUnits":1, "periodUnit":"WEEK", "price":0, "priceString":"0.00 $" }, "price":29, "priceString":"29.00 $", "productCategory":"SUBSCRIPTION", "productType":"NON_CONSUMABLE", "subscriptionPerio
I’m trying to test the paywall in my app on a physical iPhone. The first time I tapped a subscription option, I was prompted to sign in with my Apple ID. After signing in, I received an error saying the user isn’t allowed to make in-app purchases in the sandbox environment. I later realized I needed to create a dedicated sandbox test user for this. I’ve since created the correct test users in App Store Connect. However, the issue I’m facing now is that the app seems to remember the original (non-sandbox) Apple ID I used, and I’m no longer prompted to log in when attempting a purchase. I’ve tried deleting and reinstalling the app, and signing out of iCloud on the device, but it still doesn’t trigger a login prompt when I tap the purchase button. Has anyone run into this? Is there a reliable way to reset or clear the previously cached Apple ID used for sandbox testing?
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
Not having the ability to upgrade/downgrade Stripe plans via Web Billing is painful. I read in another post that the RevenueCat team was working on this in Q2. Any updates?
Hello,I deleted a user on accident. I have the RevenueCat id, is there any way to restore this user and their entitlement? Will it restore when the subscription bills again? Im hoping there is some deleted db that RevenueCat persists for a bit or some solution. Thanks!
How can I solve this problem?
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
Hello!TL;DRIs there a better/faster way to test monthly and yearly subs (i.e. start them, see them renew, see them expire and see the paywall come back in a matter a few hours) other than1- install the app from TF using an AppleID that is a user of the app in App Store Connect and added to TF2- sign out of the phone with that Apple ID3- sign on the phone with another Apple ID that is only present in the sandbox of ASC (this one is not on TF so the first AppleID has to install the app on that phone for its benefit)4- test the subs, with monthly renewing every 5 mins and yearly every 60 mins (and either expiring after a handful of times)?The problem with this is that if I have to reinstall the app to reset things, I have to sign out the sandbox only account, sign in the TF one, install from TF, sign out again, sign back in the sandbox account, test.I’ve asked two GenAIs whether I should add the sandbox AppleID to app users and TF, they both said no. I can’t remember what I have tried at
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
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.