Discussion and help from anything related to RevenueCat.
Recently active
According to the docs, the only way to cancel through Web purchases is via Dashboard > User > Cancel flow. This is manual. I’d like to create a programatic way to do this. Does the `@revenuecat/purchases-js` allow for this? I don’t see anything obvious.
Hi everyone,I’m using @revenuecat/purchases-capacitor-ui with the RC Paywall Editor to show my subscription screen:const { result } = await RevenueCatUI.presentPaywall();Purchases work fine, the promise resolves.However, when the user taps Restore Purchases button inside the paywall: The restore actually happens (I see the RevenueCat webhook fire, and the user’s entitlements update in Purchases.addCustomerInfoUpdateListener). But the paywall stays open because presentPaywall() never returns, it’s “stuck” waiting. Questions: Is this expected behavior for presentPaywall() after restore in the Paywall Editor? (I also tried presentPaywallIfNeeded({ ... }), but observed the same behavior.) Is there a way to programmatically detect that restore finished so I can navigate away? (I coudn’t find a dismiss method in the Capacitor sdk) Setup:Capacitor 7.1.0 @revenuecat/purchases-capacitor 11.1.1 @revenuecat/purchases-capacitor-ui 11.1.1 iOS + AndroidThanks!
Hi team, I’ve been facing a persistentissue with the sandbox environment, for more than a week now. I was able to purchase subscriptions initially but all of a sudden they stopped working. I always get the Unable to process your request. Please try again later. Environment: Sandbox error.Now initially i though it was a me problem, thinking maybe the code changes broke something. But then I googled a lot, asked chatGPT for the solution. Tried everything but to absolutely no avail.This is the error I get in the terminal ERROR [RevenueCat] 🍎‼️ There was a problem with the App Store. ERROR [RevenueCat] 💰 Product purchase for 'unferturfer899_1w_3d0_7d299' failed with error: PurchasesError(error: There was a problem with the App Store., userInfo: ["NSUnderlyingError": StoreKit.StoreKitError.unknown, "readable_error_code": "STORE_PROBLEM", "source_function": "asPurchasesError", "NSLocalizedDescription": "There was a problem with the App Store.", "source_file": "RevenueCat/StoreKitError+Ex
If I setup my paywall (v2) for english only it works.As soon as I add another language (in my case japanese and thai), I get this errors causing the fallback paywall to be shown:2025-08-14 12:49:01.707 18237-18237 [Purchases] xxx E Missing string localization for property with id: 'Z_ph1YtWAp', for locale: 'en_US'.2025-08-14 12:49:01.707 18237-18237 [Purchases] xxx E Missing string localization for property with id: 'TM_G22_izX', for locale: 'en_US'.I tried to export the resources as csv and add those 2 ids manually and re-import, but it says they aren’t present.
Hi Community,we just implemented the meta ads integration via revenuecat and our events are received just fine by meta.Now we are trying to get the attribution to our ads and our ad campaigns to work, but I do not see revenuecat sending any data regarding the campaign or the ad in the integration events.Since it will take a couple of days/weeks as well as money on ads to figure the answer to these questions, is there anyone here who has experience doing meta ads with revenuecat integration, that can maybe already answer the following questions:Do I have to set this data manually via Purchases.setAd and setCampaign and will revenuecat send this data to meta?Or is it enough to have the ATT consent of the user and send the madid/idfa to meta and meta will figure out where this user came from? And lastly: If setting and sending the ad and campaign data to revenuecat & meta, will it be possible to see that a user came from this campaign without violating that the user has not given the
Step 3 of the Android setup requires you to ‘invite a user’ on google play corresponding to the service account created in the previous step. How does one invite a service account when the only input for inviting a user is the email?
Hi everyone,We recently started using RevenueCat with React (non-native) and are relying on the JS library.We’re not using RevenueCat Web Subscriptions, since we’d prefer not to be locked into their billing system. Instead, we’re just using the library to check customer subscriptions and retrieve entitlements.One thing we noticed is that the JS library is huge - about 671 KB.A few questions came up internally: Is there any way to reduce the bundle size? Maybe a “lite” or “compact” version of the library? Can we safely use the RC REST API directly from the frontend and skip the JS lib? Is it possible to listen to customer info changes same as in RN? From what we understand, RC Web Billing forces you into their billing system for web. Why is this restriction so aggressive? Is there really no way to fetch offerings and use Stripe directly without all the extra complexity? This has sparked a lot of discussion in our team about whether to keep using RC at all, since the lock-in feels
Hi there, I saw an older thread here about this from 2021. It’s 2025 and I am wondering when RevenueCat would support other Android stores like Huawei.
I have RevenueCat and Play Console setup for consumable products. I setup a test promo code but when redeeming successfully, the order doesn't display in Play Console (works on subscriptions) as a $0 order and the purchase action in app is not applying the steps I have setup. Anybody else having this issue? I have an app in production and am on a tight marketing deadline to get this fixed. Need help ASAP please!
I'm trying to add a .p8 file to the StoreKit Subscription Offer key section, exported from Xcode via StoreKit configuration. However, when I upload the file, nothing happens—no confirmation, no error message. The file isn't accepted and no feedback is provided. I've ensured that the file was exported properly from Xcode.Is there a specific format or requirement for this key that I'm missing?
We were running into an issue during migration to 9.2.0 where we needed to call Purchases.getProducts([product.id]) before calling Purchases.purchaseStoreProduct(storeProduct).Previously we were calling Purchases.purchaseProduct(product.identifier), so we thought it would be an easy transition. But we kept getting an empty array from getProducts().Finally, we realized that RevenueCat product.identifier is NOT the product id (at least not any more for Google Play). Instead, RevenueCat’s product.identifier is a concatenation of product.id:base_plan in Google Play.RevenueCat does display the actual Google Play product id, but it’s called both “Subscription Id” and “Product Group” in the console. And neither of those attributes are part of the StoreProduct attributes in the SDK.We could parse the existing product.identifier, but that seems like a hack. Does anyone have a suggestion for how to get the actual Google Play product id programmatically via the Flutter SDK? The thing that Revenu
OK, so I am using expo react native and implementing RevenueCat for rendering paywall, now the issue is that I used one of your already-made templates, and then I configured it to suit my taste. in doing that I inserted my own custom image to the paywall it showed perfectly on RevenueCat, but now that I am testing it on my andriod phone, the Image is not appearing at all. In hindsight, it is showing some sort of blur which is really annoying, I checked the file size and it is less than 2 mb see the details of the image (921 x 921, 953 KB). what should I do?The Image above is what is displaying on my phone.The Image below is what I created in revenuecat.
Hey folks, I ran into this scenario:Enabled Server 2 Server notifications for App Store. Received RC Anonymous in INITIAL_PURCHASE (sandbox) webhook event Received my custom ID for RENEWAL events following INITIAL_PURCHASE. Never received a TRANSFER event.I followed this RC Doc and I can confirm the first 2. For 3, I use the firebase user ID as the RC user ID. #4 is not applicable for app store. Doc mentions:“If not, it may happen that we first track a purchase for App User ID A from a server-to-server notification and later we receive the same purchase from the SDK or the REST API under a different App User ID B. In this case, no transfer will occur, and App User ID B will never get access to the entitlement.”Could you please help why a TRANSFER event was not sent even though the conditions were met?Followup -As I need S2S notifications for handling REFUND events only, would it be safe to turn off S2S for new purchases?Thank you!
Hi everyone, After upgrading my project to SDK 53 (React Native 0.79.5, React 19), I’m seeing this error when opening the RevenueCat Paywall or triggering the Google Sign-In flow in iOS:[UIKitCore] View doesn't recognize its superview as a UIView. This can happen through use of CALayer API on the view layers instead of UIView API on the views.view: <UITextField ... >superview: <UIWindow ...>Issue:When I close the RevenueCat Paywall, the app’s screen becomes frozen — the UI is visible but completely unresponsive to taps or gestures. I have to kill and relaunch the app to continue. The same freeze can happen after closing the Google Sign-In sheet.What I’ve tried so far: Set "newArchEnabled": false in app.config.js → issue persists. Clean rebuild (npx expo prebuild --clean, pod install). Updated @react-native-google-signin/google-signin to latest v15. Using react-native-purchases and react-native-purchases-ui v9.2.0. Environment: Expo SDK 53 (expo@~53.0.0) React Native
Hello team, I recently added a localisation to my Paywall (greek) and immediately broke my Paywall, reverting it to the default one. I checked the logs on Android and I can see:Missing string localization for property with id: 'PTDmqcpjN9', for locale: 'en_US'.Displaying default template due to validation errors.I have checked similar issues - I exported the localisations as CSV and checked: PTDmqcpjN9 is not present in the list of strings.How can I locate which string is missing?
While integrating App Store Connect with RevenueCat, I receive the error: “The key is not valid or is not compatible with the bundle ID of your app.” Please advise on what could cause this mismatch.The app-store connect api is connected properly.
I'm using revenuecat's built in paywalls - when testing the payments on my device via a sandbox account, when trying to purchase products with an introductory offer (1st week free), I'm getting an error (sharing screenshots for reference).This is not happening for products without any intro offers or non-renewal subs. Thanks in advance!App error alert after trying to purchase sub product with intro offerXCode console log error
Hi RevenueCat team & community,Our app integrates the RevenueCat SDK, and our normal flow is: User purchases successfully via the app. RevenueCat sends a webhook to our backend. Our backend upgrades the user to Pro access. However, recently this stopped working — even when the purchase is successful, NO webhook is sent to our server. We have verified: No changes to the app’s SDK version. No changes to the webhook URL or backend configuration. Purchases are going through (confirmed in RevenueCat dashboard and App Store/Google Play console). This issue is critical because users are paying but not getting Pro access, which makes our app look like a scam to them.We urgently need help to: Understand why the webhook is no longer firing. Identify if there’s an outage, delay, or known bug affecting webhook delivery. Learn if there are recent changes in RevenueCat SDK or webhook infrastructure that might cause this. Has anyone else experienced the same issue recently? Any immedi
Hello,We are experiencing an issue where Android subscriptions are not showing up in RevenueCat, while iOS works perfectly. On iOS, getOfferings() returns the products correctly. However, on Android, even though the subscription is published in Google Play Console and added to the Offering in RevenueCat, the availablePackages list comes back empty.Current situation:Subscription and base plan are Published in Google Play Console.In RevenueCat, the product android.pro.plan:androidproplan is added to both the Offering and the related Entitlement.Our device is added to the license testing list, and the app is installed via the Play Store.Purchases.configure() is called correctly with the right API keys.The exact same setup works fine on iOS.In this case, what could cause getOfferings() to return empty on Android?Thanks.
I currently have the meta ads integration with revenue cat setup, but from my understanding, it’s only responsible for sending the events through the conversion API and that the events needed to be reported to SKAN need to be done separately on the deviceGiven this, I’ve tried looking around for what is the best practice on how to implement this, but have run into solutions such as disabling the conversions API in favor of using the app events API in the device or creating separate naming conventions when sending events directly to SKANSo just trying to figure out what is the best way forward with this
This is a follow up question or problem to this one: After investigating further, I came to the conclusion that something is not right with the connected Stripe accounts in RevenueCat dashboard (or I am missing something).So I am trying to connect both the Sandbox and the Live Stripe accounts to RC, in order to be able to test subscriptions first. In the RevenueCat “Account Settings” under General there is only the sandbox account being shown. If I then under “Apps & providers” try adding a Stripe web config, I can only choose the live Stripe account (so I have this set up for the live account), but there is no sandbox account so I could make two web configs. In Stripe dashboard, it seems like both are connected.This is probably why there is a “The receipt is not valid” error when trying to send the RC token.Could you point me in the right direction, what am I doing wrong here?Thank you.
Hey! I saw two discussion posts about Web Billing support of upgrades/downgrades from a few months ago (here and here), and I just figured I’d check to see if there’s any update. Thank you so much!
I’m using the RevenueCat KMP SDK and have a weekly subscription that includes an introductory offer.I want to display both the regular price and the introductory offer price in my UI.How can I retrieve both prices using the SDK?
I'm experiencing an issue where some users are able to make repeated purchases without actually being charged. The problem is that multiple purchases are being reported with the same transaction_id as the original purchase. From the user's perspective, it looks like a new purchase was made, but no new transaction or payment actually occurred in the App Store.This leads to users getting access multiple times without paying again.
Hello, [Flutter App - PayWall]I’ve checked different topics related to mine and i can’t fix my issue.I wanted to show the close button on my paywall. But unfortunally even if i’m using :await RevenueCatUI.presentPaywallIfNeeded(paywallKey, displayCloseButton: true); As described in the doc, it’s not working. Some people said the button is only black for them but in my case, i can’t find any it at all, so i need help. Here’s what it looks like and i’m using this recent version :purchases_flutter: 8.10.4purchases_ui_flutter: 8.10.4
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.