Discussion and help from anything related to RevenueCat.
Recently active
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?
Hey everyone,I’m experiencing a serious issue with RevenueCat that has been affecting my app's users and revenue. I submitted a support ticket over three weeks ago, got one generic response that repeated what I had already answered, and after clarifying, I’ve been completely ignored.Since then, I opened a second ticket after two weeks of silence, but that one has also been ignored for another week. I’ve been nothing but polite and professional, in the second ticket I admit, bit frustrated, yet I’m getting zero support for a major problem that is actively losing me customers.The issue:🚨 Anonymous IDs are overwriting user IDs, causing incomplete anonymous webhook data sent to backend and lost purchases.🚨 This means users never recieve Premiums because I can’t pair it with their accountsThis is obviously a critical bug, and I have provided full details, code snippets, and even possible reasons in my tickets, yet I am still not getting any help.I’m incredibly frustrated. Has anyone else
Sorry for asking this question here, but we haven’t had much luck over the SDK forum. We are still getting the “The product is not available for purchase” when attempting to subscribe on Android when using the React Native package. Initially I suspected there may be some kind of latency associated with the setup, but that doesn’t appear to be the case. Here’s a list of what we’ve checked and the current set up:The app is publicly rolled out on a production track The package name in RevenueCat matches that in our Gradle build The product identifiers match those in Google Play Console The subscriptions are active in Google Play ConsoleSet up on the Google side of things seems to be fine, as the Play Store listing is correctly pulling in our subscription packages. Here are screenshots to confirm the above:Subscriptions in GPC showing as activeApp is available and rolled out in productionPlay Store listing clearly recognises IAPsIdentifiers in RevenueCat match those in the Play ConsolePack
Hi all,My iOS apps are getting rejected more and more often because of “Guideline 2.1 - Performance - App Completeness” where they claim they do not find the submitted new subscription in the submitted binary.This is an interesting take because:I cannot put the new subscription in my RevenueCat default offering because it is not approved yet - so anybody who downloads the app now would not see it.But if I dont put the new subscription in my default offering obviously the App Review team will not see it during review. What would be the best practice to introduce new subscriptions, so it does not mess up the paywall for the existing users but also the App Review team sees it in the app. How you usually do it? (Depending on the paywall and the products in the default offering, you cannot really put the new subscription there before it got approved. For example if I have only 1 subscription product in my default offering, etc)(Also sometimes you just want to submit a new subscription to b
Hello,I am testing in app subscriptions in my app. Actually it’s been working really fine till today. I cancel and restart muy subscription many times to test the features. Today when i try to subscribe to app i have this message below;PurchasesError(code=PurchaseInvalidError, underlyingErrorMessage=Error updating purchases. DebugMessage: Expired Product details. Please fetch product details again and use it to retry the call.. ErrorCode: DEVELOPER_ERROR., message='One or more of the arguments provided are invalid.') I am fetching product informations correctly (like price ...etc). What should i do?
Hi,I have some questions around the behavior of revenue cat with the stripe integration. With “track new purchases” will it always process new subscriptions even when the product id isn’t already defined in revenue cat? Additionally what are the behaviors for the other events when the product id or transaction id doesn’t exist on revenue cat?
Hey I have 2 builds of my app (different bundle id’s), production and staging. In appstore connect, I only have the production app, so ive made my IAP’s there and when i use revenuecat with the bundle id set to production, it works with the production build app, all good!However, when I want to develop on staging, with the staging app, i use the staging instance of revenue cat (different project with the other bundle id)...but this one cant pull data from appstoreconnect...because the bundle id’s are different.How am i meant to pull IAP’s into my staging app? can i use my production app IAP’s in appstore connect with my staging app? do i need to make a staging app in appstore connect with its own IAP’s? what are the implications of this if so?Thanks for some help on how to handle this setup!
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
I'm finishing my FlutterFlow app and want to protect content based on user subscriptions. I'll handle the protection with Supabase since there are certain situations where blocked content doesn't depend on whether the user is paying or not.To do this, I'll use webhooks to send RevenueCat changes to Supabase. The only thing I need to know is how RevenueCat registers users. Researching online, I found the following:Status: Active / period_type: Normal, Promotional, Intro, TrialStatus: Expired / period_type: Normal, Promotional, Intro, TrialStatus: Non-subscriptionI also need to know if these words are registered with the first letter capitalized or not.I'm asking this because in test environments I can't see how a real user behaves.Thanks
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.