Discussion and help from anything related to RevenueCat.
Recently active
Here’s my scenario:I would like for our users to be able to purchase a course (one-time, non-consumable purchase), and with their purchase they get a certain number of free months of a premium subscription for free. I’m sure that we can achieve the free months with a promo code. Ideally, the subscription would become auto-renewing after the free period has expired, but if that’s not possible, it would be okay to just have it expire, and then we could prompt users to renew it inside the app.The question is: how can we enable the user to essentially purchase both of these products with only one transaction?TIA!P.S. The app is being built in React Native for both iOS and Android, so solutions should ideally work with both the Apple and Google Play stores.
I’m working on integrating rc to my WebRTC signaling server and it’s hard. Last evening, I deleted all the users from revenuecat and flushed the server’s db. This morning I subscribed and got an event with the userId from yesterday 🪦 I’m using 💯capacitor-purchases 💯 but I don’t believe it has a cache.Are all caches disabled for sandbox users?
I have an iOS app which uses the RevenueCat Swift SDK and an web app which uses Stripe. Both apps are powered by Firebase as the backend. I want to sync the subscriptions between them. I installed Firebase extensions for RevenueCat and Stripe. Both extensions set custom authentication claims in the user’s access token. Is that a good way to sync purchases?Are there any other easy ways to sync the purchases? (by easy I mean little or zero backend work).Another option I’m exploring is to setup a listener for user document in Firestore, which is updated by both the extensions (RevenueCat and Stripe). So when any changes happen to that document, I can update the subscription info in the apps. PS: Actually, having to write backend code to sync purchases between web and iOS makes me think the purpose of using RevenueCat is lost.
I’m getting a “The receipt is missing” purchase error when testing my app using the Designed for iPad target on my Mac.I signed in using my sandbox account, the dialog showed I was using the Sandbox server, it said I was all set, but the purchase fails.
Some banks put an extra step in the purchase flow to verify the transaction with a banking app. We have had a report that our app doesn’t seem to work when unlocking content via an in-app purchase when this verification step happens. We use RevenueCat Purchases SDK v3 at the moment on iOS.The same issue was reported in this thread but there’s no public answer.This has been reported by a customer and I don’t know how to test or reproduce this.From the customer:I’ve been onto Apple twice and even purchased an iTunes voucher and it has still not resolved the issue. Apple have advised that it is a problem with the app and not Apple which I can agree with. All the payment information is fine, there is a credit on the account but when we go to purchase the app it takes us to the screen asking us to approve the purchase in the mobile banking app. The request is approved in the banking app but when we go back to the app screen it simply will not let us click on the button saying ‘I have approv
I’m using expo with EAS. Both in production and expo it throws errors saying the Purchase Class is null and thus no functions exist on it. My IDE says it the class is imported and i can call the functions. Typescript says everything is fine. Can someone help me?I installed the react-native-purchases package multiple times and cleared Caches as well.
I am building an iOS app, I use RevenueCat for my in-app-purchase feature. In RevenueCat dashboard, it shows my monthly active users and my active subscriber, I want to hit the same api and display these informations in my iOS app, dose RevenueCat provide such an API for us to use or we are not allowed to use these information outside of the dashborad?
Hey RC community could someone please tell me the very Best way to check for an active subscription ?My Current implementation is customerInfo.entitlements.active.isNotEmptyat One Point my implementation was listening to the expiration datecustomerInfo.latestExpirationDate.then added 3 Days to it , which would give the user at least 3 days to have premium service, should in case there’s subscription verification delay from RC database, I implemented this because I have noticed that sometimes when I Hot Restart my App, 1 out of 50 times it loses Subscription and then it regain after another hot restart , this mostly happened when its time for the Sandbox to renew the subscription, by adding a Day or more to the current subscription latestExpirationDate. it give a lot of room for the server to correct itself and not make customer lose premium service.I don't know if this behavior only exist in debug mode. could someone please tell me, if I should be be worried about this in production
I previously added and enabled the Google Play Android Developer API to a Google project I created. I also created a service account and correctly set the permissions for app and financial access. However, I'm experiencing errors related to the Purchase API, and I'm unable to proceed with my next steps.Has anybody else had issue like this and managed to resolve them?Thanks :)
I experience a problem when testing purchases on a physical iPhone. i.e. showing the user subscription status for subscriptions with promo offer. While testing on the simulator the expiration date for entitlement with promo period was as expected - 7 days plus from the date of purchase (1 week free trial). But when I switched to testing on a physical device I got some issues with my code not working correctly. I’ve managed to refactor methods for showing offering details on my Paywall and the purchase of subscriptions with promo period. in “Purchases.shared.getOfferings” method changed from package.storeProduct.introductoryDiscount to package.storeProduct.discounts.first because otherwise it was not showing this 1-week free trial period. in purchasing: before performing purchase, I check if there is a discount available or not, and if available - make purchase with this method: Purchases.shared.purchase(package: package, promotionalOffer: promoOffer) { (transaction, customerInfo, erro
How to get current app version in Webhook Event and GET /subscriber REST API?
We have a problem where after applying a 20% / 30% discount on a product we do not fall within a price tier in Apple. For example we have 1 consumable product that is priced at £79.99. We offer 20% discount code’s to our users so we came up with a workaround to create a new product in Apple with a price of £63.99. i.e. 20% off £79.99. However we have come into an issue as Apple does not offer a price tier of £63.99. The solution we came up with, was to create a a new product with the value of £8.99 and allow the user to buy 8 of these products at the same time i.e. that would add up to £63.99. But from looking at the RevenueCat `purchaseProduct` API in React Native it does not allow you to set a quantity. Do you know if there is another way of achieving this using RevenueCat or even better, a way of using a custom price for a product in iOS?
Hi, we are getting a lot of "None of the products registered in the RevenueCat dashboard could be fetched from the Play Store" errors being logged in our app, but they happen intermittently and with no visible pattern.We have checked our whole setup and everything is correctly configured, and it also works fine in all the devices we have tried on. All google products linked in RC console show Store Status Ok .Is it possible that this error gets triggered when something else happens besides a bad RC configuration? Can you convert it to a different one, like unknown error? We usually filter those out, because there is nothing we can do. But we can't ignore an error that may point to a config error.Thank you
I am new and am testing this Framwork using weekly, monthly, yearly subscriptions.I have followed the whole document which in great detail indicates how to set up the Apple Store and Google Play.As code I am using the one from the example provided for Flutter developers.With Apple Store everything works, while (with the same code) with Google Play I get the error message: "The requested item is not available for purchase".But in the Google Play store are all "active" subscriptions.In RevenueCat the Entitlements, Offerings, Products are regularly configured.I just can't figure out where I may have gone wrong as I have followed all the steps and am using the code provided as an example. Debug Console:V/AudioManager( 3198): playSoundEffect effectType: 0 V/AudioManager( 3198): querySoundEffectsEnabled... I/flutter ( 3198): &&&&&&&&&&&&& purchase info are: Package{identifier: $rc_weekly, packageType: PackageType.weekly, product: Produc
I have two products with prices in Rs. 359 and Rs. 1079 in my Google Play Console but whenever I am using the SDK in my Flutter app, I am getting the prices as Rs. 360 and Rs. 1100. Why is this?
Hello, Using func isProGranted(customer: CustomerInfo) -> Bool { if let entitlement = customer.entitlements["PRO"] { return entitlement.isActive } return false }In the Delegate Callback extension SubscriptionViewModel:PurchasesDelegate { func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) { self.isPRO = manager.isProGranted(customer: customerInfo) }}The problem is, it returns true when we Cancel Subscription or when it is automatically expired
Some context I am creating an application that already has an existing web app. The web apps payments are done via Stripe. The mobile app I am building will have payments done via Revenuecat. I am setting a property on my user object to let me know which platform the user has used in order to pay for a subscription. Why am I doing this?If they have payed using stripe on web then I need to let them have access to all premium features on the mobile app. They should not have to pay for a subscription on the mobile app as well. Stripe makes this very easy with their Webhooks. When a user subscribes, a Webhook event gets sent to the backend that tells the user object to update the subscriptionPlatform to “web”. This way I know that the user has subscribed on web, should get access to all premium features on mobile too without duplicate subscribing, and should be directed to the web app to handle anything to do with their subscription. Stripe also allows all of this to be tested in developme
Hi,I’m currently trying to let users purchase an IAP on watchOS, but with the exact same code as on iOS (which works), I’m getting some errors (SDK version 4.2.1): 2022-04-21 14:05:00.526782+0200 Anime Manga Tracker Watch App WatchKit Extension[338:26944] [Purchases] - DEBUG: Make purchase called: purchase(sk1Product:payment:package:completion:)2022-04-21 14:05:00.532433+0200 Anime Manga Tracker Watch App WatchKit Extension[338:26944] [Purchases] - DEBUG: Purchasing product from package - com.xxxxx.xxxxx.xxxx in Offering XXXXX2022-04-21 14:05:00.534097+0200 Anime Manga Tracker Watch App WatchKit Extension[338:27113] [Purchases] - DEBUG: PaymentQueue updatedTransaction: com.xxxxx.xxxxx.xxxx 2000000012345678 () 2000000012345678 - 12022-04-21 14:05:00.553831+0200 Anime Manga Tracker Watch App WatchKit Extension[338:27113] [Purchases] - DEBUG: Unable to load receipt, ensure you are logged in to a valid Apple account.2022-04-21 14:05:00.554048+0200 Anime Manga Tracker Watch App WatchKi
Hi RevenueCat Community,I hope you're all doing well. I'm reaching out to seek assistance with some challenges we're facing while integrating RevenueCat into our mobile app. We would greatly appreciate any guidance or insights from the community. Here's a summary of the issues we're encountering: User Identifier Update: We have successfully implemented webhook integrations for subscription actions, but the user identifiers provided by RevenueCat are anonymous IDs. We need to associate these actions with specific users in our app. Is there any way to update the existing anonymous IDs of our current users to our preferred user IDs? This would help us maintain accurate correlations between subscription actions and user profiles. Subscription Cancellation Identification: Due to the anonymous IDs provided by RevenueCat, it's challenging for us to identify which user has cancelled their subscription when we receive webhook data on our server. Are there alternative methods or additional inf
I would like to have more than 2 offerings in my experiment. Is that possible? If not, can I create multiple experiments for one project
Hi all,I have noticed a number of apps in the iOS store that are able to show me how many active subscribers, by simply logging in. They can even display them on widgets! How are they able to get this number with me just logging in? Are they using some call in the REST API? I can’t seem to figure it out!Any information would be greatly appreciated as I am trying to make a small app to track my active count on my LaMetric clock.Many thanks,Dan
Hello everyone, we’ve been running various experiments with revenuecat for some time and finally I found myself quite confused as to how to interpret the results.Setup:Control: tier5 - has monthly and yearly subscription offeringsTreatment: tier6 - has a different monthly and yearly subscription offerings QuestionsWhy are all offerings mixed into both Control and Treatment arms? We clearly separate and would like to test tier5 vs tier6. Follow up: Why totals include offerings from a competing arm? E.g. Treatment arm (tier 6) is 820 in total and includes 14 yearly offerings from tier5?I’ve read through all the articles and discussions, but can’t really get it. Would really appreciate any insight here.
A Play store subscription with a 7 day free trial offer (active only for one region), is returning introductory price for other regions as well. Both the base plan and the offer are Backwards Compatible.
Hi all,When testing monthly subscriptions for an IOS app in Testflight, I have created 30+ test users via gmail accounts. Each time I have a new user create an account on my app and subscribe, the Sandbox data in Revenuecat switches all the Customer info to that new ID (uid in Firebase), including backdating activity. Is that expected behavior, or should each new account (aka new firebase UID) have it’s own identity in the Revenuecat Sandbox, so I can accurately test? Here is some example history for the current user. Does this look normal? I did have the user logout of their app for less than 24 hours but they did not “opt out” of renewal.Also see the transfer of the subscription. Is that how the testing works?
Hi, In order to conform with GDPR, when a user deletes his account, should we also delete the data populated in Firestore by the RevenueCat extension i.e data populated in the “events” and “customers” collections?For instance, I could easily delete “/customers/{app_user_ids}” documents but it gets tricky when I need to delete “/customers/{$RCAnonymousIDS}” documents because I would need to do a search in all these documents to target the ones that contain an “alias” to the app_user_id in question. Similarly, I would need to do the same for the “events” collection and i was wondering if I could avoid doing that and just not delete any of the data in “customers” and “events” collections and still comply with GDPR, could you please clarify? Br, Nader
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.