Discussion and help from anything related to RevenueCat.
Recently active
I noticed that we had inflated install numbers on RC vs. App Store. I trust Apple more with the installs, so I went on to find the root cause.We have a Flutter app and I call Purchases.logOut() when a user logs out. This sometimes happens automatically. I now read in the docs that logOut will clear the saved appUserID. This will generate a random user id and save it in the cache.Since RC seems to count appUserIDs as installs, each log-out will count as an additional install. Question: Should I even call Purchases.logout when our users log out? They are still on the same device, with the same Apple ID (most likely). Seems to me that this is wrong and inflates our install numbers.
Hi RevenueCat Team,I am using the RC sdk in my flutter app and I am using RC META integration to report purchases/start trial ...etc, events to META.I’ve set up the Meta integration in my RevenueCat project to report purchases to Meta and optimize ad campaigns. I noticed that the payload RevenueCat sends to Meta includes the entry:"action_source": "website" However, I need this to be set as "action_source": "app".My question is: is there a way to update or customize the payload sent from RevenueCat to Meta?Currently, because the action source is set as “website,” I have to create a Custom Conversion in Meta and select “Website” as the Action Source. This, however, requires filling out the Rules section with URL keywords, which doesn’t apply in my case.It would be great if there’s a way to adjust the payload so the events are properly recognized as app events on Meta.Or additionaly, can you explain how to use events sent from RC to create and optimize ad campaigns in meta?Thanks for you
Hi There is offcial RevenueCat dashboard alp for iOS only.There is unoffcial android version but I don't trust it to enter my credentials in. is there any plan in development of Android version? I would appreciate to have one thank you
Hello!I would like to manually send a web-hook event.I use RevenueCat web-hook event log to visualize if all my subscriptions were processed. In case a few couple of events are not, I would like to manually resend them.Stripe has something similar - see the attached screenshot. Implementing ‘ETL exports’ seems very unnecessary and arduous if I need to resend just a couple of events.Thank you!
Bagaimana cara nya
There's a missing content issue with tab elements in the Android version.The LITE tab should show pricing and descriptions (as designed by RevenueCat - see reference image),but on some Android devices like Pixel and Samsung phones, this content doesn't appear at all. The PLUS tab works fine and displays all content properly.
In the paywall editor, I’ve specified a few badges should be overlaid - However, at runtime, the badges don’t appear properly: Any idea what I’m doing wrong?
I’m evaluating RevenueCat for our in-app subscription integration.We have the following requirements:We currently handle web based subscriptions using Stripe.We want to add the option to purchase subscriptions via in-app purchases.We want to see customers subscribed via the app stores in our Stripe dashboard and their subscription status We already integrate our user account system with Stripe and want to do minimal changes, ideally when an app store customer would be created the existing should be able to connect it with the user account without modificationsMy questions:How can we sync app store subscribers to Stripe? I’ve looked at the RevenueCat Stripe app in the Stripe marketplace, but couldn’t figure out how to use it properly, it talks about sending Stripe tokens to RevenueCat. Not sure I understand it correctly, but this sounds like RevenueCat tries to be the single source of truth for Stripe based web subscriptions. As I understand it this is the opposite to what we want.Any h
Hi, I’m trying to access this API endpoint https://www.revenuecat.com/docs/api-v1#tag/entitlements/operation/grant-a-promotional-entitlement When I use my public SDK API key, it says “invalid API key”. But when I use a secret API key for API version 1, I get “"RevenueCat error: {\"code\":7243,\"message\":\"Secret API keys should not be used in your app.\"}\n\n"”Edit: For context, I am not calling the API directly from my app. I am invoking a Supabase edge function, so not sure why I am getting that message
The Flutter project has integrated RevenueCat, and all Android configurations have been completed: Installing the Android APK built locally via flutter build --release can successfully open the Google subscription page, and clicking subscribe brings up the payment options. After uploading the AAB to the closed testing track and downloading it from there, opening the subscription page shows a gray paywall and displays the message:"error 11: there was a credentials issue, check the underlying error for more details", and the subscription items cannot be displayed. In RevenueCat’s dashboard, the following permissions are all correctly set: Permissions to call subscriptions API Permissions to call in-app products API Permissions to call monetization API So my question is: why does the paywall fail to load when using the second method, and where is the problem?
Hello, I have a flutter app that is working fine on Android but can’t fetch offers from Appstore Connect. I have verified all the details, from product id, bundle id, products are approves, agreements signed, bank account added, etc. I can see where the issue lies in any config setting. What else could be causing this problem? I went through the “Why are offerings or products empty?” checklist. I did see where it stated about a shared secret but that was for storekit 1 which is not what we are using. I have done the certificate for storekit 2. This is only on iOS. Any help is greatly appreciated.
Hi, I’m facing an issue in my Flutter app when displaying the paywall.The error says: The Paywall references a package with id '$rc_annual', but Offering 'subscription' does not contain such a package. It has these packages instead: [$rc_monthly]. Either add the missing package to the Offering or remove it from the Paywall. This started happening after I created a new base plan in Google Play Console, imported it into RevenueCat, and updated my Offering. I had an annual plan before but deactivated it and created a new base plan. After that, the paywall can’t find $rc_annual, and only $rc_monthly shows in the Offering. 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!
Hello,I plan to use virtual currencies within my app.For me, spending or gaining is straight forward and I will use my backend for such calls.Evaluating the available tokens within the app raises more questions and I tried to understand the official doc here https://www.revenuecat.com/docs/offerings/virtual-currency but I still wonder about some aspects.Exact use case: I need to know within my view models if the user has tokens or not.What should I use: Purchases.shared.cachedVirtualCurrencies or Purchases.shared.virtualCurrencies()?I understand the fact that I need to call the Purchases.shared.invalidateVirtualCurrenciesCache() each time there is a backend transaction, but then what?Is calling Purchases.shared.invalidateVirtualCurrenciesCache() updating the Purchases.shared.cachedVirtualCurrencies? or do I need to fist call Purchases.shared.virtualCurrencies() and then use the cachedVirtualCurrenciesHow about this flow:App launch call Purchases.shared.virtualCurrencies() and store it
Something is wrong with the checkTrialOrIntroductoryPriceEligibility function. I'm not sure if I'm doing it right; to be sure, I wanted to share my problem here first.In my iOS app, I use this snippet to check whether there is an eligible introductory price:if (Platform.OS === 'ios') { // Purchases.checkTrialOrIntroductoryPriceEligibility is only available for iOS const introEligibilityStatuses = await Purchases.checkTrialOrIntroductoryPriceEligibility([ pkg.product.identifier, ]); return ( introEligibilityStatuses[pkg.product.identifier].status === Purchases.INTRO_ELIGIBILITY_STATUS.INTRO_ELIGIBILITY_STATUS_ELIGIBLE ); } In one account, everything works fine—I haven't bought anything with that account yet.But the second account (with expired introductory subscription) returns wrong information:The status returns INTRO_ELIGIBILITY_STATUS_ELIGIBLE (2), which means the introductory price is available, so I show the discount in the app. Ho
Testing with an iOS Testflight build, monthly subscription.I subscribed with my iPhone a while ago. I changed the product today: I added a new product on appstoreconnect, and linked to it from the RevenueCat’s offerings, replacing the old one.I updated the Testflight build and at some point got PRODUCT_CHANGE webhook event on my server, which I see in logs linking the old product id to the new one, but I don’t handle this webhook currently, so it was ignored.Trying to fetch the new subscription from the API after this doesn’t work:https://api.revenuecat.com/v2/projects/$projectId/customers/$userIdStr/subscriptionsand thenhttps://api.revenuecat.com/v2/projects/$projectId/products/$productIdkeeps returning the old product id. I deleted this id from my server configuration so can’t do anything with it.I try to subscribe again, I get a system dialog: “You are currently subscribed to this (..) it continues until tomorrow .. plan continues until cancelled”. I try to cancel this subscription
Hi everyone,I’m working on an app that will only offer subscriptions — specifically monthly and yearly plans. I’ve already set up these subscriptions in the Apple Developer dashboard.My question is: do I also need to create separate In-App Purchases for both the monthly and yearly subscriptions, or is setting up the subscriptions enough?In Xcode, I’ve enabled In-App Purchases in the capabilities, but I’m not sure if anything else needs to be configured in the Apple Developer dashboard.Thanks in advance for any guidance!
In our iOS app we call:Purchases.logIn("ourCustomUserId")RevenueCat returns our custom user ID correctly, and in the dashboard we see the customer under that ID. ✅But when a purchase happens, the webhook event only sends back:"app_user_id": "SRCAnonymousID:xxxx"There is no original_app_user_id or aliases in the webhook payload. This makes it impossible to match purchases to the correct user in our backend.Question:Why are webhooks still sending the anonymous ID instead of the logged-in custom ID? Shouldn’t webhook V2 include original_app_user_id and aliases so we can map it properly? How can we fix this so webhook events always include our real app user ID?
Hello,I sent my app for review but it got rejected due to Error 23, Guideline 2.1 - Performance - App Completeness.In-app purchases are in the “Ready to Submit” state. Paid Applications Agreement is Active. Tax forms are Active. A bank account has been added.
I’m working on a subscription enabled app, I have enabled monthly and yearly subscriptions on apple dashboard for my app do I still need to enable in-app-purchases? I don’t have consumable, non-consumable items.In xCode I have added in-app-purchases capabilities but I’m not sure if I need to setup In-App Purchases.Thanks
Hi, I’ve been using Paywall with Flutter, and it’s been great so far, but it doesn’t handle subscription upgrades/downgrades for Google Play, which is a major issue.Without this essential feature, Paywall becomes almost unusable for managing multiple subscriptions on the Play Store.Are there any solutions to make RevenueCat Paywall work for upgrades/downgrades with Google subscriptions in Flutter?
I’ve uploaded a new version of my app with sdk version 9.5.0 and I’m seeing this error in production, did anyone encounter this?here is the stack trace: com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitGetProducts$2$2.invoke (CoroutinesExtensionsCommon.kt:146) com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitGetProducts$2$2.invoke (CoroutinesExtensionsCommon.kt:141) com.revenuecat.purchases.ListenerConversionsCommonKt$getStoreProductsCallback$1.onError (ListenerConversionsCommon.kt:36) com.revenuecat.purchases.PurchasesOrchestrator$getProducts$1.onError (PurchasesOrchestrator.kt:517) com.revenuecat.purchases.PurchasesOrchestrator$getProductsOfTypes$1$2$1.invoke (PurchasesOrchestrator.kt:1128) com.revenuecat.purchases.PurchasesOrchestrator$getProductsOfTypes$1$2$1.invoke (PurchasesOrchestrator.kt:1126) com.revenuecat.purchases.PurchasesOrchestrator.dispatch$lambda$63 (PurchasesOrchestrator.kt:1158) com.revenuecat.purchases.PurchasesOrchestrator.$r8$lambda$vfpu2r8Y3li
I currently use API v8, there are lifetime products in my app that were incorrectly configured as “consumable” in the RevenueCat dashboard (I fixed that to be “non-consumable” but many users have already purchased these before). I understand that in API v9 (which uses Play Billing Library 8), I can’t restore consumed products. Does that mean that if I upgrade then these products will be non-restorable?In other words, does fixing the products from “consumable” to be “non-consumable” solve the issue for all purchases, or does it apply only to new purchases after the fix?
Is it necessary to perform additional integration based on the documentation from https://developer.amazon.com/docs/appstore-sdk/integrate-appstore-sdk.html ? I did not find any mention of this in the documentation, either in RevenueCat Documentation or in react-native-purchases. Also, the questions already posted on this forum do not have a logical conclusion. The fact is that after setting everything up perfectly and testing the build in production, I have:SKUs are identical
I have created a Paywall with some icons as you can see in the screenshot attached. But when I try to open the paywall in my app, or even in the RevenueCat app, the icons do not appear. iOS 26RevenueCat SDK 5.39.0
Hi.. I’ve got an old ObjC project that uses RevCat. I don’t rely on the system localization but allow the user to choose the language to override it.. so I want to also override the paywall localization. I found another post that says this is possible in ios: Purchases.shared.overridePreferredUILocale("es")My app is ObjC and generally I can call any func with objC but this one doesn't seem to be found.. trying:[[RCPurchases sharedPurchases] overridePreferredUILocale:@”es”];But that’s not found.. is there a way? Or would I need to switch over and have some swift in my project (I haven’t really done that, I know it’s possible.. just trying to find the easiest solution at the moment) Thanks!D
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.