Discussion and help from anything related to RevenueCat.
Recently active
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
Is revenuecat like 1% additional commission from the stripe credit card commission rate? Just curious with the system
Hi guys. I make test purchases in the simulator in my application. for this, although I change the storefront value in xcode and select different countries, the prices are not localised. for example, my membership, which is 20 dollars for the US, is 20 yen for Japan. that is, while the currencies are localised, the price always remains 20 units without changing at all. i wonder if this problem is caused by testing in the simulator or I missed a place in the revenucat configuration.
I have had our revenuecat integration working for months, haven’t really had any issues. Capacitor SDK. On one app, I have a few thousand subscribers and I’m not aware of any issues. On this app, it’s much smaller, but I have 70 or so subscribers.I have one user who renewed on 1/22/25. He sent me a screenshot on his iphone, it shows the active subscription. The app won’t let him in though. Takes him to the subscribe page. Restore says ‘no active subscriptions’.Had him uninstall/reinstall/restore and same thing.How can I get his access working? I see 2 transactions on 1/22 in the RC app. I just use RC anonymous IDs, no way to identify the user via subscription on my end.Thoughts?
Is the following still required in my AndroidManifest.xml?<uses-permission android:name="com.android.vending.BILLING"/>the Flutter installation guide doesn’t mention it but I’m following a video which explicitly recommends it.It’s mentioned a couple of times in relation to react native.
I recently implemented RevenueCat in an existing app.I noticed that when a user makes any purchase through the RevenueCat SDK, the "Customer Profile" screen on the dashboard shows the purchase history (including consumable items) prior to the introduction of RevenueCat.How is this accomplished?In StoreKit 2, you cannot get the purchase history of consumable items by `Transaction.all` (for iOS 17 and below).Also, is there a way to retrieve past purchase history, including consumable items, for users who have not yet purchased anything after introducing RevenueCat?It appears that `Purchases.shared.customerInfo().nonSubscriptions` does not return a history of past purchases of consumable items for users who have not yet purchased anything after introducing RevenueCat.
Hey!I wanted to make sure I understand the recommended approach of handling in-app purchases.Let’s assume my app has only one app store in-app purchase that charges on per-month basis.The app itself will run on IOS and is written in swift.My current authentication flow is as follows:the user opens the app and can log in or register via firebase with: Apple Account, Google Account, regular email + password account.What I don’t really understand is:Should I set the revenue cat userID to the firebase user ID in this case?When I set the userID to firebase user ID will the subscription only be active for this single account that was used to log in? Is there already some implementation that returns or informs the app when user is signed in but his purchase (membership) expired? How can you implement a 7-day trial in this case? The purchase is made by an apple ID account, but the beneficiary is the actual account that was used to log in in this case? Is there some event that can notify the fi
Adding a simple “revenue for today” stat would massively improve revenue cat. I am able to get up to date 28 day revenue, so I don’t see why up to date revenue for today cannot be there. This feature could be a very valuable metric to have for marketing, particularly when you are trying to drive a team around targets.This simple feature would increase the value I can get from revenue cat quite significantly, and it seems ti me it would be an easy to add feature!Most of the time, the “charts” feature is 6 hours out of date, but very often when it says that it can be more like 9-10 hours out of date.
I have a flutter app which uses Revenuecat, and I wanted to also use Superwall for its paywalls. I have done the integration with the custom controller in the flutter app, and set up the integration in Revenuecats dashboard. The events are sent with no problem, but they are only being sent for one of the Superwall apps. So, in this case, I have used the Apple app server token, and the RC events are only received by the Superwall Apple app. When I have conversion of Android users, the RC billing events are not attributed correctly.It looks like the Superwall revenue tracking feature is done separately on each platform, with different API keys. But in revenuecat, the integration only allows for a single API token. Is there a way of overcoming this? Or is it a design flaw?
Hi,I have just gotten rejection from Apple because the IOS pop up sheet showed up once to subscribe and after subscription, the IOS payment pop up sheet showed up again which is twice. I have been able to replicate this in testflight and sandbox but I dont know how to solve this and go ahead.Can someone help please- It is so frustrating as it is Revenue cat prompting the sheet twice.
Hi, so i set up paywall of catrevenue to make things easier, but nothing easy for now. First, when i create the paywall i put an image on top. But i cant define what of the image should be shown, Its cropped and zoomed (for me) very randomly. The other issues im running into is that the Paywall is showing up when i Test it on my Iphone. On my Android Emulator it works
HelloI am developing an application with React Native Expo, but I am getting the error below. My configurations are complete, I was able to pull the products before and made the purchase. LOG Error fetching products: [Error: There is no singleton instance. Make sure you configure Purchases before trying to get the default instance. More info here: https://errors.rev.cat/configuring-sdk] React.useEffect(() => { Purchases.isConfigured().then((configured) => { if (!configured) { const resp = Purchases.configure({ apiKey: Platform.OS == "android" ? "goo******" : "ap/***********n" }); console.log("resp",resp) //undefined } else { fetchProducts() } }) }, []); const fetchProducts = async () => { try { const offerings = await Purchases.getOfferings(); const availableProducts = offerings.current?.availablePackages; setProducts(availableProducts |
Curious if react-native-purchases-ui is react-native-web supported, or not.
Hi, I cannot fetch offerings in Xcode, I set a NON Consumable IAP, and on product → store status there is a message: could not check Connection issue.Make sure the App Store Connect API credentials are configured properly.How can I handle this?
The dashboard only shows data from the last 28 days. I’ve applied the following filter, but the results don’t seem consistent. Is there another way to achieve this?
I’m using latest RC sdk in Android 7.2.7. , and I’m forcing my users to have portrait mode for the activity that contains my paywall, my surprise was that some users installed my app in a tablet and the view was in “landscape”, so the header (image is too big) and they can’t see the offers/scroll. tried to wrap the content under a Column and add `verticalScroll(rememberScrollState())` in compose, seems that “kinda” work, but you can see only one offer (seems that the RC Paywal it does not consider nested scrolling)also I tried for now using the footer only for lansdscape/Compat window size, but kinda the same, the button is not visible and the “restore” button is not visible, if I wrap under `verticalScroll` the app crash,Box( modifier = Modifier .fillMaxSize() .padding(paddingValues)) { val options = PaywallOptions.Builder( dismissRequest = { onNavigationClicked() }, )).build() if (windowSize.heightSizeClass == WindowHeightSizeClass.
Hello, I am showing PaywallDialog with Jetpack Compose in my Android project. I also did my localization operations from Paywall builder and saved it, but in the application it looks like the following
Hello guys when I try to use eas build i always got this error. :/ does anyone could help me
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.