Discussion and help from anything related to RevenueCat.
Recently active
Hi everyone,we are using RevenueCat’s new paywall UI feature in Unity on iOS. To present different paywalls under different conditions, we take use of the custom attribute system and the targeting feature. This works well except a once triggered paywall only changes after restarting the app. In other words, there is always the same paywall presented (using PaywallsPresenter.Present) even when the conditions for the targeting rules changes. A change is only applied after restarting the app. So it is impossible to show one paywall and then show a different paywall (i.e. with reduced prices) afterwards in one session. Again, this only works if we completely close and restart the app in between.Is there a way to manually refresh the paywall? Or can I somehow invalidate the cache?Thanks in advance!
My paywall has a big gap in the text when displayed on a max device. Is it possible to set the header image to enlarge to take up this space? Screenshots of iPhone 17 vs 17 max below:
Hello,Currently, the Customer Center only supports plan changes on iOS and doesn't seem to offer this functionality on Android.Is this something that is planned or possible? Since we already have subscription groups configured, could we potentially implement this using pure Flutter code by leveraging the official API?The tool is great, but having to use the Customer Center for iOS while maintaining a separate custom page for Android plan changes is difficult to justify and explain to our end-users.Thank you in advance for your help!
I am setting up two tiers of subscription “Plus” and “Pro” I have followed threads from other posts on the forums such as: iOS its 1 Subscription group, with 2 service levels Android its 2 separate subscriptions RevenueCat its 2 separate entitlementsUsers are successfully able to purchase either tier with thisI am now trying to figure out how best to handle allowing a user to upgrade their entitlement from plus to pro in react-nativeThe issue with presenting the paywall again is that the user sees the same tier they already have (plus), which seems confusing and I wouldn’t want them to re-pay for the same subscriptionIs it possible to re-use the existing paywall I use for upgrading to either plus or pro hiding the plus option conditionally? or do i need to create a second paywall with only pro features displayed?Appreciate any thoughts on how to structure this!
Hello,I have created a paywall in revenuecat’s designer. I have an issue with scroll and carousels: having a carousel in a scrolling screen prevent user from scrolling vertically (impossible on iOS, extremly hard on Android). I thinks it’s a gesture detection issue, trying to scroll vertically make an horizontal scroll on the carousel instead.If you have any tips !
I’m attempting to determine a users Subscription monthly window by using https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/subscriptions current_period_starts_at & current_period_ends_at in conjunction with gives_access & status. However I have seen this data become corrupted in the Test Store where a subscription never gets updated with Expired status or gives_access false. Furthermore this corrupted sub data shows active entitlements forever. This means multiple subscriptions in the array will appear active at the same time even thought one or more are in a corrupted state.Is this just a known issue in Test Store or should I protect myself by ignoring Gives Access and Status If the current_period_ends_at is exceed? Is there a better way to determine period start and end without the complexity of retrieving all subscription history? Any thoughts or input would be greatly appreciated.
Hi ,I’m experiencing an issue with my RevenueCat configuration. When trying to fetch offerings / getProducts in my iOS app, I receive the following error:“😿‼️ There is an issue with your configuration. Check the underlying error for more details. 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).”This issue happened suddenly on production, packages where loading tell yestreday. I downloaded the test project and run it, and found the following error WARN: ⚠️ RevenueCat SDK is configured correctly, but contains some issues you might want to addressWarnings: • Your products are configured in RevenueCat but aren't approved in App Store Connect yet. This prevents users from making purchases in production. Please ensure all products are approved and available for sale in App Store Connect. • The offerings 'مؤشرات' have configuration issues that may prevent users from seeing product
HI folks, Ive deployed my app to production for apple review. But my paywall doesn't seem to work in TestFlight, I made the integration with RC and AppStore connect and all other things linked. But when you click Start Free trail nothing happens. Im using replit to build the app , which included the paywall, so I don't have a separate paywall in RC. Any thoughts on what can cause the issue?
Hi everyone,I recently changed my setup in the google play store so that both my basic and pro plan are part of the same subscription so that users can switch easy between them, before i had them as separate subscriptions. Now they are part of the same subscription as 2 different base plans.This solved the issue of being able to purchase a new plan and keep the old one, now when you upgrade/downgrade you only keep your new plan.However, im noticing that allPurchaseDates in customerInfo on react native now returns only the latest purchased product, even if i switch 3-4 times it always just keeps the last one. Is this expected? On ios seems to be fine, ie i get all made purchases. I primarily use this for my free trial eligibility, so if theres a better way to determine this that might help too.
I frequently refresh both RevenueCat and Google Play Console to check for new subscriptions or renewals. I often notice subscription renewals appearing in RevenueCat transactions that do not show up in the Google Play Console.Please note that the product ID com.hnib.premium_version_trial:premium-yearly-trial is a legacy product created several years ago.Please refer to the image below. On the RevenueCat Dashboard, the first transaction is a renewal for the Yearly plan; however, it does not appear in the Google Play Console.
Hi, We're using RevenueCat Web Billing and noticed that the managementURL from the SDK/API returns a URL like: https://api.revenuecat.com/rcbilling/v1/customerportal/{tx_id}/portal This redirects to a page that asks users to check their email for the management link. The email then contains a tokenized URL like: https://billing.revenuecat.com/{app_id}/{sub_id}?token=xxx This adds an extra step for users. Is there any way to get the tokenized URL directly via SDK or REST API (v1/v2) so users can access the customer portal immediately? Thanks!
Hello, I’m currently trying to setup a Play Store global discount on my one time purchase using the new “Offers” system.This is talked about in this thread: In your first reply you state “This is currently supported” but in the last one you state “Unfortunately I don’t have an ETA for one-time product offers yet but they are in our roadmap”, although you seem to be only talking about RevenueCat generated paywalls and not custom ones using the standard Purchases.getOfferings.My question is thus: are the new Play Store discounts supported in any way by the RevenueCat SDK? and if not does this mean there is currently no way to provide a global time-gated discount on one store products? (other than manually editing the current price at the expected discount start and putting it back later...) The only thing I found that seems somewhat related to this feature is this undocumented field but the comment clearly state it’s null on Android and I my testing shows it is indeed null... /// Coll
the new unity paywalls is nice, but my game is locked in landscape mode (very common in Unity games).The RevenueCat paywalls pop up in portrait mode. It’s very weird, and feels unnatural.Is there any hack to fix this? can I modify the open source code to fix this for myself somehow, if you can give me some ideas?Right now, Unity paywalls isnt usable because of this, and I think its very common problem since many games lock to landscape mode
I am experiencing a persistent issue where Purchases.getOfferings() and sometimes getProducts() hangs indefinitely on Android. No error is thrown, and no response is returned, even after waiting for several minutes. This prevents the paywall from being presented. iOS is working as expected. Environment:Framework: React Native / Expo (SDK 54) Build Tool: EAS Build (Development Client) SDKs: react-native-purchases and react-native-purchases-ui (v8.12.0) Platform: Android (Testing on physical device)What I have verified and configured:RevenueCat Dashboard: Google Play credentials show as "Valid credentials" with green checkmarks for Subscriptions, InAppProducts, and Monetization APIs. Account-level permissions (including "View app information and download bulk reports") have been granted in the Google Play Console. The Public API Key in the app matches the one in the dashboard. App Configuration (app.json / Manifest): Declared com.android.vending.BILLING permission. Set launchMode to
I read a few other threads about this topic, and followed the suggestion: configure the SDK as earlier as possible. I also followed the instructions in the docs. This is how I am setting it up: let configuration = Configuration.Builder(withAPIKey: "my_api_key") .with(userDefaults: .init(suiteName: groupIdentifier)!) .build() Purchases.configure(with: configuration) Despite this, I am getting:ERROR: 😿‼️ RevenueCat SDK Configuration is not validYour app's Bundle ID 'com.foo.bar.widgetextension' doesn't match the RevenueCat configuration 'com.foo.bar'. This will cause the SDK to not show any products and won't allow users to make purchases. Please update your Bundle ID in either your app or the RevenueCat website to match.Please visit the RevenueCat website to resolve the issue: https://app.revenuecat.com/projects/c89a1ec9/apps/appa3ee8cada1I guess my question is: what am I missing here? I just need to check if the user is subscribed or not.
when i tap manage subscription, it shows no subscription found
Hi everyone,I’m running into an issue where RevenueCat only shows iOS products on my paywall, while Android products don’t appear, even though they are already created and active in Google Play Console.I’d appreciate help confirming whether I’m missing a configuration step or misunderstanding how RevenueCat handles cross-platform products. 🔹 Context App: Flutter (iOS + Android) Monetization stack: RevenueCat Apple App Store (iOS) Google Play Console (Android) Using RevenueCat Paywall Editor 🔹 iOS setup (works correctly) iOS subscriptions and consumables are created in App Store Connect Products are imported into RevenueCat Products appear correctly in: Product catalog Offerings Paywall editor (iPhone preview) 🔹 Android setup (problem)Google Play Console Subscriptions are created with base plans: lucid-fm-weekly lucid-fm-yearly Consumable credit products: lucid_fm_credits_100 lucid_fm_credits_500 lucid_fm_credits_1000 All
For the life of me I cannot figure out how to use virtual currency. I have everything set up in App Store Connect with consumable purchases. Everything is correct with linking to RevenueCat - paywall, entitlement, offerings, etc. I currently have the main offering, but the virtual currency offering isn’t working. Any help would be much appreciated! I’m sure I didn’t provide as much information as I should so if I need to clarify anything please let me know.
i have integrated RevenueCat Paywall ui in expo using the `react-native-purchases-ui` package. i’m trying to show the managment screen on expo dev client on my ios device after subscribing with test packages.await Purchases.showManageSubscriptions()but getting this error `ℹ️ managementURL is nil, opening Apple's subscription management page LOG aa undefined`i have checked the full setup quite a bit of times but couldn’t find any issue and also couldn’t get the relevant information from the docs as well. may be i’m mistaken, please point me to the correct direction if i missed something on the doc.i have checked with await Purchases.getCustomerInfo()✅ customer is there but customer -> `managementURL` is null. ❌and by default it fallback to apple’s default management screen, which keep loading for few mins and later show connection error, try again.just for more context, i have done these steps correctly.Purchases.configure({ apiKey, appUserID });await Purchases.logIn(userId);
I’m trying to set up Meta Ads integration. Android works perfectly fine and I get 200 as a response back from Meta. IOS keeps failing and returning a error message. IOS request body is as follows (this fails):{"access_token": "[token here]","data": [{"action_source": "app","app_data": {"advertiser_tracking_enabled": true,"application_tracking_enabled": true,"extinfo": ["a2","","","1.1.5","Version 26.1 (Build 23B86)","","nl-NL,nl;q=0.9","","",0,0,"",0,0,0,""]},"custom_data": {"content_ids": ["scandoc_premium_montly"],"content_type": "product","contents": [{"id": "scandoc_premium_montly","quantity": 1}],"currency": "USD","order_id": "d389bfdf5ea1d930fa5c6ef4fcd9e3ab179a57fa","value": 4.99},"event_id": "d389bfdf5ea1d930fa5c6ef4fcd9e3ab179a57fa","event_name": "Subscribe","event_time": 1766084555,"user_data": {"anon_id": "XZ54193BB4-03AA-439C-83E6-357CD34D8D5E","em": "ccd793a81dd0c1ca94492edb501f3a7717a40a76c093dff515b2f7b36108576e","external_id": "a28b66322fd410eccb57ba8cfc5616ffde208dba32
Hey, i wanted to implement purchases_flutter (latest version - 9.10.3) for my macos flutter (3.32.8) app. I got the following error:- PurchasesHybridCommon/PurchasesHybridCommon.framework/Headers/PurchasesHybridCommon-Swift.h:286:9: error: Module 'RevenueCat' not found (in target 'purchases_flutter' from project 'Pods')- /.pub-cache/hosted/pub.dev/purchases_flutter-9.10.3/macos/purchases_flutter/Sources/purchases_flutter/PurchasesFlutterPlugin.m:5:9: error: Could not build module 'PurchasesHybridCommon' (in target 'purchases_flutter' from project 'Pods')I was not able to solve the problem and decided to use a native implementation until it’s fixed. Is this issue known ? Cant find anything about. Best regards
I created 2 sandbox accounts from appstore connect to test inapp purchases in testflight then deleted one and singed in the second one in developer-> sandbox account When I test the InApp Purchases it continues to ask me for the password of the deleted account. I've tried to delete the app but this didn't solve the problem. even tho i reset all the settings of my iphone but when I press the Buy button in my app it still display the "deleted" account and there is no option to logout from that account I have tried: close the app and reopen it and do in app purchase, but still popup UI using the old sandbox account reinstall the app and do in app purchase, but still using the old sandbox account even if i dont signin any sandbox account it still shows that deleted test account in purchase ui when i try to purchase subs
Hi!I'm trying to verify if a user has subscribed in the past in order to decide which button to show for a purchase. However, after a reinstallation, it seems that RevenueCat resets the user’s status. I have also tried checking if the entitlements are empty — they always are — so I end up showing the “Start Trial” button even when I shouldn’t. Google Play does not show the trial period because, for this user, it was already used. I’m currently in the internal testing phase. I’m using the latest version of the SDK.Here is the relevant code snippet: fun getButtonText(pkg: Package?, customerInfo: CustomerInfo?): String { if (pkg == null || customerInfo == null) return "Continue" val hasIntroOffer = pkg.product.subscriptionOptions?.any { it.freePhase != null } == true val hasNeverSubscribed = customerInfo.allPurchasedProductIds.contains(pkg.product.id).not() if (hasIntroOffer && hasNeverSubscribed) { return when (pkg.packageType) { PackageType.ANNUAL -
Hi everyoneI’ve configured Meta Conversions API in RevenueCat, but I’m not receiving any Test Events in Meta Events Manager.Important note: I’m currently testing in SANDBOX mode.Here’s what is already set up on my side: Conversions API selected (not App Events API) Datasource ID configured Conversions API access token configured Sandbox Datasource ID configured Sandbox Conversions API token configured “Send events when ATT consent is not authorized” enabled Sandbox purchases / renewals are firing correctly in RevenueCat RevenueCat webhooks are working Despite all of this, no events appear in Meta, including Test Events, after triggering sandbox purchases or renewals.
RevenueCat provides robust subscription management across iOS, Android, and web apps, but the real power comes when this data is integrated with BI tools or CRMs for analytics and business decisions. Here’s how to do it efficiently:1. Use RevenueCat WebhooksRevenueCat supports real-time webhooks for events like subscription purchases, renewals, cancellations, and failed payments. By configuring these webhooks, you can push subscription data to your CRM (e.g., Salesforce, HubSpot) or analytics pipelines instantly.2. Export Data via RevenueCat APIRevenueCat offers a REST API to programmatically access subscription, user, and transaction data. This allows you to automate daily or hourly exports to data warehouses or BI platforms like Tableau, Looker, or Power BI.3. ETL Pipelines for Data WarehousesSet up an ETL pipeline that pulls RevenueCat data via API or webhooks, transforms it into analytics-ready format, and loads it into your BI system. This ensures historical trends, MRR, churn, an
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.