Get help with anything related to RevenueCat.
Recently active
Hi there, i am newbie and it is my first time when i do putchase based stuff, please excuse me if i ask dummy questions, so i testing webhooks and i dont understand why expiration_at_ms is always todays date ? It should not be the final day of expiration date ( in this case 12 march ) ? Products has 1 month duration. And why my purchased_at_ms also shows 1 day before, actually i purchased 3-4 days ago. Is it all because SANDBOX env. or i do something wrong ? I am getting this response ( ss attached ) on my backend and related to this values i do some stuff.
I’m new to RevenueCat and this might just be impossible to do, so I figured I’d ask.I have an app published in iOS and Android.I have a situation in which I need to see when a given user bought my app in their respective platforms.This is not about an In-App purchase, but rather, the App itself.Can RevenueCat do that? It seems like the answer is no, since this seems to only handle InApp purchases and subscriptions, but I wanted to make sure.Can I, by using RevenueCat in my App, get the exact date and time when a user actually bought (or acquired) the App (not InApp/subscriptions) for the first time in the AppStore/PlayStore?It seems to me like this is just not possible on android, regardless of the framework or library that I use. On iOS It seems possible.Thanks
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?
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?
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’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 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!
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?
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!
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
I’m using “Transfer if no active subscriptions”, however, I’ve noticed if an anonymous user id calls `restorePurchase`, the anonymous can always transfer the subscriptions, no matter the subscription is active or not.Here’s the complete flow where the transfer happens even if there are active subscriptions:On device 1, user logs in and purchase subscription On device 2 with the same Google Play account signed in, anonymous user is not logged in, but taps the “restore purchase” button The subscription is now transferred to anonymous user However, in the following flow the “Transfer if no active subscriptions” works as expected:On device 1, user A logs in and purchase subscription On device 2 with the same Google Play account signed in, user B logs in and tap “restore purchase” button The restore failed due to `ReceiptAlreadyInUseError`In case anyone’s curious, the reason why we have a `restorePurchase` button even if user is signed out is that we support consumables.
I'm trying to sync customers in RevenueCat with our database.Requesting projects/{project_id}/customers does not return active_entitlements as mentioned in the documentation. Fetching customers one by one takes too long and results in hitting rate limits.I noticed a similar question, but it was closed without a response or comment: So, is this a bug, or is there missing documentation (e.g., missing expand parameters)?Is there any workaround, such as an endpoint that allows retrieving only customers with active entitlements?Thanks in advance, Sebastian
Hello,I have connected RevenueCat and Stripe, and I have added the following events: • customer.subscription.updated • customer.subscription.deleted • charge.refunded • invoice.updated • customer.subscription.created • checkout.session.completedI have also configured the Stripe Webhook Secret, and the connection is working properly. However, I’m facing an issue: the Product IDs remain in “No Status” and do not connect.
I’m testing my app and purchases with RevenueCat in sanbox mode and I’ve noticed that often after not using the app for about a day my subscription status will revert back to free mode. I’m using a boolean in a view controller to track subscription status and on launch call this function to update that bool @MainActor func updateCustomerInfo() async { do { let customerInfo = try await Purchases.shared.customerInfo() self.customerInfo = customerInfo // Check if user has pro access isPro = customerInfo.entitlements["Lectura Pro"]?.isActive == true } catch { self.error = error.localizedDescription } } Also at app launch in my delegate I try to init the RevenueCat config with firebase auth id, and if it’s not available i use anonymous id: if let user = Auth.auth().currentUser { Purchases.configure(withAPIKey: Secrets().revenueCatProjectKey, appUserID: user.uid) print("on app
I didn’t understand how to test the inApp purchases on a iOS simulator using Expo. I usually run my code withnpx expo run:ios I’ve created the subscription and certificate in XCode following the documentation: https://www.revenuecat.com/docs/apple-app-store#ios-14-only-testing-on-the-simulator Now I’m not sure how to build/run correctly the app.
I’ve updated my subscriptions/products in Google Play and restarted my app, but RevenueCat Purchases.getOfferings() never updates with updated titles, descriptions, or pricing. How do I bust the cache to get subscription/product updates?I have a Flutter app and am running the purchases_flutter: ^3.6.0 package.
Hello,I have been testing my in app purchase for a subscription through Testflight with my real Apple account. It uses the production sandbox environment, and so everything works as expected previously.Recently, Apple has made a change to the renewal subscription rate in this production sandbox environment mentioned here and in the Revenuecat blog post: https://developer.apple.com/help/app-store-connect/test-a-beta-version/subscription-renewal-rate-in-testflightEssentially, the renewal rate has changed from a few minutes to an entire day now. This is fine, but the documentation also says this renewal lasts a week. But it’s been over a week for me, and it continues to renew. I also have not found where I can go to turn off this subscription. Does anyone have an ideas how to resolve this? I’d like to it stop renewing.
In Flutter app, the paywall is loaded and working in debug mode. However, in release mode, the app crashes when opening the paywall. The error logs I get in release mode are as follows. What is the reason for this?FATAL EXCEPTION: mainE/AndroidRuntime(11634): Process: com.gualtech.zeriapp, PID: 11634E/AndroidRuntime(11634): java.lang.NullPointerException: Attempt to read from field 'long android.content.res.XmlBlock$Parser.mParseState' on a null object referenceE/AndroidRuntime(11634): at android.content.res.XmlBlock$Parser.getAttributeListValue(XmlBlock.java:385)E/AndroidRuntime(11634): at w0.a.a(SourceFile:1)E/AndroidRuntime(11634): at M0.c.b(SourceFile:38)E/AndroidRuntime(11634): at M0.c.c(SourceFile:85)
Hello! I’ve been having a hard time finding a definitive answer in Apple’s docs. As some of these offer code flows appear to only be fully testable in production, it’d be helpful to see if I can get an answer ahead of time.If we use RevenueCat’s recommended method for redeeming App Store offer codes - that is, creating a custom URL and linking to the App Store where the code is automatically redeemed, does anyone know if the code is exposed to the subscriber at any point in that flow?Is the offer code shown in the customer’s emailed receipt from the App Store?We are investigating to see if we can use offer codes to drive discounts in the App Store without exposing those codes to users. So if there is any part of this flow that might expose that code, we’d love to know.Thank you!
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.