Get help with anything related to RevenueCat.
Recently active
Hey! I just created my app and set up my ‘in-app purchase’ .p8 file and key, but immediately got this error. Any clues on what to do?
Dear Community,I created an Paywall with an exit offer for one of my Android apps (using the Kotlin Mutliplatform Library). The paywall is showing and working great but the exit offer never gets shown, even when I uninstall and reset the app data. From my understanding, the exit offer should be shown the first time the user clicks on the “X” on the paywall. Any advice is appreciated.
Using variables such as {{ product.relative_discount }} or {{ product.price_per_period }} seems to work in the paywall editor, however it does not work in development builds. I have attached two screenshots, one of the editor and one of my running dev build. As you can see, the percentage is missing from the dev build, as well as the price period. What am I doing wrong?
I choosed the Exit Offer on my main Paywall but it doesn’t appear after click “X” button(Navigate Back action). My packages versions are "react-native-purchases": "^9.6.10","react-native-purchases-ui": "^9.6.12".
Hi,See attached. How is it possible that this user has two active subscriptions for the same entitlement? Wouldn’t Apple flag this as “you’re already subscribed”?My project ID is: proj173c3791The userID is: firebase:DFdWBg4eukQtSZkzmMMSNDp82YC2Thanks,Toby
For a lot of users, we’re seeing the following in the dashboard at the end of their trial:Had their subscription of Weekly Premium With Trial (weekly_subscription_499_with_trial) expire2026-01-03 at 07:03 AM UTC Had their subscription of Weekly Premium With Trial (weekly_subscription_499_with_trial) cancelled due to not agreeing to a price increase2026-01-03 at 07:03 AM UTC Last opened the app2025-12-31 at 06:23 AM UTC Created a new alias (...)2025-12-31 at 06:23 AM UTC Started a trial of Weekly Premium With Trial (weekly_subscription_499_with_trial) from offering premium_wmy_with_trial_offering2025-12-31 at 06:21 AM UTC First seen using the app2025-12-28 at 03:01 AM UTCThis is despite us never having raised subscription prices, especially not during the 3-day window. We’re concerned this is costing us conversion.The “cancelled due to not agreeing to a price increase” event has the following data:{ "app_id": "...", "app_user_id": "...", "cancel_reason": "PRICE_INCREASE", "country_c
Hello, I'm currently trying to set up my app with Rev Cat and set up the subscription. I'm currently not able to see the subscription when I move over to the official API key from the official app store. I attached screenshots, and the code that I'm using. In the screenshot, it's showing that developer action is needed because I submitted it, and it didn't show correctly. Which is why when I got my developer's profile to the project, on the comments it said it's fine, and that it still should be visible. // expo-app/components/Paywall.tsx{loading ? ( // ... loading spinner ...) : !currentOffering || currentOffering.length === 0 ? ( // This is what you see if RevenueCat returns nothing <View style={{ padding: 20, alignItems: 'center' }}> <Text style={styles.loadingText}>No subscriptions available.</Text> <TouchableOpacity onPress={onClose} style={{ marginTop: 10 }}> <Text style={{ color: colors.primary }}>Close</Text&g
Can we change the close button color in Flutter await RevenueCatUI.presentPaywall(displayCloseButton: true);
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.
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.
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 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
Redemption links are a great step towards gift subscriptions. All that would be necessary is the ability to add a gift recipient email, and possibly the time the gift email should be sent.
Hi! I’m using Paywall Builder to design my app’s paywall and recently added a video component for the first time. When I open the paywall in the app, the video starts playing, but after a few seconds the entire video area goes dark.If I close and re-open the paywall, the video then plays normally in a loop with no issues.Has anyone experienced this before, or know what might be causing the video to go dark on the first load? Any guidance would be appreciated!I use the following template paywall:
Running into two issues hereWhen I have an image in the paywall body (in a ZStack with my close button in this case) and my paywall content in the footer, I believe the footer content should draw on top of the image, this is also what the paywall editor shows. When I run this paywall though, I see the footer strictly not overlap with the image. The image instead seems to be pushed upwards. Interestingly the overlay gradient is also not visible in this case When I have the image instead as the background of the Paywall itself, it is vertically centered on android devices, even though I expect it to be at the top. The paywall editor and iOS paywall both show the image at the top of the screen as I expect.Please see screenshots below. This issue is making paywalls unusable for us which is quite frustrating Issue #1 -- paywall editor shows footer drawn on top of the image as expectedIssue #1 -- android paywall footer seems to push image upwards Issue #2 -- paywall editor showing background
duplicate paywall to this project does not work, it gives a internal server error.
Hello community,I have created a web paywall to redirect users from my ios app to web purchase like. The issue is it doesn’t show when I have web billing products in the offering and when I add an apple product the paywall shows with the paywall in the app with apple product information and when I navigate to the web purchase page it shows the web billing product as intended. My goal is to get rid of apple product here while keeping the paywall working. I’m not sure what I’m missing here.Thanks
Hi I am having a bug in the paywall maker.Basically the Icon doesn’t change color when the other package is selected.Instead the other Icon stays selected. No idea why or how to debug.The package itself changes but not from the perspective of the user
Hello,I am using RevenueCat Paywalls for Google Play Subscriptions in my App. I can successfully set up and start trial periods in my Paywall, but the price displayed for introductory offers is still the standard price, not the price after conclusion of the trial (which is discounted by X% in my case).In the Paywall editor, using Text field for an introductory offer with {{ product.price }} shows the default price and {{ product.offer_price }} simply shows “free”, not the discounted price after the trial period. ( {{ product.secondary_offer_price }} doesn’t show anything, but I think that’s because I only have one intro offer active )The goal is to show something like “{{ discounted price }} for {{ discounted period }} then {{regular price}} {{period}}}”. How can I achieve this?I am using the latest SDK inside Dart/Flutter.
I’m doing my paywall designs on figma, they are working perfectly with auto-layout on figma. When I export it to Revenue cat with your plugin it doesn’t keep the responsiveness. Some elements look weird (fill is not doing fill in some cases).Another issue that I see is this message: fill disabled: parent's height is set to "fit" . But there’s no parent, and this is done with the propertie fill selected on figma, so should be fill selected on RevenueCat also.How can I fix this?I’ve watched your videoshttps://www.revenuecat.com/blog/engineering/revenuecat-figma-plugin/
I’m trying to display a crossed-out “full price” on our paywall to frame a discount on our checkout abandonment paywall. I was able to achieve this by adding a second package that shows the full price with a strikethrough.However, the issue is that tapping this crossed-out price selects it as the active product, which means users could accidentally try to purchase the wrong package when they press the subscribe button.Is there any solution other than hardcoding the text?Hardcoding the full price is not ideal since we support multiple currencies and pricing varies per storefront.For example:Is there a way to display a package purely as informational — like the full price with strikethrough — but make it non-selectable so users can’t tap it?Any workaround or recommended approach would be hugely appreciated. Thanks!Example of the full price with a strikethrough would be the 399,00kr in the image below:
Based on the docs of a web billing paywall + custom success page, it looks like the app_user_id URL param is automatically appended. However, I am not seeing this when testing...the sandbox URL maybe does not know the different of environments, so the ID does not get passed back to complete the test? Is this an issue because I am using a custom paywall also? I am now nervous to launch my renewal subscription to 2k users. I tested on production too, with the same outcome. How can I get the app_user_id?
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.