Discussion and help from anything related to RevenueCat.
Recently active
Hey guys, it would be awesome to get a video background in paywalls v2, what do people think?
Our app was rejected by apple because of a bad payment experience with the paywall pageWhen a user taps on the CTA button on the Paywall It loads the IOS payment sheet. User enters the password to confirm the purchase on the first one, a second IOS payment sheet is shown almost immediately. User re-enters the password a second time Payment successful. Note: The paywall is NOT what is been shown twice, its the IOS payment sheet that prompts the user to make a payment. In another thread, the solution was This is actually an Apple sandbox quirk. Other developers and myself have also experienced seeing the payment sheet twice (sometimes even more) when performing a test purchase. Nothing to worry about here! The production environment once you ship your app is much more stable.This was not helpful and doesn't solve the problem because our app was rejected. We can ship it to the Appstore.If this is an expected behaviour in the sandbox environment, how do we convince apple to pass the approv
Hi everyone,We ran a promotion offering fixed-term subscription plans (4, 3, and 2 months). After the promo period ended, RevenueCat reports 100% churn, but we know some users continued as regular monthly subscribers—meaning they changed offer categories.What’s the best way to accurately track real churn and retention for this type of transition?Currently, we’re manually filtering customer lists by status, latest store, and latest offer, but is there a more direct way to analyze this in the charts?Appreciate any insights!Thanks!
Hi,I’m currently testing paywalls and noticed that on iPads, they appear very small and don’t occupy most of the screen. I've attached a screenshot for reference of how the paywall looks on iPad pro 13-inch.Is there a setting or adjustment I might be missing to make the paywalls display more prominently?Thanks,Sean
Error: There is an issue with your configuration. Check the underlying error for more details. 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. I keep getting this error when calling Purchases.getOfferings() but I am able to get result when calling getProducts([id]). my paid application agreement is active and i have my products inside the offerings.I am stuck for weeks. i need help. i dont know what am i missing
I have a question about the TRANSFER event flow. I see this in the docs -For example, if UserA buys a subscription, then UserB logs into your app on the same device and restores transactions, UserB would now have access to the subscription and it would be revoked from UserA.Currently I’m implementing the handling of the TRANSFER event, so right now when trying to transfer our handler is returning a 500 because it’s not checking for the ids in the right place, which is fine, I can fix that. But even with the 500 response I see that UserB now has the entitlement but it has not being revoked for UserA. Is fixing this minor error so we now return 200 if the ids are valid enough to trigger UserA’s entitlement being revoked?We have some tracking of entitlements our side that we’ll be updating since I understand that the TRANSFER event doesn’t trigger any follow up webhooks but just wanted to clarify this point.Thanks!
When testing with release version of a react-native app, I continually get the sandbox subscription options when attempting to purchase. For ios, I have no sandbox account setup, but this happens on multiple devices.For Android, I removed my sandbox account and this happens. Everything shows up and the purchase completes OK, but is always in the sandbox.
Let’s say 1000 users start in November 2024 and 15 of them purchased an annual subscription at $50. Will the reported realized revenue for Month 0 (completed beginning of December) be 15*$50 = $750 or are annual subscriptions prorated and I would be getting $62.50 reported as realized revenue on Month 0?
Hi, We noticed that some users are missing in the export file we have on our S3.The user exists on RC dashboard when we look in the Customers tab.Do you know how is it possible?Just in case it has an impact, we didn’t select the option “Receive new and updated transactions only” so we receive everything each time. Thank you for your help,
am new to revenue cat. am supposed to add play store financial report bucket id. i went to play to get it as described in the documentations but there is no transaction so i can’t the id. what do i do to get the id?
I’m facing an issue with a white screen that pops up intermittently while testing RevenueCat integration in my app, especially when updating subscription status or making API calls. It only happens after these actions, and I’ve already tried clearing cache and reinstalling the app.I’ve double-checked the SDK setup and the subscription flow, but the problem persists. Anyone else dealt with this? Any tips on how to debug or fix it?
I’m testing my iOS app (designed for iPhone/iPad) on Apple Silicon, and when trying to purchase a subscription I get the next error:ERROR: 💰 Product purchase for 'pro_plan_subscription' failed with error: PurchasesError(error: There was an unknown backend error., userInfo: ["NSLocalizedDescription": "There was an unknown backend error. The API key is not intended for the Platform. (7810)", "NSUnderlyingError": Error Domain=RevenueCat.BackendErrorCode Code=-1 "The API key is not intended for the Platform. (7810)" UserInfo={rc_backend_error_code=7810, NSLocalizedDescription=The API key is not intended for the Platform. (7810)}, "rc_backend_error_code": 7810, "readable_error_code": "UNKNOWN_BACKEND_ERROR", "source_file": "RevenueCat/HTTPClient.swift:886", "rc_response_status_code": 403, "source_function": "parseUnsuccessfulResponse()"]) I’ve checked the RevenueCat admin dashboard and ensured there’s no separate option for Mac App Store. There’s only one unified AppStore option for iOS, m
What happens when I delete subscriptions in App Store Connect?Does `customerInfo.entitlements[“pro”]?.isActive` continue to return `true`?I want to stop renewing subscriptions, but still provide service to paid users during their validity period.
Hey my app keeps crashing on some clients. Flutter:purchases_flutter: 8.2.1purchases_ui_flutter: 8.2.1User android version: Android 14 (SDK 34)Crash log: Exception java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4164) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4322) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:139) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:96) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2685) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:230) at android.os.Looper.loop (Looper.java:319) at android.app.ActivityThread.main (ActivityThread.java:8919) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit
I deleted an app because I had the wrong Identifier. I think I must have left the entitlement and the offering attached because when I go to offerings and look at the packages attached, it’s still there, kind of. It shows up in the list but it’s greyed out and not selectable. I think that somebody at the system level of RevenueCat needs to look at this.
I’m setting up RevenueCat for the first time and have come across a handful of documentation bugs that I’d like to report. What’s the best place to report them?
Hi.I have used the Revenuecat extension for firebase for a while, but have not found the use of it as I cant see custom claims in the idTokenResult.I want to use custom claims to only allow users with subscription to upload files and then use this custom claims on firestore rules instead of only checking permission inside the application.I have configured the extension in revenuecat and enabled custom claims in the extension:Should custom claims be set in Firebase Auth with the user's active entitlements? DescriptionENABLEDBut when i fetch the entitlements in application, i only get theese:user?.getIdTokenResult(true).then((value) => print(value));{ "firebase":{ "identities":{ "email":[ "x" ] }, "sign_in_provider":"password" }, "user_id":"x", "aud":"x-app", "exp":"x", "iat":"x", "iss":"x", "sub":"x", "email":"x", "email_verified":true, "auth_time":"x"}Any suggestions, or cant revenuecat set custom claims that i can use
I have setup revenue cat in my KMP app with the paywall UI and running into an issue on the android app where only the default template for the paywall is being displayed due to the following error: “Displaying default template because paywall is missing for offering {my_offering_id}“ I tried even just making a basic template from scratch on the website wondering if maybe one of the templates I picked wasn’t supported on KMP. I have looked at the offering and it looks like there is a paywall configured for the offering so not quite sure what I'm doing wrong or if the sdk on compose multiplatform doesn't really support this? Any help would be appreciated. purchases-kmp = "1.4.0+13.16.2"purchases-common = "13.16.2"purchases-core = { module = "com.revenuecat.purchases:purchases-kmp-core", version.ref = "purchases-kmp" }purchases-datetime = { module = "com.revenuecat.purchases:purchases-kmp-datetime", version.ref = "purchases-kmp" }purchases-result = { module = "com.revenuecat.purchases:
I just finished my implementation of RevenueCat in my Flutter app. People can buy premium version to turn off ads. They pay once and then they will never see the ads.I just tried it with the test card. And the purchase shows up under Customers in the Play Console - but not in RevenueCat. I tried refunding in Play Console and clicked the revoke entitlement box. But seems like no mate what I do, I still have the entitlement in the app. I purchase like this: final customerInfo = await Purchases.purchaseStoreProduct(widget.storeProduct); final adsFreeEntitlement = customerInfo.entitlements.all['remove_ads']; if (adsFreeEntitlement != null && adsFreeEntitlement.isActive) { await _checkPremiumStatus(); }And I have a provider that checks the premium status like this:Future<void> checkPremiumStatus() async { try { final customerInfo = await Purchases.getCustomerInfo(); final entitlements = customerInfo.entitlements.active.values; _hasPremium
I am developing an application in Kotlin with Jetpack Compose and implementing the code to retrieve subscription offers, which include three different plans.I have uploaded the app to Google Play Store in production to test its functionality on a real device. However, when trying to fetch the products, an error occurs, even though the configuration appears to be correct.@HiltViewModelclass PurchasesViewModel @Inject constructor() : ViewModel() { var informationState: InformationUiState by mutableStateOf(InformationUiState.Hidden()) private set var offeringState: Offering? by mutableStateOf(null) private set var selectedPackageState: Package? by mutableStateOf(null) private set init { loadOfferings() } private fun loadOfferings() { Purchases.sharedInstance.getOfferingsWith( onSuccess = { offerings -> val offering: Offering? = offerings.current offeringState = offering selected
Want to launch the paywall as a fragment or a view, so i can customize the width and the hight of the paywall and view it properly on tablet Any help, Thanks!
Hi all, First post here, so apologies if it is a dumb question! I am using RevCat for my Thunkable (No Code) app. I have connected my Stripe account with RevCat and created an app. (Img below)When following documentation provided by RevCat/Thunkable (In-App Purchase Blocks (with RevenueCat) | Thunkable Docs), it says I should have an IOS and Android API key. However, I seem to only have one API key for the app, seen in the image. Why is this? Do i need an IOS/Android API key? How can I get one? Many thanks, :)
How to set up the free trial offer in Flutter and Google Play? In my Google Play Store Console, I have setup the base plan. I have then setup a trial 7 day offer. The offer is now separate from the base ID. When I use the base ID for my product offerings, it doesn’t automatically grab the Google Play offer. How do you implement this, is there a partial example to follow?From previous post: I don’t have a full example, but sharing some parts of the code to see if it helps (let me know if it doesn’t).The flutter repository has a sample app called magic weather with a paywall → https://github.com/RevenueCat/purchases-flutter/blob/main/revenuecat_examples/MagicWeather/lib/src/views/paywall.dartIt gets the store product from the available offering and uses it to render the paywall → https://github.com/RevenueCat/purchases-flutter/blob/main/revenuecat_examples/MagicWeather/lib/src/views/paywall.dart#L67-L79You can use `final freeOffer = storeProduct.subscriptionOptions?.firstWhere((option) =
Hi,Apple have rejected my use of an auto renewing subscription under:“Guideline 3.1.2 - Business - Payments - Subscriptions – Your app uses auto-renewing subscriptions, but it is not an appropriate use of the service. Specifically, the in-app purchase products only unlock features.”I am appealing this on the grounds that dozens of other similar apps in the same category also use auto renewing subscriptions. However, I don’t expect the appeal to succeed, and I will have to use a non renewing subscription.Non renewing subscriptions seem to have far less support in app store connect. They don’t even allow configuration of a time period – the developer has to handle this.The revenu-cat SDK also seem to have very little support for non renewing subscriptions. They aren’t supported in an entitlement, so again – the developer needs to handle this.Does revenue cat have example code to show how I can do this? I assume I need to somehow get non renewing subscriptions that the user has bought and
Hello,I am testing purchases in a sandbox environment and I don’t understand one thing (is this expected behavior ?) this is IOS app written in swift, using firebase for authenticationstep1: A new user opens the app and chooses to sign in via Apple account (provided by firebase auth)step2: They are presented with a paywall, they make the purchase and continue using the service.step3: They press “logout” which triggers firebase auth sign out andPurchases.shared.logOut { custInfo, err in if let err = err { print("Error while logging out revenuecat: \(err.localizedDescription)") } else { print("Log out successful from revcat and firebase") completion(nil) } }step4: The user logs in again via the same apple accountstep5: The user is presented with a paywall again, even though the purchase was already made for this account.I am setting the user’s ID after logging in to the fireba
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.