Discussion and help from anything related to RevenueCat.
Recently active
Hello,How can I report on % of users crossgrading?For context we have a product that has a monthly, quarterly and an annual subscription. I can report on monthly churn, but what I am not sure about is how to calculate how many of those monthly users have not really churned but moved to a a quarterly or annual subscription. Thank you!!!
In the iOS SDK the `StoreTransaction` type has the `jwsRepresentation` field but it’s marked internal. So I can’t access it. I want this value so that I can send it to my server and verify the transaction with apple. Then our backend can run any necessary updates to the user it needs.Is there a reason this is marked internal whereas most of the other properties are public?
Hi all, I have configured all products/offerings within RevCat. Tested my Thunkable app in testflight mode with Sandbox and developer mode enabled. However no RevCat paywall is displayed. I am getting ‘New Customers’ within the RevCat overview page so something is happening, just unsure what, as the paywall is not visible upon a purchase. Anyone have any ideas? I have reached out to Thunkable and Apple. Many thanks :)
We are using Paddle for web subscriptions and aren’t sure how to link userIDs and sync status with RevenueCat. Is there a way we can post userIDs and subscription status to RevenueCat so that when the user logs in on iOS we know if they are subscribed or not. The reason I want to do it this way is because otherwise we’ll have to create a new layer on our backend that tracks subscription status for all users and we will need to check that instead of the RevenueCat SDK which kind of defeats the purpose. Otherwise, we could first check if they are RevenueCat subscribed then check our backend too - which would work I think. But isn’t there some web sdk for subscriptions?
I have the following code:``` Tab ("Passport", systemImage: "airplane.departure", value: "passport") { NavigationStack(path: $path) { if displayPaywall { PaywallView() .onPurchaseStarted({ package in print("Purchase started") }) .onPurchaseCompleted { customerInfo in self.displayPaywall = false print(customerInfo) } .onRestoreCompleted { customerInfo in self.displayPaywall = false print(customerInfo) } } else { ScanMRCView(path: $path) .environment(settingsStore) } } }```none of the callbacks und
Hello!Since a couple of days, the very useful bhttps://app.revenuecat.com/activity screen I could always use to see a few screens worth of transactions doesn’t work anymore?I can get it do display, but if I click on “older” to see the previous pages, the URL changes to what it should be (i.e. /activity+timestamp) but then it goes back to /overview?I’ve tried a couple of different browsers but no luck...
Hi there,this is kinda serious I think. The onPurchaseCompleted is not being called whenever I test in sandbox. Since this is the function recommended on the forum by other revenuecat staff, it kinda of shakes my confidence in RC unfortunately, especially when in other posts it was said “the team is investigating the issue”Could someone kindly help out? var body: some View { // This view immediately triggers RevenueCat's paywall presentation. PaywallView(displayCloseButton: false, performPurchase: nil, performRestore: nil) .onPurchaseCompleted { res in print("YAY! THANK YOU") print("res = \(res)") onPurchaseCompleted() } .onPurchaseFailure { error in print("purchase error \(error)") } .onRequestedDismissal { } } the `onPurchaseCompleted` and `onPurchaseFailure` are never called but `onRequestedDismissal` is.
Hi,I have an app using RevenueCat SDK for Capacitor. I try to simulate different errors when calling the purchasePackage function. I succeed to get some errors - see the image for the error when the package is not found. FYI: For each user, I pass the userID from my app when I call the configure function. My questions are:in this situation, does RC log the error somewhere in the dashboard or this should be done in my side? if we have the data in RC, can I get it using the REST API?
I have no idea where to go or what I’m even really looking at? Thanks for your help in advance.
Hi,Is there a way to manually trigger RevenueCat to charge my debit card immediately?For security reasons, I keep my debit card balance near zero. If I top it up but have to wait an uncertain number of days for RevenueCat to process the charge, other transactions might bring the balance back to zero before the charge goes through.I’d appreciate any guidance on how to ensure the charge happens right away.Thanks!
How do you handle In App Purchases with an PWA / Google Store ? I have integrated RevenueCat with my Android app, which is built using Angular and Capacitor. The same codebase is used for both the Android app and the web app. However, In-App Subscriptions do not work on the web version.From my understanding of Google Play Console policies, it’s not allowed to mention or link to external websites (like RevenueCat) where users can also purchase subscriptions, as this could potentially result in the app being banned from the store.How do others typically resolve this issue, especially when using RevenueCat for subscriptions in an app that also has a web version?
I am using the React Native package with RevenueCat, and everything is working as expected on iOS (thanks for your hard work on the great RN package, by the way).There is still an issue with Android though, and I have been struggling with it for a few days. Initially, I thought it was because I did not have a release published on a test track, but that has now been rectified (approved by Google) yesterday, and I’m still getting the “The product is not available for purchase” on Android.Things I have tried:Make sure the app is published on the “Closed Testing” track (it is): Ensure that both the app ID and SKUs for the products are the same (they are). Ensure subscriptions are active in GPC (they are): Does anyone know what else I can try, as it’s a bit annoying since the app is finished, but I’m blocked from testing.Thanks in advance for any help, and all the best for 2022!Ben.
Hi, I rely on RevenueCat to send start trial, trial converted, and other Track events to Customer.io (my CRM tool). Currently, I use RevenueCat’s Segment integration: RevenueCat sends the events to Segment, which forwards them to Customerio. I’m trying to cut out all Segment use cases in my tech stack because it doesn’t seem worth it (there are direct integrations in most cases). I made a post about this on SubClub. How do I replace this connection? Does RevenueCat have a direct integration with Customerio? I don’t see it in RevenueCat’s list of integrations. If RevenueCat doesn’t integrate directly with Customerio, can I use RevenueCat’s Webhooks to do this? So I could send the events via RevenueCat’s webhooks to my own webhook, then my webhook would integrate with Customerio? Does RevenueCat plan to release a direct integration with Customerio soon? If so, maybe I’ll leave the Segment connection in place for now, and replace it with the direct connection ASAP. Thanks! Toby
I’m curious, will the delegate fire after purchase on Paywall featurePurchases.shared.delegatefunc purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) {// }func showPaywall() { let controller = PaywallViewController() controller.modalPresentationStyle = .fullScreen controller.delegate = self present(controller, animated: true, completion: nil)}extension ViewController: PaywallViewControllerDelegate { public func paywallViewController(_ controller: PaywallViewController, didFinishPurchasingWith customerInfo: CustomerInfo) { print("test") }}
Hello,I’m trying to set the paywall dynamically inside of my app, and I have certain offers that do not yet have paywalls created.I was trying to create a fallback in this case, to prevent user error on our end, in the case we do not have a paywall setup for a specific offer, so that we dont present the user with a black paywall screen.I noticed there wasnt any event that triggers in this case that ` RevenueCatUI.PaywallError 0 ` fires.Wondering if there is a way to react to this error being fired, so I can handle it. Thanks
In the Xcode Simulator, I enter my sandbox email and password and press ok. To be clear, I use the same email and password to log into iCloud for this sandbox account.I get the following in the console. The Paywall is not dismissed and nothing else happens:Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=530 "(null)" UserInfo={NSUnderlyingError=0x600000cfe9a0 {Error Domain=AMSErrorDomain Code=100 "Authentication Failed The authentication failed." UserInfo={NSMultipleUnderlyingErrorsKey=( "Error Domain=AMSErrorDomain Code=2 \"Password reuse not available for account The account state does not support password reuse.\" UserInfo={NSDebugDescription=Password reuse not available for account The account state does not support password reuse., AMSDescription=Password reuse not available for account, AMSFailureReason=The account state does not support password reuse.}", "Error Domain=AMSErrorDomain Code=0 \"Authentication Failed Encountered an unrecognized authenti
Hello, I have an app now, and the subscription integration is working well on both Android and iOS. I want to implement discount codes for users because I plan to provide advertisers with codes so they can earn a percentage of the subscription fee.
Hi,I have two options in my mobile app: a subscription that includes access to all features and also grants an amount of tokens, and consumable tokens that only provide tokens.I understand that it’s best to manage the token balance in my backend. However, I want to ensure that if a user makes a restore, I can link them to the token balance I store in my backend and restore the correct amount of tokens (for example, if a user reinstalls the app or performs a factory reset, they get a new user ID, and I want the restore process to link them back to their old ID and token balance).I don’t have an authentication system, so I can’t rely on user login to track purchases.Alternatively, can I update the user’s token balance as they purchase and spend tokens using RevenueCat’s customer attributes? Then, when they restore purchases, can I retrieve this balance and update their token count accordingly?So what is the best practice to implement my case, and how should I structure it?Thanks!
Greetings, Initial purchase (Plus; our low tier) is successful. Upgrading (Pro; our high tier) is successful. Upon opening the paywall for Plus to perform a downgrade, it says WARN: User is already subscribed to this product. Ignoring Which is weird, since I have upgraded! Thought revenuecat would revoke the old entitlement and set it to unactive or delete it…. so I waited 5 minutes for it to expire (pre-set by xcode).. and when attempting to downgrade to plus once again, it initially shows the paywall and says it has been successfully purchased and will take an effective after the current (Pro) subscription has ended. Then immediately followed by this error:- [purchases] ERROR: � Product purchase for 'plus_1_year' failed with error:Error Domain=RevenueCat.ErrorCode Code=8 "The receipt is not valid. The purchased product was missing in the receipt. This is typically due to a bug in StoreKit."UserInfo={rc_backend_error_code=7712, rc_response_status_code=422,NSLocalizedDescription=The re
Hi RevenueCat Community,I’m currently developing a React Native app and using a custom paywall implementation. We’re now considering switching to the SDK’s paywall if one is configured for the user's current offering. However, we’ve encountered a challenge: the RevenueCat API response doesn’t seem to include an explicit flag or property indicating whether a paywall is configured for an offering. If showing the UI Paywall without a paywall configured, a default, rather bland screen is shown.At the moment, we rely on naming conventions (e.g., identifiers like "sandbox_no_paywall" vs. "sandbox_offer") and occasionally custom metadata fields, but this approach feels hacky and a bit fragile.I’m curious:Is there a built-in or recommended way within RevenueCat to detect whether a paywall is configured for an offering? Are there any best practices or plans to support a native flag (e.g., "hasPaywall": true) in the API response? If not, what do you recommend as the best approach to distinguish
Hi all,In flutter project, we are using the syncPurchases method to automatically sync transactions when users launch the app. However, we are encountering an issue where the login prompt always appears when calling syncPurchases in the sandbox environment. This issue was resolved when I created and logged with Apple Store sandbox account.The documentation mentions using syncPurchases instead of restorePurchases to perform a silent sync without triggering any prompts. Below is the code snippet we are implementing, which runs when the app launches. bool reloadData() async { try { await Purchases.syncPurchases(); await fetchProducts(); return true; } catch (e) { return false; } }I have the following questions:In what specific cases does calling syncPurchases trigger the login prompt? In the release version on the App Store (not sandbox), will calling syncPurchases still display the login prompt? Since this is an urgent matter, I hope the team can review and
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??
I installed Firebase extension and it worked in the past. Today, I found that firebase auth custom claims is not updated, which is likely due to fail in ext-firestore-revenuecat-purchases-handler function. So, I tried uninstall and re-install the extension, but unfortunately all the three methods below failed.Firebase console, Firebase CLI, Method described here, with project id updated in .firebaserc file. Also tried npm install, and removing node_modules and package-lock.json, npm install again.The main issue is: ext-firestore-revenuecat-purchases-handler function was not installed correctly. Below is the error message I got from Firebase console.Please advise.
The webhook notification will provide the transaction id. I could somehow fetch its details from a RevenueCat’s receipt end-point and match it against the webhook’s claims (since the request can be from anyone).Or it is an over-kill, and the shared Auth header should be sufficient?
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.