Get help with your SDK implementation.
Recently active
I am encountering an issue with a prepaid subscription product I have added to Google Play Console, which is not auto-renewing. I have also added this product to the RevenueCat dashboard. However, when I check the offering in my Flutter code, it appears to be empty.Interestingly, if I create an auto-renewing subscription product, it works as expected. I would appreciate any guidance or suggestions on how to resolve this issue with the prepaid subscription product.
Hi,I'm working with Flutter and migrating from Purchases.getOfferings to Purchases.getCurrentOfferingForPlacement.When running on Android, it doesn't return any data.On iOS, it works perfectly fine. Previously, when using Purchases.getOfferings, both Android and iOS worked perfectly fine.I'm using purchases_flutter: ^7.0.1.Has anyone encountered this issue? I’d appreciate any suggestions on how to resolve it.
We are offering the same subscription at different price levels through different subscriptions in Google Play.So instead of updating prices of a single subscription by country we have the same subscription at different price levels available in certain countries only.RC only allows one product per package, so we have to set up dynamic package selection in our code.We are wondering what data we retrieve from RC based on the user requesting an offering with multiple packages in their country.For the offering, when we explicitly request a package / store product that is not available in the user’s country will it return null or will it resolve?Currently we are getting mixed results from the api, but are not sure if some are just caused by some subscriptions being available to fetch for RC and others’s not bc they have been created at different times - thus this post.
Is it possible for a paywall (SwiftUI) to show introductory / trial offers? I’ve browsed through documentation and the RC API. This seems like such a popular request I’m surprised that this is so hard to find.
For .NET MAUI developers that would like to use Android and iOS RevenueCat functionality we have created a wrapper that is really easy to usehttps://github.com/Kebechet/Maui.RevenueCat.InAppBilling https://www.nuget.org/packages/Kebechet.Maui.RevenueCat.InAppBilling/ The wrapper serves as an abstraction for both platforms and abstracts away the need for you to use platform-specific code. Bindings used by the wrapper are:Android: https://github.com/Kebechet/Maui.RevenueCat.InAppBilling/tree/main/src/Maui.RevenueCat.AndroidiOS: https://github.com/Kebechet/Maui.RevenueCat.InAppBilling/tree/main/src/Maui.RevenueCat.iOS This project was created because of the mobile app we created and thus it will be supported as long as the app itself.
Lately, I’ve been getting more messages from users where fetching offers from RC does not work.They are getting the error (on Android):Unable to resolve host "api.revenuecat.com": No address associated with hostnameCode: 10(Error performing request.).Is this ALWAYS related to the user’s devices or network?What the best way to help users getting this error?Cheers,Chris
Hello!I am moving from my Stripe Web PayLink implementation to Revenue Cat. I want to have everything managed my RevenueCat.I have create an entire and simple Web PayLink configuration that duplicate (or similar to) the one I have on Stripe.However, just this no-code implementation is erroneous.The error code returned is: 16. The error is trigger just right after I entered / confirmed the billing email address.My PayWall address, where 1 is the user id, is the following:https://pay.rev.cat/yhhjrzrccqdonyxj/1 Screenshot of the error:Thank you!
My app was recently rejected during review due to missing currency symbols in the subscription pricing. I display the price string directly from the RevenueCat SDK, which should fetch details from the Play Store API. Previously, my app was rejected because the paywall wasn't loading correctly. In my appeal to the review team, I explained that this issue can occur when users aren't logged into the Play Store or are using an outdated version. While they approved that appeal, I received this new rejection upon resubmission. I'm concerned that another rejection could lead to app suspension.
Hi everyone,I’ve been trying to wrap my head around subscription management across different devices and Apple IDs but am struggling to fully understand how it works in certain scenarios. I’m new to managing subscriptions and would appreciate any guidance or insights.Here’s the scenario:General ContextI have an app where users can:Purchase subscriptions. Log in to their accounts via the app or web. Access premium features once subscribed.Let’s break this into a few cases to illustrate the challenges I’m facing:Case 1: Same Apple ID, Different DevicesDevice A: A user (let’s call them User A) installs the app, signs up, and purchases a paid plan using Apple ID A. User A can log in with their credentials on Device A (or web) and access premium features without any issues. Device B: User A logs in to their account on a second device (Device B) using the same credentials. Here’s the problem: When I test this in a sandbox environment and try to upgrade the subscription from Device B, the
My app offers an in app product which can be purchased multiple times but if the user have already purchased once i’m getting following error:`Ignoring purchase request for already subscribed package`I’ve set the product to Consumable in Revenue Cat Also set the following tick mark in google play console: Note that this is a lifetime product i don’t charge on monthly or yearly bases.Ps:i’m using paywall template. now tell me that do i need to write my own paywall screen in Jetpack Compose or some configuration changes will fix this?
I'm facing a challenge with managing trial offers for anonymous users on new devices The ProblemRevenueCat’s checkTrialOrIntroductoryEligibility is iOS-only, so I’ve built a workaround using allPurchasedProductIdentifiers to determine trial eligibility. It works like this: const customerInfo = (await Purchases.getCustomerInfo()).customerInfo;const numPurchases = customerInfo.allPurchasedProductIdentifiers.length;if (numPurchases > 0) { setShowTrialOffer(false);} This works as long as the user stays on the same device because RevenueCat caches the Anonymous ID. However, if the user:Starts a free trial Cancels the trial before it ends Deletes and reinstalls the app (or switches devices)RevenueCat creates a new Anonymous ID when the user reopens the app. As a result, allPurchasedProductIdentifiers will be empty. This allows the user to start another free trial, repeating the process indefinitely. Potential Solution: syncPurchasesCalling restorePurchases could prevent this, but it may
I'm building a web to app funnel that transitions users from my web app to my iOS app, and I'm running into a challenge with purchase synchronization. Currently, I have two separate RevenueCat projects:Web Purchases: Managed under RevenueCat Billing with its own API key. iOS App: Managed under RevenueCat iOS with a separate API key.When a user completes a purchase on the web, I want to ensure that once they transition to the iOS app, their entitlements (or purchase status) are correctly recognized and loaded.My Questions: Is it possible to connect or sync the purchase data between these two RevenueCat projects? If so, what’s the recommended approach to ensure that a web purchase reflects properly in the iOS app? Are there best practices or workarounds for handling separate API keys and project configurations when implementing a web-to-app purchase funnel? For example, can I share user identifiers or purchase tokens between the two projects? Has anyone implemented a similar setup? I
Hey guys, it would be awesome to get a video background in paywalls v2, what do people think?
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
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.
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 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
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,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
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?
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 |
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.