Discussion and help from anything related to RevenueCat.
Recently active
I’ve added a 50% off offer on my yearly-autorenewing subscription in revenuecat which you can see in the image below. It’s called “mente-argentina”.This is for people who’ve never subscribed to my app. I’ve signed into my app with a fresh account, that’s never made any subscriptions to test this.This is a react native app and I’m using the react-native-purchases package.I’m calling the following function to get an object with all of my subscriptions/offerings in it:const offerings = await Purchases.getOfferings();When logging all pieces of this object, I can’t see the mente-argentina offering anywhere.I thought maybe I should try to create another product in the revenuecat ui but there I’m unable to get revenuecat to find the offering by id in the playstore, so I’m thinking that’s not the case.Is there anything I need to do to sync my google play offers and revenuecat? And how do I get these offers to show up in my code so I can show them to the user.
Hi RevenueCat team,We’re currently using the RevenueCat scheduled data export and receiving the daily transactions table to our BigQuery project.Our goal is to reproduce the Trial Conversion report (with additional refund metrics) in our internal BI tool, so that we can visualize cohort-based trial → conversion performance over time.I’d like to confirm a few points and get your guidance on the best approach: How should we correctly identify Trial Started, Converted, Pending, Abandoned, refunds or cancellations so they align with the dashboard metrics in the RevenueCat UI? Are there any recommended SQL examples for reproducing the Trial Conversion chart logic using only the transactions export (without the customers export)? Our goal is to use RevenueCat data within our internal analytics tool. We want to integrate the data we receive (such as the transactions export) into our existing reporting environment and monitor it from there.Could you please guide us on the best way to do this
hello. im building the app mostly in flutterflow and im hitting the wall . offers are not showing no matter what i do . it was setup about 10 days ago so they should show .What’s implemented FlutterFlow → RevenueCat integration enabled. Android Public SDK key (goog_…) set. iOS Public SDK key (appl_…) set (for later). “Load data after App Launch” enabled. RevenueCat project config. Offering default published. Package $rc_monthly attached to Android product premium_monthly:monthly and iOS product. Entitlement premium mapped to that package. Hosted paywall published (but we’re using purchasePackage). Google Play Console. App id: com.klikin.app (matches RC app + build). Subscription premium_monthly with base plan monthly is Active/Published. Countries: ~173 (includes Switzerland). Payments profile: Active. Test track: Closed/Internal; app installed via testing link (not search). Tester (my Google account): added and accepted.
Hi RevenueCat team,I accidentally deleted my production project while cleaning up old projects. 😭 I've already contacted support but haven't received a response yet. CURRENT SITUATION:- Created a new project with new API Key- App is configured correctly (same Bundle ID, products, shared secret)- I have 10 paying customers with ACTIVE subscriptions in their Apple accounts- Customer Center's "Restore Purchase" button is NOT working- Tested on a real device with my own active subscription- restore failsCRITICAL ISSUE:When I test restore purchases using Customer Center, it doesn't find the previous subscription even though:✅ The subscription is active in iPhone Settings > Subscriptions✅ Same Apple ID✅ Same device✅ Products configured with exact same IDsQUESTIONS:1. Is there ANY way to recover a deleted production project? (urgent!)2. If not recoverable, why isn't restore working between old project and new project? The receipts should still be on the device.3. Will my customers lose ac
The documentation states that the `rc_subscription_status` property should be set as a user property with each RC event that is sent to Posthog. This is not happening in our integration.We do receive RC events, and see the property there as an event property, but the related users do not have the latest subscription status set as a user property.Here’s a link to the relevant docs:https://www.revenuecat.com/docs/integrations/third-party-integrations/posthogFrom this page:Whenever RevenueCat sends an event to PostHog, we'll update the rc_subscription_status user attribute with any applicable changes, using one of the following values: [...]
When I try to fill my badge with a text it doesn’t appear, the badge stays empty and I tried to delete and recreate it, tried many others things as well. Nothing seems to work, what is wrong with it?
I’m trying to build a ‘tipping’ system like Youtube where users can tip during a livestream. The tip value will determine different factors like how long the message gets pinned, or what colors and emojis are used to display the message. I wanted to attach some metadata to my products in Revenuecat to do this, but it seems like that isn’t allowed.Is there any way of achieving this via Revenuecat without implementing any logic in my backend system?
I have tried searching, but I wasn’t able to find a clear answer.I want to have a custom experience for a feature available within our web app only: Pro & Plus plans, each with monthly & yearly time periods. So far I have:added my products to the product-catalog: widget_annual_pro widget_annual_plus widget_monthly_pro widget_monthly_plus Then I have created 2 new entitlements: widget_pro widget_plus Then I try to create an offering, I successfully get the first “Monthly” product, “Plus”. but I cannot select more than 1 “Monthly” time period to add “Pro”: So, how do I create the offering?
Hello,While reviewing my app analytics, I noticed that some user purchases failed with the error code “paymentPendingError.”I couldn’t find much documentation or discussion about this specific error online, so I have a few questions: Is this error caused by something on my app’s side or on the user’s side? If it’s on my side, what steps should I take to resolve or prevent it? If it’s on the user’s side, how should I guide them? Is there anything specific I can suggest (e.g., retrying, restoring purchases, etc.)? Any insights or guidance would be greatly appreciated.Thanks in advance!
## SummaryOn iPhone (portrait), RevenueCat's `PaywallView` renders a wide/tablet layout (right-side truncation, overflow) for our custom paywalls. The same device renders your default template paywall correctly. This points to a sizing/constraints issue in the custom paywall runtime or size-class detection.## Environment- RC SDKs: - purchases_flutter: 9.8.0 (also reproduced on 8.10.6) - purchases_ui_flutter: 9.8.0 (also reproduced on 8.10.6) ## Expected vs Actual- Expected: On iPhone portrait, `PaywallView` should use a compact/phone layout and fully respect the parent’s width; no horizontal overflow.- Actual: The paywall renders a wide/tablet layout, appears left-aligned, extends past the right edge, truncating headline text and CTA.## Minimal Repro (no app-specific wrappers)We clamp the width to a phone-safe max and center it. The behavior persists even with a very small max width and no scroll views around it.```dart// Inside a page bodyreturn SafeArea( child: LayoutBuilder( b
I previously implemented the subscription feature using SwiftyStoreKit, and all receipts were processed locally only. Recently, I applied RevenueCat and implemented a custom paywall. The implementation is complete, and I am currently testing it in TestFlight.In the TestFlight environment, I was able to restore purchases from my actual App Store account with the old setup, but with the RevenueCat SDK, restoration does not work. Is this the expected behavior? I am worried that existing users may not be able to restore their purchases when the app is released on the App Store.Purchases.shared.syncPurchases() For receipt migration, I executed the above code once to synchronize existing purchase history. I understand that server-side synchronization of previous purchases is recommended, but since there is no existing backend history, I cannot use that method. In this state, if I release the app on the App Store, will existing users be able to safely restore their past purchases?
Hi, not the first time I launch an app with RC, but first time I got Billing Errors, and in a too high number! People get the 3-day free trial, but then many of them end up with a Billing Error. How to explain this? 100% users are in the US.
Hi, I’m facing an issue in my React Native app when displaying the paywall in production using <RevenueCatUI.Paywall />This started happening randomly since yesterday. Didn’t changed anything. After that, the UI doesn’t show up $rc_annual, and only $rc_monthly . In Paywall Dashboard it shows me correct UI with both rc_annual and $rc_monthly also works fine in Sandbox mode but in production it shows me only rc_monthly Earlier it used to work fine in production. How can I properly link my new annual base plan so that it appears in the subscription Offering and resolves this error?Thanks in advance!
If an entitlement is unlocked by multiple products at the same time, how do you see all of the products that unlocked the Entitlement? The EntitlementInfo class has a productIdentifier field on it that is a string but that only seems to show the last product that unlocked the entitlement, not all the products. https://revenuecat.github.io/purchases-ios-docs/5.43.0/documentation/revenuecat/entitlementinfo/productidentifier Thanks
Flutter, purchases_flutter: ^9.8.0purchases_ui_flutter: ^9.8.0 The paywall shows monthly and yearly SKUs in different currencies.Yearly - eur (expected, as I’m looking at it from Europe)Monthly - USD (default currency) - is not localized this is both on iOS and Android. Any ideas where to check for it?
Using RC’s V2 paywalls, my app is crashing every time I open the paywall in my React Native Android app with the exception:java.lang.IllegalStateException: Software rendering doesn't support hardware bitmapsThis is continuing the conversation on a past issue, as it was never really solved but @db888 found out that if he removed `expo-blur` the issue goes away. I’m encountering the same problem now but we have a requirement for blur views in the design so it’s not as simple as just removing this.Is there any plans to getting an actual fix out for this in Paywalls? I believe this is a hint at a potential solution: https://stackoverflow.com/a/58315279 Edit: I’m using `@sbaiahmed1/react-native-blur` and not `expo-blur`. It seems to not be an issue with `expo-blur`. Maybe they changed the library or something, I don’t think they use native blur views on Android.Referenced Issue:
Hi All,Did anyone of you had this problem with Paywall? One of our users reported that he can’t proceed due to a fact that the paywall is broken and doesn’t contain any action (purchase/proceed) button. We have asked for a print screen ant it look horrible indeed. User was: Samsung Galaxy m23 5G/ Android 14/ One UI 6.1 (probably on a large screen view). Broken View:Normal view:
Hello,My app uses Firebase Anonymous Authentication exclusively. When a user with an active subscription restores their purchase on a new device, they get a new anonymous user ID.Currently, RevenueCat transfers the entitlement to the new anonymous ID, deactivating it on the original device.My goal: I want the subscription to be shared so that the entitlement remains active on both the original device and the new device (and any future devices). How can I achieve this subscription sharing model with anonymous users?Thanks,Florin
Hi All, Can someone confirm what the process is to allow full testing for App Store/Play Store reviews when using anonymous Ids with Paywalls? The App Store mentions providing a sign in user id and password, but this isn’t applicable when using anonymous ids… Any help appreciated - thank you!
Hi. I am running into problem initializing RevenueCat for my Expo react-native app. I spent a lot of time debugging the issue and finally narrowed to the Purchases.configure() call. First of all I had everything working fine in a “development” build (a native build with “developmentClient=true”. It is not an Expo Go build.). I am using a RevenueCat “Test Store” because I haven’t set up anything on App Store or Play Store. It worked fine on both iOS and Android. Then I tried to make internal “preview” builds (with “developmentClient=false”) and it started having problem. On iOS the app immediately crashed and disappeared once the Purchases.configure() is called. On Android the app became a blank screen right after the configure() call, but it does seem like different symptoms of the same problem. I set up the “Purchases.configure()” call within a button onPress() event to help the debugging, and hardcoded the Test Store API key in codes to rule out the possible environment variable iss
Hi, everyone,I just implemented RevenueCat to my app with version 9.10.0, but when user renew or trial to paid. not any event in_app_purchase has been recorded. I linked firebase with google play store and revenue cat with GA4Someone can help me about this.Thanks!
I’ve set up my app store IAP and set up the various RC things needed for it. But in App Store Connect, my IAP entry says “Missing Metadata.” I have verified that all agreements/forms/etc are done under “Business” and all say “Active.” I’ve added the price for the IAP as well as the localization entry and image. However, the localization and image say “Prepare for Submission” not “Ready to Submit” so I don’t understand what I’m supposed to do.The only thing that I haven’t added is a screenshot, because I don’t understand how I’m supposed to offer a screenshot of the app if I can’t actually get the IAP from the SDK yet?? Like, show an empty screen where the IAPs are supposed to appear?? I can’t find ANY guidance on this aspect. The help popover just says “We’ll only use the screenshot for our review — it won’t be displayed on the App Store.” The help page says “A screenshot of the in-app purchase that clearly shows the item or service being offered.”So how on earth are you supposed to do
Hey everyone,I’m running into an odd issue while testing subscriptions. I’ve gone through all the usual setup steps, and the offerings fetch seems okay, but the purchase sheet never appears. What I have so far App built with Vue 3 + Capacitor. Integrated the RevenueCat SDK (capacitor-purchases). Offerings are fetched successfully from RevenueCat, so configuration seems correct. Testing on a physical device via Xcode, not TestFlight. Device is signed in with my personal Apple ID, while the sandbox ID is logged into developer settings On the manual subscription test (developer settings), the Apple sandbox pay sheet showed up, I subscribed, and in my app I can see the purchase reflected in customerInfo. ✅ The issueWhen I try to purchase the package (the code executes correctly and uses the correct package data), I don’t get nothing. No xcode logs, no freezes, no pay sheets. It’s like I’m not pressing the button. The function is being called and the logs stop right before.await
This looks like the exact same problem from this thread: Everything I put look very correct.Thanks in advance
Stack: Flutter, purchases_flutter 9.7.0, iOS target 14, RC sandbox Web Billing, same RC project for App Store + Web Billing.Entitlement: premium (Web product appname_weekly_web attached).App User ID: e.g., YuSUDJGSSUQqYkeJqu0xoH2 (logged in via Purchases.logIn(uid)). WPL (identified):https://pay.rev.cat/sandbox/<TOKEN>/<APP_USER_ID>?package_id=$rc_weekly Server says it’s active:REST /v1/subscribers/<APP_USER_ID> shows premium entitlement active (store: rc_billing, is_sandbox: true). WPL revisits show “Success” (already subscribed). Client says it’s not:On app resume:await Purchases.invalidateCustomerInfoCache(); final info = await Purchases.getCustomerInfo(); print(info.entitlements.active.keys); // => () I have tried polling every 2 seconds and the entitlement never gets updated. What does work:If I build the WPL with originalAppUserId (or anonymous flow) and tap the Redeem Purchase deep link:final r = await Purchases.parseAsWebPurchaseRedemption(url); if (r != n
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.