Discussion and help from anything related to RevenueCat.
Recently active
In the docs of https://www.revenuecat.com/docs/api-v2#tag/Purchase, it requires purchaseId which seems to be missing from the react native SDK?I have tried using both transactionIds in customer info and in the transaction object but it the api fails to return so. Is this because the IDs are only in sandbox/test purchases in Android? Using the get all https://www.revenuecat.com/docs/api-v2#tag/Customer/operation/list-subscriptions is less than ideal when one user has multiple purchases.
We are building a cross-platform app.When trying the capacitor plugin, we are getting: Web not supported in this plugin.Is capacitor/ionic supported in iOS and Android only?
We received feedback from Apple’s app review.Our app is designed with RevenueCat’s “Transferring purchases seen on multiple App User IDs” setting set to “Keep with original App User ID”, which prevents users from making in-app purchases without registering an account. However, Apple’s review guidelines prohibit requiring user registration before allowing content purchases. We would appreciate any suggestions for the best workaround to comply with Apple’s guidelines while maintaining a seamless purchase experience. References:• RevenueCat Documentation: Keep with original App User ID Feedback from Apple:Guideline 5.1.1 - Legal - Data Collection and Storage We noticed that your app requires users to register with personal information to purchase in-app purchase products that are not account based. Apps cannot require user registration prior to allowing access to app content and features that are not associated specifically to the user. User registration that requires the sharing of perso
HiI create one subscription with two base plans(both with free trial offer).one is backwards compatible(monthly),other is non backwards compatibleAnd I created a default offering with three packages,(monthly, yearly, lifetime)when I called getOfferings() to get all available packages I only get monthly and lifetime ,can’t get yearly(non backwards compatible) package.I tried RevenueCatUI.presentPaywall(); It also get only two packages.btw I tried this:https://community.revenuecat.com/tips-discussion-56/google-play-store-non-backward-compatible-not-being-fetched-3888?tid=3888&fid=56 Not workingWhat can I do to solve this problem? Thank u!purchases_flutter: 8.6.1 (I also tried 8.6.0 and 8.3.1)Flutter: 3.27.1com.android.application:8.9.0 (also tried 8.8.0)gradle: gradle-8.12.1-all.zip
I have 3 tiers of products, individual (monthly, annual), team (monthly, annual), and enterprise (monthly, annual) So I want my paywall to have a tabbar which allows viewing each tier of subscription and letting the user select the relevant package. This seems to have been possible with in paywallsv1, but I can’t figure out how to get the v2 editor to do the same thing. Is this currently possible via the editor?
Hi everyone,Is anyone here a member of the Play Pass program? We're trying to figure out how to configure RevenueCat to support it properly.Specifically, we’d like to know how we can check if a user is a Play Pass member and, more importantly, how to detect when a user is no longer a member.Any insights or experiences would be greatly appreciated!Thanks in advance!
Getting error from some users around %2Error Code : A network error has occurred. An SSL error has occurred and a secure connection to the server cannot be made.
Hi, quick easy question from a newbie. What I have to use to get the Appstore country used to fetch the Appstore purchases ? Is that in packages? if let packages = offerings?.current?.availablePackages { … Also I need to be able to show the price in the Appstore country Currency , not the locale country, how to achieve that? Thank you.
i need help with the app store connect p8 key file. i get this message: Valid key format The App Store Connect API credentials are not valid or do not have sufficient permissions to list apps. Make sure the key has at least the App Manager role. The App Store Connect API credentials are not valid or do not have sufficient permissions to collect information about your subscriptions. Make sure the key has at least the App Manager role But i am the owner and Admin of the App in app store connect. i don’t have any other users or groups.i ticked on everything when creating the key on the apple page. please help me resolve this
Hi,I have set up multiple apps under a single RevenueCat project because I want a subscription purchased in one app to be valid across all my apps. I have configured my products accordingly.Each app has its own offering page, and I have linked separate paywalls to each one.However, when initializing RevenueCat in app1, I get the following warning:[offering] WARN: ⚠️ There's a problem with your configuration. No packages could be found for offering with identifier app2_offering. This could be due to Products not being configured correctly in the RevenueCat dashboard, App Store Connect (or the StoreKit Configuration file if one is being used).To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings.More information: https://rev.cat/why-are-offerings-emptySimilarly, when I launch app2, I get the same warning for app1_offering instead.I believe this is happening due to my setup and is not an actual issue, but if that's the case, perhaps RevenueCat could
Hey guys,I’m using RevenueCat to manage subscriptions in my app, which has an image generation feature. Right now, I register users with an anonymous RevenueCat ID, and it works great for tracking—even if users reinstall the app or clear data.But I want to set limits on free usage. Like, each user should get X free image generations per day or week, and after that, they either buy credits or subscribe. Is there a way to track and enforce these limits using RevenueCat, or would I need to handle it separately on my backend?My app currently has 1000+ daily active users and 500+ subscribers, but there are also a lot of abusers trying to bypass restrictions. I want to make sure free users have fair access without getting exploited.Has anyone implemented something like this, or is there any guide for it? Would love to hear your thoughts!Thanks!
I’m developing using Expo React Native."react-native-purchases": "^8.7.0","expo": "~51.0.39", I’m running into a strange issue where the paywall shows up fine on IOS in production, and it even shows up fine on Android in testing (I connected my phone to my computer and ran dev build on my phone) However, in production, it begins to show a paywall that’s completely different from the one I configured, seems to be some sort of default paywall Not quite sure what’s causing this, need help!
I’m using Web Billing and want to make sure upgrades work for my customers, without having the possibility they could be paying for two subscriptions at the same time.I have one entitlement (premium) and two products (annual and monthly). I want to allow customers to switch, and have that switch happen at the end of the current period (i.e. end of the month for monthly, or year for annual). Is there a way to do that with web billing? If it must be done by canceling and re-subscribing, and they canceled with time left on the period, are they able to immediately re-subscribe? For instance, a monthly customer is set to renew on March 15, 2025. They want to switch to Annual. Can they cancel and immediately subscribe to annual, but not get charged until March 15, 2025? Or get charged immediately, but have their entitlement extended to March 15, 2026 anyway?Or, is there a way that I can let a Monthly customer subscribe to Annual and then automatically use the API to trigger a cancellation of
Hi, We are trying to optimize our Google Ads App Campaigns using in_app_purchase event for iOS and Android. However, we do not see a value for this event in google ads. We are optimizing for trial starts, but the rc_trial_started_event does not contain metadata about the purchase amount, so therefore when this is passed to Google Ads App Campaigns (via Branch) it is coming across as an empty value. We need the in_app_purchase value to be populated in google ads so we can run these campaigns properly. Would it be possible to add these values to the webhook call? Or is there something else we can do to assign a value. Best, Jake
My paywall is displaying the default formatting for the android paywall, rather than my custom UI. IOS displays perfectly but I understand it is less opinionated in terms of config.I have put in DEBUG logs but the android one doesn’t appear to get any warnings - maybe failing before it gets to show any warnings. the IOS one gets the following warnings, which may be helpful?LOG [RevenueCat VERBOSE] Looking up localized configuration for ["en-GB", "it-GB"], searching for ["en-GB", "en", "it-GB", "it"] LOG [RevenueCat VERBOSE] Found localized configuration for 'en-GB' LOG [RevenueCat DEBUG] ℹ️ Looking up localization but found no strings LOG [RevenueCat WARN] Could not determine price format because price string is incompatible. LOG [RevenueCat WARN] Could not determine price format because price string is incompatible. LOG [RevenueCat WARN] Could not determine price format because price string is incompatible. LOG [RevenueCat WARN] Could not determine price format because price st
Is there any specific configuration needed for the Flutter V2 Paywall to be displayed on Android?Our Paywall displays correctly on IOS: But it is blank on Android: We hava a very simple flutter code to show the Paywall: Widget getRcPaywall(BuildContext context) { return SafeArea( child: Center( child: Container( color: context.colorsTheme.backgroundColor, // RevenueCat Paywall, this will use the default paywall configured on RevenueCat and render it here child: PaywallView( onPurchaseCompleted: onPurchaseCompleted, onPurchaseError: (PurchasesError error) { scaffoldKey.currentState?.showSnackBar(SnackBar( backgroundColor: MFColor.destructiveRed, content: Text('Unable to make Purchase. Error code: ${error.toString()}'), )); }, onRestoreCompleted: (CustomerInfo info) async {
Hey how do I display an icon on the app project? Do I need the app to be published? or how does that work?
Hi everyone! 👋First of all, I really appreciate the work the RevenueCat team has put into the Paywall Editor—it’s a great tool with a lot of potential! However, after using it extensively, I’ve noticed a few areas where the UX/UI could be improved to make the experience even smoother. I wanted to share some thoughts and open the discussion for others who might have additional suggestions.1. Editing & Usability EnhancementsThere’s no way to undo an action (neither Ctrl + Z nor a dedicated button). You can’t double-click a component to rename it. The Delete or Backspace keys don’t work to remove a component. There’s no option to hide/show components while editing.2. UI Layout ImprovementsThe language selection, dark/light mode toggle, and preview settings currently overlap the phone preview window, making it harder to work on designs. The same happens with the orientation and phone size options—they appear on top of the editing area. A possible fix: Placing these options above the P
SDK: RevenueCat 4.0.0-beta.xOperating System: iOS 15.1.1After successfully activating a subscription in the sandbox, calling `getCustomerInfo` and querying the relevant entitlement in `purchaseInfo.entitlements` on the returned `PurchaserInfo` object yields an entitlement with `isActive` set to false.Is this the expected behavior for entitlements when working in the sandbox, or should the relevant entitlement’s `isActive` property be set to `true` after successfully completing a sandbox purchase?
The offerings were working perfectly in sandbox testing in both testflight and regular Xcode signing however it was brought to my attention a week after release that my subscriptions aren't visible in app.I get this error when requesting the offerings: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, {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, readab
Is this possible thru the paywall builder? Or is this something that needs to be custom created?Thanks!
The response from the "Get Purchases" endpoint (https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/purchases) isn’t ordered by the customer's purchase time. Is this expected? It’s weird that the Customer History is ordered by time in the dashboard, but it’s not in the REST API.
Hey folks! I've just tried using Paywalls v2 instead of my own custom paywall and I find a few things confusing that I couldn't clarify in the documentation or repo. I would love to know how things are supposed to work:If I press "Restore" when there is nothing to restore, I don't get either onRestoreError or onRestoreCompleted callbacks triggered. Nothing happens on the UI - the button changes to a loader for a few seconds and then just goes back to normal. I find it confusing and would expect something to happen to at least notify the user about what's happening. Does the paywall close by itself after a successful purchase? I see navigation happening twice after migration from custom code, where I had a manual navigation call. But when I removed it, my testers said that in TestFlight the paywall didn't close, and moreover they couldn't close it themselves via the close button; only reloading the app helped. I also noticed a new crash that appeared only on the commit adding custom pay
I switched to V2 Paywall, I want to print “Try 7 Days Free & Subscribe” on the purchase button and I tried it like this: Try {{ product.offer_period_with_unit }} Free & Subscribe. This is not working, I want this variable to say 7 Days when monthly package is selected and 14 Days when annual package is selected.
public void InitializeRevenueCat(){ _purchases = GetComponentInChildren<Purchases>(); _userService = ServiceLocator.Instance.GetService<UserService>(); _analyticService = ServiceLocator.Instance.GetService<AnalyticService>(); var builder = Purchases.PurchasesConfiguration.Builder.Init("goog_YguHktEysEcVmKHkVbWMeVQyhjB"); var purchasesConfiguration = builder .SetUserDefaultsSuiteName(_userService.CurrentUser.Username) .SetAppUserId(_userService.CurrentUser.Id) .SetPurchasesAreCompletedBy(Purchases.PurchasesAreCompletedBy.MyApp, Purchases.StoreKitVersion.Default) .Build(); _purchases.SetLogLevel(Purchases.LogLevel.Verbose); _purchases.Configure(purchasesConfiguration); Debug.LogWarning("Initialized Revenue Cat Purchases");} public void BuyProductWithId(string productId, Action<bool> onComplete = null){ _purchases.PurchaseProduct(productId, (_, info, cancelled, er
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.