Discussion and help from anything related to RevenueCat.
Recently active
Hi,so I’m using the multi tier paywall template.However, I’m not satisfied that the currently subscribed tier has no indicator, that the user is already subscribed to that tier. Now I found that there has been a big update for custom paywalls and it looks really nice. But there is no component to build it with for multi tier? Do I have a design error in my app in general? Also thought about displaying the different tiers on a custom screen and then opening a paywall for each tier when pressed on it. But out of conversion and usability view this just is an extra step for the customer. What am I missing?
Hi, I’m trying to implement a subscription system with multiple tiers in a Unity cross-platform app.My concern is if there is a way where a user that has activated a subscription in a platform can upgrade the subscription from a different platform.I have also seen that there is a “managementUrl” that can be used to guide the user to the correct portal in case that he wants to manage a subscription, but I cannot find that url in the Unity Revenuecat SDK.
Been getting this error after adding the service account credential JSON, I’ve made sure that I followed the documentation: https://www.revenuecat.com/docs/creating-play-service-credentials but haven’t been able to resolve this.
I have an app that offers annual, monthly and lifetime subscriptions. They all access the same ‘premium’ entitlement. If a new in-app user account is created and I restore purchases, I am able to successfully transfer entitlements between users, provided that the parent App Store Sandbox account is the same. I’m using web-hooks, so whenever a ‘transfer’ event is fired, I can update my database to make sure it is in-sync with RevenueCat. I remove any subscription information from the ‘transferred_from’ user, and apply it to the ‘transferred_to’ user. This is working perfectly for restoring monthly and annual subscriptions. But there are issues for lifetime purchases. Purchase a lifetime subscription using App Store account ‘x’. Sign out of Sandbox account ‘x’, and sign into a completely new, unrelated Sandbox account ‘y’ with no purchase history. Create a new in-app account using the new Sandbox account. Call restorePurchases. I would expect that nothing should happen, since Sandbox
Let’s assume I change my Terms of Service.At app start, I prompt each user to accept the new terms. Users who reject the new terms shall be denied access to the app.How do I handle users with a paid auto-renewing subscription?Is there a way to cancel this subscription? Or prevent auto-renewal? It seems illegal to deny access to my app, but continue to charge them. Not sure if it’s relevant for this question, but I use react native.
I have a question about the syncPurchases function when I have two users of my app on one Apple Id. What happens when I call syncPurchases after then calling logIn with another App User Id? I know that the restorePurchases function throws an error that the receipt is already in use (if I set transfer behaviour to not transfer), but syncPurchases does not do that. In fact, it doesn't do anything and I don't know what exactly is going on. Is it safe to call syncPurchases when users sign in to the app? Not on every startup but while calling my backend sign in function.
Hi folks,In the {{ product.price_per_month }}/mo section in Paywall V2, the price data always stays in USD currency. even though I have localized paywall for countries, the currency section is not localized according to the prices and currencies in the countries. But when I select the subscription package in paywall and continue, the currency is localized without any problem in the last confirmation section. Where do you think the problem is coming from? If you want I can show you in detail with screenshots?(I am trying all process on real device in testflight).
I just made a change to my v2 Paywalls, and the badges that I have are no longer rendering their backgrounds. This was working fine today, until I made and published an unrelated change, so it seems something may have broken today. Everything looks fine when viewed in the online editor. Images below - the ‘33% OFF’ text is the badge - the text can barely be seen in the after, but the purple background is no longer there. Before: After:
I am pretty new to Revenuecat. Sorry if this problem is answered a hundred times, but I could not find a solution. Here is my problem:I do have an iOS app and have a paywall view. The user can either subscribe for a monthly or annual payment (I managed to set this up in App Store Connect and Revenuecat and this all works fine), or he can select a free trial for 14 days.I know, that I can set up a free trial in app store connect, but as far as I understand, this automatically will start a chargeable subscription, if he does not cancel before the end of the trial period. So in fact the free trial is part of subscription and the user has to choose a subscription method at the paywall. This seems not very appealing to me.I rather would like to say: “Click here and have a look”. When the user clicks ‘here’ then(!) the free trial period starts (without selecting a subscription method). During the free trial I can present a counter: ‘X days left’. After 14 days the user cannot access the cont
Hello all,I have implemented the Stripe payments on our website using WP Simple Pay https://wpsimplepay.com/ and I also have set up webhooks from Stripe to RevenueCat.Once I pay (in test mode) via our website, the subscription is registered in RevenueCat but obviously it’s not assigned to the user with the email in the payment form on our website. From the docs I understand that I need to send the token but it’s completely unclear how to implement this on out website. Any help will be appreciated!Thanks in advance!
We're currently testing the new Paywall v2 feature in our React Native frontend. Everything works as expected except for the badges. We've tried all possible configurations—rectangle, pill, image background, colored background, etc.—but none seem to render correctly. The discrepancy between the Paywall Editor and the actual rendered Paywall on iOS persists.Has anyone else encountered this issue? Any insights or workarounds would be greatly appreciated!Current versions:"react-native-purchases": "^8.6.1","react-native-purchases-ui": "^8.6.1"“react-native”: "0.76.7" "expo": "52.0.36"Attached is a screenshot of different approaches in the Paywall Editor preview and how it gets displayed on device.
What could be the reason that I cannot access my Google Play subscription’s free trial offer from the SDK by calling `aPackage.product.subscriptionOptions?.freeTrial`? It is always null.This is a new subscription product which I created after reading through your migration guide from 5.x -6.x. It was suggested there that I should create new subscription products, so I did. I used to have two products, one annual and one monthly. I created a new single subscription with 2 base plans and an annual which has the free trial offer. With the old setup and 5.x version this worked, but now I cannot see the free trial in the new base plan at all. Any help is appreciated. All base plans and the new offer are active in Play console and the products have been added to RC packages. Also this annual base plan looks to be “backwards compatible”.This happens with the latest 6.3.0 version of the purchases SDK.
We are trying to implement hard paywalls with the flutter SDK, not luck so far.We have tried: RevenueCatUI.presentPaywallIfNeeded()RevenueCatUI.presentPaywallAnd honesty WE don’t see a big difference between them.Any of you have found a workaround?If anyone is interested the app is called Petme.https://www.petme.social/ https://apps.apple.com/us/app/petme-social-with-your-pet/id1663635642 https://play.google.com/store/apps/details?id=com.zerosgroup.petme&pli=1
I am adding a new package to our default offerings. An awkward situation I ran into is that my released version is designed to show all packages under my offerings, so that even when I’m still developing and change the ui for the new package, users can already see the new package in the released version.Of course I can workaround this issue, change my code to not show all packages first → after that is released → develope my new package. I was wondering it makes sense to add developer mode to offerings, and wondering if other people share similar thoughts.
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
I am using TestFlight, in production because I’m testing with production iCloud data. If I make a subscription purchase through the RevenueCat paywall, the App Store recognizes the purchase and does not allow me to make a second purchase, but in the app, RevenueCat does not recognize that I have Premium status and the RevenueCat Sandbox purchases still shows zero users.
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?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.