Discussion and help from anything related to RevenueCat.
Recently active
Hello!Me and my team just realized that the event rc_initial_purchase_event that is saved on MixPanel with the integration is not sending information when a new subscription has been purchased or a lapsed user has resubscribed. This is critical because we are not saving any information of this to our main source of truth. Whats happening? We've lost months of information in MixPanel that we need. How can we solve this?Thanks in advance!
Hello,I have previously implemented RevenueCat subscriptions usingPurchases.shared.getOfferings { offerings, error in if let offer = offerings?.current, error == nil { currentOffering = offer }}I am now trying to show a different set of upgraded offerings if the specific user already has our base level subscription. I have reviewed the documentation for displaying packages, but there no examples on how to go from fetching a package and getting to a product for purchase. I have tried to integrate the following code: Purchases.shared.getOfferings { (offerings, error) inif let packages = offerings?.offering(identifier: "not the current offerings")?.package(identifier: "Monthly") {// Display packages for sale}}But I don’t know how to display packages, or select them for purchasing. I’ve tried to create a selectedPackage State variable write to it in the function, but that didn't work for me either. When I use the offerings.current code I can get my products to show up, but if try to fet
Hello,On my app, when the user taps the Purchase button, the prompt for login with Apple appears asking for password. If the user doesn't remember his AppleID password and has to look it up on another app, he will send my app to background and open another app to search for the password. As soon as he goes back to my app I have a PURCHASE_CANCELLED error, and he has to restart the process, taping the Purchase button again. Is there a way for RevenueCat to not cancel the purchase when app goes to background in the middle of purchase process?Thank you,
When creating a new entitlement and attaching it to existing products, active subscribers get the new entitlement as expected, but unfortunately this does not trigger any event for the configured webhook. Are there any plans to change this behaviour? For instance, having a new type of webhook event when the list of entitlements linked to a product changes, or when a user gets new entitlements outside of regular purchase/renewal events. To give a bit more context:We have multiple entitlements: each one unlocking its own feature/content in our app. We are currently adding a new feature which we want to only be available to paying users, so we need a new entitlement linked to some of our existing products. We also rely on a webhook to sync our internal database and keep track of what our users can access.To solve this we are thinking of querying the `/subscribers` endpoint for each of our active subscriber (after attaching the new entitlement) so we can get an updated list of entitlements
Most all of my subscription after trial activation go into Payment pending and are stuck there while my subscriptions stay active, over time they auto cancel for billing error.I am having the same issue but despite of checking for acknowledgement on the next app startup, the payment is still pending.RevenueCat(s), can I somehow manually call the Google billing api to send the ack back to the Google billing system? Does RevenueCat offer a call that I can make via the API or SDK? I saw this but it is not answering my question
Hi All,Trying to publish an app and got the following:Unsafe EncryptionYour app contains unsafe cryptographic encryption patterns. Please see this Google Help Center article for details. p0.e0.c Unfortunately got nothing else, no email, so just have to guess what code its refering to. Best guess is the key used to configure revenuecat for in-app purchase.configuration = PurchaseConfiguration('goog_********************************');They suggest using Jetpack (https://support.google.com/faqs/answer/9450925)I am however struggling to implement this in flutter. Does anyone have any example code/articles etc that could help?I suspect this will impact all apps that use a key within the app like revenuecat.Thanks
Hey all, I have a question for the wider community, as well as RevenueCat mods & contributors. I, like most people, who lean heavily on RC .. absolutely love the service. Not to mention it’s support, its amazing SDK and the hours/days/weeks it has saved me. As soon as I realised how important RC was for the development of my indie-app developer journey, I opted for the Starter plan.If I’m completely honest, I didn’t really know the difference between the Free and Starter .. it just felt like the obvious choice, and I was also sooooo far away from $1,000 MTR 😃 ** STOP PRESS **I’ve never reached the MTR threshold to require a RC payment .. but in the next month or two, I hope to do exactly that 🎉 back to my questionWhat are Starter plan customers doing, that I’m not ?Everything in Free plus charts, customer lists, webhooks, Slack integration, and up to 5 seats for your team I look at the Charts every now and again .. but most of the time the line looks the same as any other charts
Hey guys! I would like to share a problem to get some help.I have an app with Expo and I'm trying to integrate RevenueCat with the react-native-purchases lib. I'm not experiencing any problems with iOS, but when trying to get the products that have already been imported into the RevenueCat console and are active on the Google Play Console, I'm getting the error message: "The device or user is not allowed to make the purchase. "PS: I'm getting this error in production and I'm trying to get the products with "getProducts" as in the documentation.Thanks in advance for any help!
Hello, I have a customer who was charged once their trial ended, even though they had cancelled their subscription before the trial came to an end. Can you please help explain this?The RevenueCat messages are:Converted from a trial (8:41PM, 2023-05-10) Opted-out of renew (5:12PM, 2023-05-10) Started a trial (8:41PM, 2023-05-03)Thank you!Kris
Question on the use of originalApplicationVersion to determine if I should grandfather certain users into a free subscription.The docs say:The first date this entitlement was purchased. May be the same as the latest purchase date.Now, what if the app was previously purchased on the Apple App Store (iOS), not using RevenueCat and entitlements? I’ve only added RevenueCat in the most recent version, which has not yet gone live on the App Store. Will originalApplicationVersion still be populated with the correct build number when the user first purchased the app even if it was originally purchased without RevenueCat? (Also, that build number is in fact the build number, and not the version number, as in version 3.0 build 1234, correct?)
We've noticed that when a user subscribes with a free trial and cancels it (after the trial period), then subscribes again, our code doesn't log the successful purchase, even though RevenueCat does. This seems to only occur for subscriptions without a trial period, as our code only looks for an entitlement set up as a subscription with a trial period.We believe the issue lies with our code not accounting for subscriptions without a trial period: const purchaseMade = await Purchases.purchasePackage(the_package);if (typeof purchaseMade.productIdentifier !== "undefined") ... For some reason, this returns true when they subscribe with the free trial and false when they subscribe without it.Additionally, we're facing another issue with testing subscriptions after a trial ends effectively. We don't know how to do this without waiting for 3 days(introduction trial period). Do you know of a quicker way to test this?
I’m getting an issue opening any docs page, such as https://www.revenuecat.com/docs, https://www.revenuecat.com/docs/getting-started, or https://www.revenuecat.com/reference/revenuecat-rest-api.The page flashes with content for a second before turning white.Things I’ve tried:Multiple browsers Disabling browser cache The browser on my phone on data instead of WiFi Ensuring browser plugins like ad-block are disabled
Hey, We’re using RevenueCat in conjunction with a few other analytics/reporting tools. I’m trying to link iOS subscribers between RC and some of those other tools.What I’m trying to do is link an RC subscriber to their Apple SubscriberId (which we get when we download the subscriber report from AppStoreConnect).All I see in the RC webhook is a “transaction_id” but I’m not able to link that. Has anyone had success doing this type of link in the past?
I follow the documents https://www.revenuecat.com/docs/reactnative#option-1-react-native-packageto install the package react-native-purchases.When I run the project on Xcode I got the errors: Has anyone experienced that problem?
We want to integrate RC with OneSignal and are facing some questions we do not find clear answers in the documentation.(https://docs.revenuecat.com/docs/onesignal)The main issue is that OneSignal does not have a combined “User”. They only have “PlayerIds” targeting specific devices and channels.Our Users use the app on multiple devices and platforms. (iPhone, iPad, Mac)We use anonymous user ids for RC and when a user restores their purchases, RC is creating aliases to link the data together.When we set the $onesignalId with the SDK, it is a PlayerId, meant to target push notifications to one specific device. So RC Subscription Events are only set to this PlayerId with the API Integration.If a user is using multiple devices, he has multiple PlayerIds. But RC is only adding tags to the one set as $onesignalId.To use OneSignal Journeys, we need to set the externalUserId.We can use the originalAppId from RevenueCat here.Sadly there is no detailed documentation on how to use Journeys and Pu
My Flutter app crashed when get offerings. I use purchases_flutter: ^4.11.1Error:My Code;
I’m currently setup with “Transfer to new App User ID”for my“Transferring purchases seen on multiple App User IDs” option.Where should I be calling SyncProducts() that makes most sense?Should it be if I call getCustomerInfo after signing in and it comes back empty?If I do this, can I safely assume that I’ll never have to show the paywall screen and I can just display a waiting dialog until the new entitlements arrive in my listener?At the moment, I’m just calling SyncProducts after sign in but I would like to hold off from displaying the paywall if I’m certain that the purchases are going to get transferred.I could obviously just test this but as we all know, just because something SEEMS to be working, it doesn’t necessarily follow that it will consistently if the application runs contrary to convention.
I see with the new Developer API that we now have the ability to create products, entitlements, offerings, and packages. This is great, but I would really like to be able to also create a new app via the API. Also as part of this, I would need to then be able to get the public key for the newly created app in order to automate on my side. Are there any plans for adding the ability to create an app through the API in the near future?
Hi! Deep link clicks to apply custom promo codes isn’t working (cf screenshots) in Android. If my code is “BETA”, I’m using the link https://play.google.com/redeem?code=BETA as specified in your doc and in the google play doc. Inputing the same code, “BETA” here, manually in the payment prompt in my app works. I’ll add that deeplinks for single-use promo codes work (using the same link construction rule as for custom promo codes, so if my code is 123456789 the link https://play.google.com/redeem?code=123456789). Any idea how to make deeplinks for custom promo codes work? Best,Jane
Hi.I’m using iOS SDK.How often does CustomerInfo update from network (vs cache)? Can I influence the update frequency? Can I force a network update?Many thanks,
I’m upgrading an existing paid app to a yearly subscription model, and have followed this guide: https://www.revenuecat.com/blog/converting-a-paid-ios-app-to-subscriptionsand got everything set up within my app, tested it using a sandbox, and made sure that the entitlements are working ok when I subscribe.One thing I’m unsure about is that I want existing users (those with v1 of the app) to get a year’s free subscription, and then after that, have them go onto a reoccuring subscription.In RevenueCat, I’ve set up a package that has full access with a 14 day free trial (called “full”). I’m calling this code:func syncReceipts (completion: ((Purchases.PurchaserInfo?) -> Void)? = nil) { CompatibilityAccessManager.shared.syncReceiptIfNeededAndRegister( entitlements: [.init(entitlement: RevenueCat.Entitlements.full.rawValue, compatibleVersions:["1.0","1.0.1","1.0.2","1.1"])], completion: completion ) }func checkAccess(result: @escaping ((_ isActive: B
I have similar question like this one herehttps://github.com/RevenueCat/purchases-android/issues/82When using slow test card on Android in-app purchases all I get is purchase error with message='The payment is pending.'. Is there a way to get notified when transaction has been completed? If not, what options do we have, we can iterate through purchaserInfo.nonSubscriptionTransactions to get all in-app purchase?
Hello - thanks for reading! I have a slightly unique use case and am looking for guidance. Product: A service that allows users to upload a video and we create clips from that video that the user can then watch in the app. Goal: I want users to experience this service for free so they can understand and fully appreciate the value of it. Then on subsequent video uploads I want to charge them. Issue: I’m not aware of any way to discount/coupon the first In-app purchase and then charge the user for subsequent purchases. This is on iOS, and the product is a consumable product. Appreciate any help!Max
Hello, i came across a weird behavior using the offer code with url redirecting to app storeEnvironment: TestflightI was charged for the offer, and when it clicked to open my app, nothing happened and revenue cat did not track the purchaseI already call sync purchases when the user returns back to the appI was wondering if there is a time where the offer code redemption is not active yet and i call sync purchases in that time, or that maybe testflight does not track purchases, but i got charged, which is weird
Hey all! I’m researching different ways to do our next feature and I have some doubts about if RevenueCat can handle the following use case: We want to build a cashback feature with certain rules based on the app usage of the user in a given period of time. To be able to do that we need to know all the payments received in a given period of time to be able to calculate the amount of money to cashback and to whom.Is there a way to easily do that with RevenueCat? An example flow that might be enough: Every first of the month, we can download a .csv file with a list of events occurred in a given period (past month) including: userId - amount ($) - event (renewal/initial_purchase) - timestamp - duration (monthly, annual) - productId
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.