Get help with your SDK implementation.
Recently active
Hello,I’m running into issues trying to add RevenueCat to my SwiftUI multiplatform project (iOS and macOS) using Xcode 15.2. I’ve tried adding the package via Xcode’s Swift Package Manager interface, but it stays stuck at “progress” without completing. I also tried integrating RevenueCat through CocoaPods, and while the pod appears to install, I still receive the following build error:No such module 'RevenueCat'I’ve tested multiple versions of RevenueCat, including the latest (5.16) and older releases like 4.0.0, 4.33.0, and 4.25.2, but the problem persists. I’ve also cleared DerivedData and performed clean builds to no avail.Does anyone have any insight into what might be going wrong? Are there known compatibility issues with multiplatform projects or Xcode 15.2? Any guidance would be much appreciated.Thanks!
My paywall layout overlaps with iOS’s top bar and this looks awful, why don’t you give an access to a wider options of starting a paywall view with ability to disable ignore safe area??
Can someone please give me some clarification on the following scenario regarding anonymous users and the restorePurchases method. I’ve been chasing my tail on this for a week.Here’s the scenario:My app lets users use and subscribe to the app anonymously. RevenueCat creates an anonymous App User ID, when the user first opens the app. When the user subscribes, that anonymous ID is linked to the purchase. Webhook events list this anonymous ID in both the app_user_id and original_app_user_id fields.Now, let's assume the user gets a new phone:They download and open the app, generating a new anonymous App User ID for the new device. The user clicks "Restore Purchases," and I call restorePurchases() from the SDK. The restorePurchases() method returns a CustomerInfo object containing an originalAppUserId field.My questions are:What value will be in the originalAppUserId field of the CustomerInfo object after the restore? The anonymous App User ID from the first device that originally purchase
There appears to be a problem created in part by Apple where in a multi-scene app such as a Catalyst app with multiple windows, the StoreKit UI sheets show in the wrong window which is quite problematic. The user flow doesn’t work right because they start a purchase in one window and the sheet appears in another which may be hidden. The challenge is that Apple introduces APIs to allow us to specify the correct scene - as well as SwiftUI modifiers to do this correctly for you - but as a user of RevenueCat it does not seem to be possible to use these without forking the RevenueCat SDK because Purchases is final and the internals are private. Please see this issue for details. I feel stuck by RevenueCat without a good solution for this problem in the app I’m about to ship on Mac. Github issue
I am using RevenueCatUI.presentPaywall to display Paywall on ANDROID, How I can close paywall by auto when user make Pruchases process, the Paywall close just if user click on X icon, I need to close it automatically by RevenueCatUI SDK
In my app I use the webhook from RevenueCat to keep my backend in sync with customer entitlements and enforce the entitlement check on every request from the app.I know that webhooks are async and there might be some lag, so what I do is check the database first for the active entitlement, and if it is not found or inactive, I hit the RC API as a fallback.My question is on the front end - in the React Native SDK, when the promise resolves on the purchasePackage() method, can we assume at that point everything is in sync between the App Store or Play Store and RevenueCat? Even if the first webhook were delayed a little, would I immediately find the user’s active entitlement via the API in my fallback check? Hopefully this makes sense.
Hi,Will there be any plan to add other currency and if yes will Malaysian Ringgit (MYR) be included in the update? Really hope you are guys will include MYR in the near future. We have a big event coming up in May this year. Hopefully you guys can include MYR in Web Billing before that.ThanksZulfadhli
Hi, I have a flutter app without auth.On Android some users that have changed their devices or reinitialized their device, complains that when they hit the restorePurchase button in the app, nothing is restored.But they are on the same google account with valid proof of purchase, receipts, that they emailed me. The transfer to the new app user id, is not happening it seems when we call the await Purchases.restorePurchases()My account setting is configured on “Transfer to new App User IDs”I have updated to the last version of the sdk, and it’s the same. Restore purchase isn’t working anymore.Could you please tell why and how to fix this ?Thanks
By using the following code, I can receive PurchasesDelegate callback, when user subscribes to a free trial plan.However, I am not able to receive PurchasesDelegate callback, when user cancels the free trial plan.class AppDelegate: UIResponder, UIApplicationDelegate { // https://www.revenuecat.com/docs/integrations/attribution/apple-search-ads // https://www.revenuecat.com/docs/integrations/attribution/facebook-ads#3-send-revenuecat-events-into-facebook-ads-manager private func initRevenueCat() { Purchases.configure(with: .init(withAPIKey: "appl_???") .with( purchasesAreCompletedBy: .myApp, storeKitVersion: .storeKit2 ) ) Purchases.shared.attribution.enableAdServicesAttributionTokenCollection() // Automatically collect the $idfa, $idfv, and $ip values Purchases.shared.attribution.collectDeviceIdentifiers() // REQUIRED: Set the Facebook anonymous Id Purchases.shared.a
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.
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.