Learn more about RevenueCat and talk about it with the community.
Recently active
My app has a monthly subscription and a one-time IAP for access.Currently, if the user has a monthly subscription and chooses the one-time purchase later on, the monthly subscription does not cancel automatically and it will continue to bill the user the monthly sub until they cancel it. I was looking for a way to add a description to the native iOS confirmation sheet but that doesn’t look possible. I can add language in the paywall as well but that might look a bit messy but this seems to be the best option so far. I dont believe users can make IAP from settings or anywhere outside of the app itself right? How have folks communicated something like this to users?
Restoring purchases is a mechanism by which your user can restore their in-app purchases, re-activating any content that had previously been purchased from the same store account (Apple’s App Store or Google Play).By not including a method to restore purchases, users could lose access to existing purchases to which they are entitled. This isn’t ideal, so it is strongly recommended that you include some way for users to trigger the restoreTransactions method, even if you require all customers to create accounts.What happens when a user restores purchases?When a user restores purchases, the Purchases SDK syncs the user’s device receipt with the RevenueCat backend. The device receipt contains unique information about the user’s transactions so that RevenueCat is able to pair the transactions to an app user ID and then subsequently unlock the appropriate entitlements.RevenueCat offers a configurable option in an app’s settings to change the restore behavior in the event that a receipt has
Launching a brand new app (iOS) with 1 in-app purchase seems complicated.The issue is:I cannot set a default offering if the in-app purchase is still “Waiting for Review”. Then the paywall will display RevenueCatUI.PaywallError3. Solution: Get your in-app purchase approved. My in-app purchase won’t be approved by Apple if the Paywall is not properly displayed. Also, Apple won’t approve the purchase if the App cannot be approved. Solution: Get your paywall fixed. Here is what I got:@objc public var current: Offering? { guard let currentOfferingID = currentOfferingID else { return nil } return all[currentOfferingID]?.copyWith(targeting: self.targeting)}Will always return `nil` because there is no current offering marked as default (see point 2) in my dashboard. That means that if you use `PaywallView()` or `presentPaywallIfNeeded` where the default offering is pulled. Then no bueno.If you call for:Purchases.shared.getOfferings { offerings...The `offerings.all` array wil
HiI'm building a desktop application for macOS using Tauri .I need to integrate RevenueCat for in-app subscriptions with Apple App Store.I've been looking into the process, and it seems to involve bridging Rust with native macOS (Swift/Objective-C) RevenueCat SDKs via FFI, which I'm not familiar with.My main challenge is that I don't have experience with Rust's FFI, Swift, or Objective-C.Has anyone successfully integrated RevenueCat into a Tauri macOS application? If so, could you please share: Your recommended approach: Did you find a way to do this primarily from the Rust side (perhaps using an existing Rust crate or a simpler FFI pattern)? Or did you have to write a Swift/Objective-C wrapper? Any existing examples or boilerplate code: A minimal working example would be incredibly helpful. Alternative strategies: Are there any other ways to approach this integration that might be more accessible for someone without native macOS development experience?
I too encountered the issue with getOfferings not working on Android. It was baffling because the revenuecat configuration (offering > product > entitlement) was correct, and standalone api calls worked ok. All iOS tests worked fine, yet in Android I got errors. "There is an issue with your configuration. Check the underlying error for more details."and upon digging deeper into that message:“None of the products registered in the revenuecat dashboard can be found in the google play store” For me, the issue was that I was using the WRONG API KEY when initiating revenuecat in a given function. I was trying to be “too agnostic”. // I was feeding the iOS api key when initiating revcat, thinking it was a global API key. await Purchases.configure({ apiKey: revenueCatApiKey }); // Then of course the rest of code worked fine on iOS....const offerings = await Purchases.getOfferings();// But what I needed to do was initiate revenue cat with the platform specific API keys, found under Pla
Hello. I have read all the existing posts on this issue, but am still stuck.My Flutter app has been successfully processing purchases via RevCat for over a year, but following publishing the latest version of the app, iOS users are getting Error #23 when trying to purchase: “There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect”I have changed nothing in the app in the latest version relevant to this issue except increased the iOS deployment target version to 18.0.I have checked all the suggestions mentioned in this form posts (signed agreements, financial setup, correct API keys, etc.), all looks fine and has not changed.purchases_flutter version is 8.7.1The code that produces this error is: offerings = await Purchases.getOfferings();Please help me diagnose and solve this -- my users can no longer make purchases
Basically it works like this: When a user downloads the app, he immediately is given 7 days of premium access, for free without opt-in into a subscription or anything, just by default. Then after 7 days, you show him the paywall where the user can choose a a monthly or yearly offer, if he doesn't choose a subscription, he loses the premium access. You communicate all of this clearly upfront (the user also sees a banner in the app saying "5 days left"), so the users knows that he is in the "trial" period. Of course the advantage is that basically all users "enter" the trial phase, but the trial to paid conversion will obviously be lower. But in total the paid users should be more hopefully, if product-market fit is great.Anyone tried this out yet? You have data on how your download to paid conversion rate improved? By how much? Can someone recommend this strategy and back it up with data? That would help a lot! Thank you very much!!
I was getting this error when trying to fetch products: SERVICE_UNAVAILABLE: Error fetching products. An internal error occurred. Nothing happened when trying to initiate a purchase. After checking everything in the code and console, the fix was simple:🔑 The device was logged out of Google Play. Once I logged back into a Google account in the Play Store app, everything worked. Just sharing in case it helps someone else save time
Hello,We are currently utilizing a coin wallet system within our app. When a user makes a purchase from either Android or iOS, coins are added to their wallet. However, we have recently noticed some unauthorized or unexpected purchases. To address this, we aim to verify purchases directly from the backend.We have explored the following APIs for this purpose: Purchases List API: https://api.revenuecat.com/v2/projects/{project_id}/customers/{user_id}/purchases While this API provides a list of purchases, it lacks the option to sort the results to obtain the most recent purchase. Single Purchase API: https://api.revenuecat.com/v2/projects/{project_id}/purchases/{purchase_id} The purchase_id required for this API can only be retrieved through the previous API, making it impractical to directly verify purchases from Android and iOS. After thorough investigation, we found that there is no API available to directly verify a purchase using the transaction ID. Additionally, there is no dire
Implementing a promo/discounted codes feature, where we can track purchases with various codes that we generate on our own, can be hard to implement if we need to track all these things on our own.We already have amazing Paywalls. Imagine having an option to add the promo code field in it as well. And being able to include different offerings based on the code.I think it would be a hell of a feature if RevenueCat could include it in the roadmap.What do you think about it?
Hi, do you think you can help me with anything, please?Look, I'm working on a project in Flutter. In this project, I have what will be subscriptions, and I'm managing them with Revenucat. We already have the implementation done, and it works perfectly on iPhone, but the problem we're having is that when we emulate the app on an Air Pod, it's giving us problems in that area.Let me give you a little more important context:This same problem we're experiencing right now with Air Pod emulators previously occurred on iPhone emulators, but it was solved by creating a "StoreKit 1 Configuration File." This file allowed us to set up our subscriptions in Xcode, and this way, the problem was eradicated. However, now the problem persists on the iPad. I don't know if additional adjustments need to be made for the iPad. I've already tried to create an iPad emulator with iOS 17.5, thinking it might be the iOS version, but it still doesn't work.Thank you very much for your time.Console error:DEBUG: ℹ️
Hey folks,I’m testing subscriptions in the iOS sandbox using RevenueCat, but noticing delays in status updates—like renewals or expirations not showing up right away in the dashboard.Is this normal in sandbox? Also, is there a way to manually trigger a sync or refresh from the app side?Would love to hear how others are handling this during development. Trying to keep everything smooth before going live.Also, if anyone’s visualizing this kind of data, what are the best data visualization tools you’re using with RevenueCat?Thanks!
https://www.revenuecat.com/docs/integrations/webhooks/event-types-and-fieldsThe fields table says that subscriber_attributes is an ArrayIn the example below it is an Object
Hi! Just want to share our experience with App Store and app review team not able to fetch products.So we got rejected several times because product prices were not showing up for app review team, while local testing on device and also TestFlight consistently worked ok. So we decided to hardcode our subscription prices and it helped, app got released to App Store. But unfortunately payment wasn’t working, as products were coming still empty. We planned several strategies how to debug it, but I really wanted to give it a time, because a lot of users were posting that it took up to 24 hours for payments to propagate. In our case it took ~72 hours! But it works now! So guys don’t loose hope and just give it a time. P.S. while waiting for payments to propagate, on Approved subscriptions page we fixed typo in our subscription Localization and it turned into waiting for review status. Payments started working as our localization got approved. So not sure at all but maybe it helped payments t
Hello.The RevenueCat iOS app is very well-made.The notifications from this app bring a different level of dopamine compared to others.The only unfortunate thing is that the notification sound cannot be changed to a custom one.If we could differentiate the notification sound from other apps, we would be able to know about purchases without looking at the screen.It would work well enough to just be able to select from sounds built into the iOS system, without having to create custom sounds.Thank you for your consideration.
I have created paywall with three product, one is single time purchase iap and other two are subscription based, (monthly, yearly, and lifetime)after configuring the paywall using the documentation, i am able to add these 3 products in the paywall, but then i created a new offer under monthly plan subscription for 7 days free trial. i am unable to add these offer in the paywall, as it is not received by revenuecat inside their packages or product
Hi everyone! I’m trying to integrate RevenueCat into my Flutter app, which already uses Riverpod for state management, Firebase for auth/onboarding status, and GoRouter for navigation. I’m running into issues with routing redirects, linking Firebase users to RevenueCat, and handling subscription states. Would appreciate guidance or examples!My Setup: Authentication: Firebase Auth (users marked as "completed onboarding" in Firestore). Routing: GoRouter with redirect logic to handle onboarding/auth flows. RevenueCat: Configured, but struggling to link Firebase users and prevent paywall errors. Key Issues: Routing Conflicts: Using redirect in GoRouter, but async checks (onboarding status, subscription) cause race conditions. Example: Sometimes the app shows the paywall even if the user has an active subscription, or redirects incorrectly. Linking Firebase ↔ RevenueCat: How do I ensure the Firebase user ID is synced with RevenueCat’s user ID after login? State Manageme
I would like to provide extra time of the subscription for user.For example service was not able during 2 days and I would like to grand 2 days to user.Is it possible to do with RevenueCat?
I did not know where to report this, rather silly, thing. This documentation:https://www.revenuecat.com/docs/tools/customer-center/customer-center-flutter States that we need at least version 8.7.0 Well, the latest release of that package in pub.dev in 8.6.1 at the time of writing and the changelog:https://pub.dev/packages/purchases_ui_flutter/changelogsays you introduced the customer center at 8.6.0 Great product guys, thanks!!
I have an app with an optional subscription for additional features. I have a company that wants to offer these features to it’s employees via a partnership. Basically they will pay a one time fee for 1 year access on behalf of their employees who download the app. On the app store, I can create a promo code that grants a 1 year free trial, but this will auto renew on the individual users Apple ID’s, which is not what I want. It’s not possible to do this with the other subscription option (Non-renewing subscriptions) which I thought would be the ideal solution for this case. Would it be possible to create a section in my app, where the users can enter a custom code which will unlock a certain entitlement? Thank you!
What are Transfer Events?Transfer events are when a transfer of transactions and entitlements was initiated between one App User ID(s) to another. This event is from RevenueCat to inform you of purchases being transferred between users of your app. Why do Transfers Happen?Transfer events occur if a user claims the purchases of another user, which will happen if both users are logged into the same underlying store account, and if the user attempts to restore purchases. This is because RevenueCat will detect that the purchases belong to that app store account and will then transfer the purchases to the new user so they can access their purchases. RevenueCat is able to detect this because transactions are associated to the underlying store account. FAQsCan I have multiple RevenueCat users for the same Apple/Android account?You cannot have multiple users with the same underlying store account as they will always share purchases. How do I prevent transfers?To prevent all transfers, you’ll w
I have setup an API in bubble, which shows environment: sandbox in production as well.How to resolve this issue?
Lost a lot of orders, give up RevenueCat, intend to buy their own server to do order verification, fortunately, there is no user to give bad reviews
I’m currently facing an issue with my app during the App Store review process, and I need some guidance.Problem Overview:The App Store Review team has rejected my submission because they encountered an error when attempting to purchase subscriptions. Specifically, the error occurs when the app tries to fetch subscription products from the App Store.Details:The subscriptions are still in a "Pending Approval" state in App Store Connect. When the app calls getProducts() or fetches entitlements, it returns no products, likely because the subscriptions haven’t been approved yet. This leads to an error when the App Review team tries to initiate a purchase.What I’ve Done So Far: Receipt Validation: My server is configured to validate both production and sandbox receipts as per Apple’s guidelines. Testing in the sandbox environment works fine, and the app handles receipts correctly in that context. StoreKit Testing: I’ve included a StoreKit configuration file in my Xcode project to simulate
If your app is using the native iOS SDK with Swift, you can access the transactionIdentifier field through the transaction object when purchasing the product. You can see more details about this in our 'Making Purchases' docs and RCTransaction object in the iOS SDK. This field is not accessible through RevenueCat's other SDKs, however, can be accessed through webhooks and ETL exports. Typically the information included with PurchaserInfo and EntitlementInfo objects is enough data for most implementations of our SDK.If you're looking for the transactionIdentifier to track consumption of consumable products, consider using RevenueCat's GET /subscribers endpoint instead. You can utilize RevenueCat's unique identifier, id, in the non-subscription object to track consumption of all your consumable products.If there are any additional use cases for utilizing the transactionIdentifier, we'd be happy to share the feedback with our team and/or find another way to help you solve what you're tryi
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.