Discussion and help from anything related to RevenueCat.
Recently active
I have a moderately complex paywall with tabbed panel showing subs vs lifetime.Just to save my lazy ass some time, was looking to see if you have some kind of conversion option but I cannot see one. Is this likely to happen by September 2025?I’m concentrating on adding features and rolling out a Mac (SwiftUI) version, for which I have to code my own paywall anyway, so it’s not a priority. I’m pretty happy with the existing paywall.
Hi there,I have a mobile app that allows Apple and Google Sign in using Firebase. A user on their iOS device has signed in with their Apple account but now they wish to use their Google account instead. Below are the list of events.User logs in with Apple account Purchases subscription for 1 year Subscription expires Logs out of app Logs in with Google account Purchase subscription for 1 year againWith these events, the subscription still ended up getting tied to the previous Apple account instead according to RevenueCat dashboard. Note that I do call the proper “logout” and “configure” functions when the user logs in and out of my app.I had asked the user to try and click the “Restore previous purchases” button I have, but a dialog comes up and states they are already subscribed and then it’s just an error message. Unfortunately, I just display a generic error message and I don’t know exactly what the error is.Is there anything I can do here to transfer the subscription to associate w
I am made an app also Published an Play store v1 , But I cant Make an Strip account In India. Stripe Will Pause The Account Making on India users , So Any Other Way To Get Payment ? . waiting for update ?
In linked post, the answer to this question remained unclarified, I would basically like to ask for a follow up on that question:The `store_transaction_id` in CustomerInfo of v1 REST API , is it the unchanging ORIGINAL transaction ID for all platforms? Or does it change after renewals?
I’m currently integrating OneSignal with RevenueCat, and I’ve run into a situation that I believe others may have faced as well. I have two separate apps: one for iOS and one for Android. Each app has its own distinct OneSignal App ID, as required by OneSignal for platform-specific notifications.However, in the RevenueCat dashboard under Integrations > OneSignal, I only see the option to enter a single OneSignal App ID. Since my iOS and Android apps have separate OneSignal projects (and therefore different App IDs), I'm unsure how to properly configure the integration to support both platforms at the same time.My main goal is to ensure that RevenueCat sends subscription events to the correct OneSignal app depending on the platform, so I can properly target users for notifications on each OS.Thanks in advance for any guidance or suggestions!
Important Notes When Testing Google Play Sandbox – Account Conflict Issue I’d like to share my experience in case others run into a similar issue during Google Play sandbox testing.This unexpected behavior took quite a bit of time to figure out. Problem Summary If multiple Google accounts are signed in on the test device, the system may reuse a previous purchase receipt from one of those accounts. It seems that Android treats the first (oldest) signed-in account as the default, and continues referencing its purchase history even in sandbox mode. In my case, I had a real subscription purchase on main@gmail.com (used in production), and although I was testing with test.sandbox@gmail.com, all attempts were rejected with the message: “You are already subscribed”. How I Solved It Remove all unnecessary Google accounts → Only keep the test account (test.sandbox@gmail.com) on the device. Use only the test account → Sign in with just the sandbox test account before running your tes
Hello! As of the last 2-3 days, currently subscribed users received my paywall to subscribe. I had the same experience and was able to get past it by exiting out of my app and reopening it. A friend of mine said she clicked the subscribe button but didn’t seem to get charged again but I’m worried this will cause concerns with other users. Anyone experiencing this? It’s the first time I’ve seen this in the 7 months my app is live. I use the integration with flutterflow if that makes a difference. This also seemed to coincide with the recent Firebase outage. Thanks!
Does anyone here have any experience migrating Play Store & App Store developer accounts from Individual to Business accounts?For the process, I found online:Apple: You can convert the current account from Personal to Business. Google Play needs the apps transferred to a newly created Business account. Is there anything I need to do for RevenueCat?My main concern is some sort of major error like losing all current subscribers or failed payments during transition period.Any sort of tips or recommendations on how to make sure this goes smoothly would be awesome.- Aaron
Hey there, I have one paywall that has annual-monthly-weekly subscription. I want to have another paywall that has lifetime subscripton and uses same entitlement that my initial paywall has. I want to show user my lifetime paywall after the user dismiss our initial paywall. How to achieve that in UIKit? Is there a way? I can’t find in the docs etc.
Hello, In my app I sell subscription and consumable in-app purchase packages. In the app my default offer includes subscription packages. I’m fetching my in-app purchase packages with hardcoded offer id like “default_credit_offer” and I want to make experiments for default_credit_offer but I haven’t found the solution for that issue can you help me for that. Is revenue cat support this situation?
Hello,I don't get any errors when I test on a real phone, but I get the same error on the emulator.The problem is when I push Google for validation, they get the error, and I don't know what to do to pass the validation.W/BillingClient(25808): There was an exception while unbinding service!W/BillingClient(25808): java.lang.IllegalArgumentException: Service not registered: com.android.billingclient.api.zzba@482def3W/BillingClient(25808): at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:2001)W/BillingClient(25808): at android.app.ContextImpl.unbindService(ContextImpl.java:2168)W/BillingClient(25808): at android.content.ContextWrapper.unbindService(ContextWrapper.java:923)W/BillingClient(25808): at com.android.billingclient.api.BillingClientImpl.zzaL(com.android.billingclient:billing@@7.1.1:1)W/BillingClient(25808): at com.android.billingclient.api.BillingClientImpl.startConnection(com.android.billingclient:billing@@7.1.1:11)W/BillingClient(25808): at com.revenuecat.purchas
Hi,I noticed that a few refund requests were recently approved in the App Store.In the past, we’ve usually preferred to decline such requests, and Apple would typically follow suit. Like, above 90% of refund request will be rejected. However, recently, it seems that a high number of refund requests have now been approved.Could you please check on your end to confirm whether the Apple refund requests have been handled correctly?For the context, the refund rejection rate is almost 100%. However, now the refund approval rate is almost 100%. Can RevenueCat team please verify on this?Thank you.
I know this has been discussed hundred of times, but while I suppose the reason is he same as in previous threads, that is: reviewer is failing to fetch products because they are not accepted, the response I got from him seems to opose this premise. Quote:The in-app purchases do not need to have been previously approved to confirm they function correctly in review.It would be appropriate to review your in-app purchases to make sure they have been appropriately configured for review in the Apple-provided sandbox environment.It is the first release of this app. The subscriptions had “Waiting for Review” status but after the app rejection their status changed to “Developer Action Needed” while the translations of them to “Rejected”.On RevenueCat everything seems to be configured correctly, with product fetched automatically and their statuses correctly reflecting what is displaying in App Store Connect.Meanwhile the Android version using the same codebase is happily on prod with zero issu
Hi everyone,I'm experiencing an issue where my app's in-app purchases (configured via RevenueCat) work perfectly in the sandbox and TestFlight environments, but fail during App Store review.⚠️ Problem: During Apple’s review, the reviewer receives an error when attempting to purchase a subscription. (Error 23: There is an issue with your configuration. Check the underlying error for more details) Apple provided this message: “We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, an error message displayed when we attempted to buy in-app purchase. Please review the details and resources below and complete the next steps.”Next StepsWhen validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation
Very strange, never had this issue before. It’s occurring in production as well. Tested it on several different phones and accounts, it appears to be happening to one of my co-workers on both prod and Testflight. I’m using react-native-purchase v7.27.3happens when calling Purchases.getOfferings Seen there was a post from a year ago talking about it, but it doesn’t seem like there was a solution to the issue.
I am getting this error from sandbox and the app in app store =>flutter: PlatformException(8, The receipt is not valid., {code: 8, userCancelled: false, readable_error_code: INVALID_RECEIPT, underlyingErrorMessage: The receipt is not valid., message: The receipt is not valid., readableErrorCode: INVALID_RECEIPT}, null)Also I’ve checked this stepsApp Store Connect App-Specific Shared Secret is correct My public api key is correctWhat is the solution?
This is from an expo 53 react native implementation.The errors[StoreKit] [b86562ee] Request failed with error Error Domain=StoreKit_Shared.StoreKitInternalError Code=7 "(null)"[StoreKit] [3e167164] Request failed with error Error Domain=StoreKit_Shared.StoreKitInternalError Code=7 "(null)"[StoreKit] [b86562ee] Error updating Storefront: Error Domain=StoreKit_Shared.StoreKitInternalError Code=7 "(null)"Error Domain=ASDErrorDomain Code=509 "No active account" UserInfo={NSLocalizedDescription=No active account}occurs when calling // Set API key based on platformconst apiKey = Platform.select({ios: process.env.EXPO_PUBLIC_IOS_RC_API_KEY || 'appl_xxxxxxxxxxxxxxxxxxxxxxxxxx',android: process.env.EXPO_PUBLIC_ANDROID_RC_API_KEY || 'your_android_api_key_here',});// Enable debug logs in developmentif (__DEV__) {await Purchases.setLogLevel(LOG_LEVEL.DEBUG);}// Configure RevenueCat with anonymous IDawait Purchases.configure({apiKey,entitlementVerificationMode: Purchases.ENTITLEMENT_VERIFICATION_MO
Hello,I have my React Native app fully functioning on iOS. I am currently testing my app under a closed testing group on the Play Store. I have found that selecting restore purchase on Android will automatically give my test users premium (without having made any previous purchase). This is something that doesn’t happen on iOS so I’m wondering is it because it’s under closed testing?
How to make hard paywall in react native?
Hello, where are the API keys? In the docs says it's under "project settings" but there's no tab or anything with API keys there. I created the project, and confirmed under the "project settings” > “collaborators" that I've the "Owner" role. I also verified my email. I also signed out and in again. Still nothing with API keys. Thanks.
Hi, I’m considering reworking my onboarding. However, I might delay that if RC is going to release remotely configurable and AB-testable onboarding as a new feature in the near future. I understand that’s private info and even if you’re planning on it, the timing might be hard to predict. But can you give me any sort of rough estimate as to if/when you might do this? Also, if/when you do release this, will I be able to implement basic logic (e.g. if select these goals, show them this page, but if select those goals, show them that page). Any info you have on functionality would be much appreciated! Thanks, Toby
I've been trying to update the text in Paywall V2, but the editor doesn’t work in any of the browsers I’ve tested. I’ve tried Chrome, Safari, Firefox, Brave, and Arc — the issue persists across all of them. I'm unable to edit the text or styles at all.Even when I duplicate components, they appear on the paywall, but I still can't modify the styles or label text.Can someone help me with this? I need to update my paywall content.
Hello!We use RevenueCat as our app subscription management platform and as a single location to monitor our revenue across iOS and Web (Stripe).From iOS, users can only purchase subscriptions, and everything displays as expected. However, from Web (Stripe), users have multiple options for purchasing our product. Some Stripe Payment Links combine non-renewing products with renewing products (subscriptions), while others are only have non-renewing products.When someone follows a Stripe Payment Link to purchase multiple non-renewing products, then in the RevenueCat Dashboard, we see multiple separate “One Time” purchase line items, and all revenue is properly tracked.However, when the Stripe Payment Link includes both non-renewing products and a subscription, then in the RevenueCat Dashboard, we see only 1 “New Sub” line item, and only the revenue from the subscription is tracked. The rest is untracked. It’s all a bit inconsistent and confusing. Thank you for any help with tracking all of
Hey folks,Hoping someone here can shed some light on a perplexing issue I'm seeing with subscriptions in my app.I had a user kindly inform me that their annual subscription (purchased via Apple) recently failed due to insufficient funds. The weird part? They're still able to access all the premium features in the app.I've checked in App Store Connect, and I don't have any grace periods set up. What's even stranger is when I look at this user's profile in RevenueCat, it shows them as having an active annual subscription with no indication of a payment issue whatsoever.This has me scratching my head, so I'm wondering:How does Apple typically handle these failed payments, and how does RevenueCat usually reflect them? Any idea why a user would still have premium access after a payment fails? How long might this access last? Is there a way to configure things (either in Apple's settings or RevenueCat) so that premium access is immediately revoked if a payment fails, and only restored once t
Hi. Whenever I supply custom metadata in my Web SDK purchase call (as described here https://www.revenuecat.com/docs/web/web-billing/custom-metadata), the Event Data for the purchase shows a “metadata” value of null, and the webhook request body for that event then also shows a “metadata” value of null. I’m using a web billing app.The exact request I’m making is: const { customerInfo } = await Purchases.getSharedInstance().purchase({ rcPackage: pkg, metadata: { org_id: "01970d2a-3f5b-724c-b306-5aca641ffba3", event_id: "01972cdb-f765-756b-ae95-203f516ff6e6" },});I can see the metadata being set correctly in the POST request to https://api.revenuecat.com/rcbilling/v1/checkout/start, it just never seems to actually be stored and associated with the event once the checkout is completed.I’m using the @revenuecat/purchases-js library on version 1.4.3. Is there something I’m doing incorrectly or am I missing something? Or is there just a bug with processing this metadata on the b
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.