Get help with your SDK implementation.
Recently active
After a DEFERRED replacement (A → B), Google Play marks the active subscription as “Plan change”, but RevenueCat SDK for Android doesn’t seem to expose this state where the active subscription is pending a plan change.Could this be exposed from the RevenueCat SDK for the active subscriptions? I don’t seem to get any information from the RevenueCat Android SDK that the plan is about to change and to where the plan is going to change to. The backend does receive the “PRODUCT_CHANGE” webhook, but client side isn’t able to access the same information.Seems to me also that the Paywall’s ProductChangeCalculator purchases-android/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/ProductChangeCalculator.kt at main · RevenueCat/purchases-android is not doing any logic to handle the pending case, so if you attempt a second downgrade from the Paywall while the previous is pending you get.“Paywall purchase error: One or more of the arguments provided are invalid.”, whi
I got the following error: Guideline 2.1(b) - Performance - App CompletenessIssue DescriptionThe In-App Purchase products in the app exhibited one or more bugs which create a poor user experience. Specifically, "upgrade to premium" button led to an error page. Review the details and resources below to troubleshoot this issue.Review device details:- Device type: iPhone 17 Pro Max- OS version: iOS 26.5 I have created the subscriptions in the appstore but they are not approved. When it try to test it on my own iPhone via testflight i get: Could not load subscription options PlatformException(23, There is an issue with your configuration. Check the underlving error for more details. More information: https://rev.cat/sdk-troubleshooting 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-em
Hey, does your roadmap have Accessibility improvements or configurability on the roadmap?We have a need to fulfill the requirements of European Accessibility Act (Directive (EU) 2019/882) and we have noticed that currently the Paywalls don’t seem to offer good support for accessibility.Recently the ability to disable font scaling in Paywalls, did fix one of our issues. Otherwise we have been able to work around it by adjusting our paywall and doing small hacks and adjustments to them in order to improve the Accessibility.So I was wondering if you have Accessibility improvements coming in the roadmap and when might these improvements be scheduled?
I’m building a web-based TV app where users scan a QR code on the TV to complete payment on their phone. I’m using purchases-js and calling getOfferings() to display products for the current offering.However, the packages array is coming back empty, even though I’ve created a Stripe product for each package under each offering.I noticed that when I add a Web Billing product, it shows up correctly in the offerings, but the Stripe products do not appear.Is this expected behavior for the Web SDK, or am I missing a required configuration step for Stripe products to be available through getOfferings() in a web application?
When I tried adding revenuecat into base44 I am getting several errors and the above image is one of them. How do I make revenuecat for in app purchases as apple does not allow stripe and Base44 only integrates with stripe. What steps do I need to do to integrate it into base44 to accept payments as I know I’m not doing something right. Could someone give me a prompt for base44 to integrate revenuecat.
Hey, we ran into small issue when testing our integration. If user cancels the current subscription from Play Store, it gets to a state where it is “isActive = true” and “willRenew = false”.It seems the Paywall doesn’t check for the “willRenew” state when deciding to trigger the upgrade/downgrade flow when user tries to purchase the same subscription from Paywall. Instead of dealing it as a new purchase the Paywall seems to attempt to do a Upgrade/Downgrade to that product. Which then errors out from play store.I would expect the Paywall to allow user to renew the current subscription, instead of attempting to do a upgrade to the same purchase and then erroring out.In this flow the Upgrade/Downgrade to an other product did work as expected, so no issues with those. 🤖‼️ BillingWrapper purchases failed to update: DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode: DEVELOPER_ERROR. SubResponseCode: NO_APPLICABLE_SUB_RESPONSE_CODE. No purchases received🤖‼
Hi.I just installed macOS 27 and Xcode 27. I can’t run my app because there’s a compile error with RevenueCat. Invalid redeclaration of synthesized memberwise 'init(stringRepresentation:)'I’m not using Paywalls at the moment (no macOS support as far as I know). I know that macOS 27 was JUST released, but I thought I’d post this here anyway to make you aware of this issue, if you don’t already know about it. I did update my swift package to RevenueCat 5.75.0 Thanks, Brendan
Hi RevenueCat community,I'm working on a React Native app and running into a persistent issue with anonymous-to-identified user merging. Would love some help figuring out if this is expected behavior or something I'm doing wrong.Background & Initial SetupMy app originally required registration before any in-app purchase could be made. After an App Store rejection (purchases shouldn't require registration), I updated the flow to allow anonymous purchases first, with registration happening later.Restore Behavior: Transfer to new App User IDThe Flow I Want1. User launches app → anonymous purchase made (no account yet)2. User registers/signs in → anonymous ID merges with their account ✅ (this works fine)3. Subscription expires → user signs out4. User relaunches app → makes a new anonymous purchase5. User signs back into their existing account → new purchase should merge/transfer to their accountWhat's Actually HappeningStep 5 fails. After signing back in, the subscription shows as inac
It would be helpful for the SDK to allow apps to submit custom Anonymous App User IDs with their Configure() calls. These would be used instead of generating a $RCAnon app user ID, but would still be Aliased if/when the user subsequently signs in and the app calls .login().In my case, my app can provide a more persistent anonymous identifier than what $RCAnon accomplishes, which leads to a better user experience, but we refrain from doing so because we get undesirable Transfer Purchases to New App User ID behavior instead of the aliasing that happens with $RCAnon.It we could get that aliasing behavior with a custom AppUserID, we would supply our persistent anonymous identifier and the end-user would have a better experience.
Seems the Android Paywalls show Material3 Alert Dialog. Are there plans to make these customizable or disable them so we can show the errors in style that matches the rest of our App? Only way we have found to do this, is to resume(false) in onPurchasePackageInitiated and then taking over the entire purchase flow, but we would prefer to let the Paywall do the work.Even if we keep the default dialogs, their body seems to use non-localized Strings for the error message. Which also makes them bad for non-english users. https://github.com/RevenueCat/purchases-android/blob/de4475520fb0353daddbae2fccf2f402332688ea/purchases/src/main/kotlin/com/revenuecat/purchases/errors.kt#L56
I have an introductory offer applied to a one time purchase on the google play console with legacy compatibility checked. Whilst the UI in the app shows the discounted price when I click to purchase it and the google billing bottom sheet surfaces, its showing the full price. Is this a gap in your SDK to support introductory offers for one time products?
Hello RC team,I have a question regarding the format for App User ID. From my understanding, the default app user id is prefixed with $RCAnonymousID However, on from my webhook log, I am seeing this value where the id is base64. This makes my backend code not working because this value doesn’t exist in my database and I am only using UUID v4 as the id.app_user_id :"na68yjrqU3LzQbk6h4Cwchw8l4pgILy5id9LAAGCaW4="aliases: ["na68yjrqU3LzQbk6h4Cwchw8l4pgILy5id9LAAGCaW4="]original_app_user_id: "na68yjrqU3LzQbk6h4Cwchw8l4pgILy5id9LAAGCaW4=" My dart code looks something like this.configuration.appUserID = appUserId;await Purchases.configure(configuration);From RC dashboard, I can identify the correct customer after user provided their email address and I have to transfer the entitlement to the correct customer if this issue happen.This issue happened once in a while and has happened for a few months. So far, only happened on Play Store purchases. Is there any docs talking about this base64 id?T
Hi RevenueCat community,I'm integrating RevenueCat into an iOS App Clip (targeting iOS 16+) and I'm running into credential validation issues. I'd love some clarity on the recommended setup.My setup:Main app bundle ID: com.mycompany.appname App Clip bundle ID: com.mycompany.appname.Clip Both should use the same in-app purchase products defined in App Store Connect App Clip is embedded in the parent app (as Apple requires) Using RevenueCat SDK v5.x (StoreKit 2)What I tried: I created a separate app entry in RevenueCat for the Clip bundle ID com.mycompany.appname.Clip, uploaded the same IAP key (.p8) and shared secret as the main app. RevenueCat validation returns: "The key is not valid or is not compatible with the Bundle ID of your app."The build with the Clip has been successfully uploaded to TestFlight, so the bundle ID definitely exists in App Store Connect but inside the mother app (not as a single standard app).My questions:Should I use a separate RevenueCat app entry for the Clip
Hi everyone,I'm having major issues with RevenueCat in my beta app (built with Replit).When I try to make a purchase (both subscriptions and consumables), it gets stuck showing “Plans are loading, try again in a moment”.On top of that, on Android (internal testing) I get an error when opening the app saying it can't find the public API.I’ve configured everything: RevenueCat, App Store Connect, Google Play Console, secrets, etc. Other services like Google Maps and Google Sign In work fine.I’ve tried everything I can think of on the code and configuration side but nothing works. I really need purchases working in beta before production.Has anyone faced these exact issues recently with RevenueCat? Any ideas what could be causing this?Thanks in advance for any help!
I’m looking at making an implementation for .NET MAUI to support rendering Paywalls at the MAUI layer instead of trying to wrap the native Android/iOS SDKs to do it (the dependency graph is a bit of a nightmare to sort out for it unfortunately - the core SDKs aren’t too bad and I have working nicely).Is there a spec or schema somewhere that I can get the details for the data returned when requesting paywalls?I see the v2 api has an openapi spec which defines some parts, but there’s stuff like additionalProperties which seems like it could be platform specific.Could you post specs for android/iOS at the very least, to understand more what the api might return? Alternatively, if you actually have a true unified version of the object model for web or flutter or some other framework, a comprehensive and complete spec for that would also be helpful.Thanks
I changed some text. And suddenly my paywall stopped rendering. It’s falling back to RevenuCats default paywall. I’ve tried everything I can think of. It’s kind of a critical moment right now. Don’t know what to do. Any ideas?I removed the badge that I had on a button, since someone said that could give problems, but still the same. The Ai can’t find any problems. It’s the same on iOS and Android
Hi,I'm getting NOELIGIBLEOFFER (statusCode 4) for all 4 subscription products on Android. SDK version 10.1.2, Capacitor plugin.Logs show:- RC API returns 200 for offerings ✅- Products requested: elitemonthly, eliteyearly, promonthly, proyearly- All return: Product Type subs, Reason NOELIGIBLEOFFER, statusCode 4- Error: "None of the products registered in the RevenueCat dashboard could be fetched from the Play Store"What I've confirmed is correctly set up:- Products created May 5 (6 days ago, not a propagation issue)- Base plans are Active- Prices set for CA and US- Internal Testing track has a published APK- Test accounts added as Internal Testers AND in License Testing- Device restarted, Play Store cache cleared- No recent changes to base plansPackage name: com.mi4labs.carnivorexAny idea what I'm missing?
Hello, I am currently testing my app on Testflight and cannot get past the subscription/paywall stage as I am getting this error when attempting to Start free trial / subscription after signing in with Apple ID.Store unavailable Could not load subscription options.I am using iOS 26. Code snippet of how I am loading offerings/products: https://github.com/nelsonng2002/dump-repo/blob/main/purchases.service.tsI added some debugging to my screen and here it is:RevenueCat Initialized: yes, Configured: yes, Key present: yes, Key preview: appl_f...Last action: offerings:fetch _error Current offering: none Offering IDs: none Package IDs: none Last error code: 23 Last error: There is an issue with your configuration. Check the underlying error for more details. More information: https://rev.cat/sdk- troubleshooting There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect. For info, I have products set up on App
I’m at the point where I don’t even know what I’m missing anymore.I’ve been trying to get this working for over three weeks now, and I just keep running into the exact same wall. I’ve rebuilt parts of this multiple times, gone through the docs over and over, and I feel like I’m so close — but something is still off and I can’t see it.What I’m trying to do is allow multiple users in my app (each with their own account) to subscribe, even if they’re using the same Apple ID. Basically like how YouTube lets you have different accounts each with their own subscription, but all under one Apple account.So I set things up the way it’s supposed to work. I created multiple subscription groups in App Store Connect (A through H), each with their own products. Everything is approved, live, and has been for weeks. Then in RevenueCat, I created matching offerings for each group and wired them all up properly with entitlements.On the app side, I’m logging users into RevenueCat using their own user ID
We are using RevenueCat SDK with Capacitor on iOS. Our 4 auto-renewable subscription products are in "Waiting for Review" status in App Store Connect (submitted together with the binary).The SDK returns this error: "None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect"StoreKit returns DownloadFailed error and cannot fetch product metadata. RevenueCat logs show WAITING_FOR_REVIEW state for all 4 products.All configuration is correct:Bundle ID matches ✅ Product IDs match ✅ In-App Purchase Key valid ✅ Shared Secret added ✅ StoreKit Configuration: None ✅ Sandbox account configured ✅Is it possible to test purchases while products are in WAITING_FOR_REVIEW status? Or do we need to wait for Apple to approve them first?
Hi RevenueCat Team,We’re currently using RevenueCat to manage subscriptions in our app and had a question regarding real-time updates to CustomerInfo.In our setup, we sometimes grant promotional subscriptions via our backend (outside the client app). While this works correctly on RevenueCat’s side, the updated entitlement is not immediately reflected in the app UI. At the moment, users need to restart the app (or trigger a manual refresh) before the new subscription state is visible.We’re looking for the best practice to ensure the UI updates in real time when CustomerInfo changes(Flutter) due to backend actions.Specifically:What is the recommended way to listen for CustomerInfo updates when changes are made externally (e.g., via backend APIs)?Our goal is to avoid requiring users to restart the app and instead reflect entitlement changes immediately.Any guidance or best practices would be greatly appreciated.Thanks in advance for your help!Best regards,
When can we expect support (react native) for the newly announced monthly subscriptions with a 12-month commitment?
I see that has no real solution. So I wonder if any guide of “how-to” already exist somewhere?
Hi RevenueCat team/community,I'm facing a color rendering issue on Android.Problem: In the RevenueCat dashboard paywall editor, timeline text is configured as white. (both on dark mode and light mode) In the Android app, the same timeline text renders as white for the first step but black for the following steps. This is not related to light/dark mode logic (I've tested both modes and forced configurations). also some text does not respect the size configured Setup: react-native-purchases: ^9.10.4 react-native-purchases-ui: ^9.10.4 Expo SDK : 54.0.33 React Native : 0.81.5 Screenshots :correct paywall on the dashbord what i have on my phone Has anyone encountered this specific timeline text color discrepancy on Android? Any known workarounds or config fixes? thanks,
I created a test store and products/offering using this tutorial. I then checked the products in the dashboard to edit them, but can’t seem to edit the price I’ve initially set. I can only edit the name/customer facing details. Is this intentional?
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.