Discussion and help from anything related to RevenueCat.
Recently active
If you’re here, it’s probably because you’ve encountered an active issue related to Apple’s receipt verification.RevenueCat relies upon Apple’s `verifyReceipt` endpoint which is currently facing an outage: https://developer.apple.com/system-status/This seems to be affecting sandbox and TestFlight purchases only at this time, although Apple’s status page doesn’t mention it explicitly.Encountering this issue? Post below ⬇️ RevenueCat isn’t able to resolve this at this time from our end, but it may help bring awareness and ease to other developers facing the same issue.Update 2/8/23 19:20 UTC:Customers (and me 😃) reporting things are working as expected again - post below if you’re still having trouble, seems like a slow rollout of a fix from Apple.Update 2/8/23 17:40 UTC:Apple’s reporting the issue is fixed, but we’re still encountering errors. Will provide another update as soon as possible.
Expo Go doesn’t build native modules, so you may run into this error while trying to run your app with react-native-purchases in Expo Go. In order to use RevenueCat with Expo, you will have to create Development Builds, which can be done either by using EAS, or by making builds that are compatible with Xcode and Android Studio. There are detailed instructions for doing either one in this page:https://docs.expo.dev/development/build/ Easiest way to be able to debug is to just run either of the following:npx expo run:android -dnpx expo run:ios -d We also have a blog post that goes step-by-step into how to make an app with Expo and RevenueCat using EAS: https://www.revenuecat.com/blog/in-app-puchase-expo-managed-workflow/ Let us know if you run into any issues!
Hi! 👋🏻 We’re in the final stages of our testing of some StoreKit 2 features before fully calling it ready for production, and we’d love your help! Context: Starting with v4.0.0, our SDK already uses StoreKit 2 by default on compatible devices for some features where the StoreKit 1 functionality was problematic, buggy or unreliable, and StoreKit 2 is essentially guaranteed to be an improvement (like checkTrialOrIntroDiscountEligibility). For devices that aren’t compatible with StoreKit 2, it defaults to a StoreKit 1 implementation. However, we haven’t enabled StoreKit 2 by default for making actual purchases. We’ve tested it extensively in Sandbox and StoreKit Test (see our blog post on how we test our SDKs) but we need to see how well StoreKit2 behaves in production before calling it ready. How to help: Our SDK includes an optional flag in the configure method, called useStoreKit2IfAvailable. In order to help, all you need to do is to set that flag to true! With this flag set,
Hey everyone!I've been working on a problem I kept running into as an indie developer: keeping track of subscription revenue across multiple RevenueCat projects and Stripe accounts without constantly switching between dashboards.I wanted a single place where I could quickly see what's happening across all my projects, especially when it comes to revenue, MRR, subscribers, churn, and recent purchases.That's why I built OtterTally, a native macOS menu-bar app that brings multiple RevenueCat projects and Stripe accounts together in one dashboard.It also includes menu-bar widgets and purchase notifications, so you can keep an eye on things without constantly opening dashboards.I'm curious about how other developers here handle this: Do you monitor multiple RevenueCat projects? Do you use Stripe alongside RevenueCat? What's the one metric or piece of information you wish you could see without opening your dashboard? I'm currently looking for honest feedback from developers who use the
Hi RevenueCat team 👋We run a subscription app (iOS + Android via RevenueCat) and also sell subscriptions on the web through Asaas, a Brazilian payment provider (credit card, Pix, boleto). It is not one of the supported Web billing engines, and switching to Stripe/Paddle isn't an option for us right now because of local payment methods and our partner-pricing setup.What we do today: when an Asaas payment is confirmed, our backend grants a promotional entitlement via POST /v1/subscribers/{id}/entitlements/{entitlement}/promotional and stamps plan attributes on the customer. Access works, but web revenue doesn't show up in Charts (MRR, churn, trial conversion, LTV), so RevenueCat only covers half of our business.We read the External Purchases API thread for Airwallex and would like to request access as well, for our production project and our staging project (we'd like to validate there first with environment: sandbox). Happy to share both project IDs privately via DM, just let me know w
Hi everyone,I’m testing subscriptions in my iOS app through TestFlight, but opening the subscription screen produces this error:There’s a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).Setup• Expo / React Native with react-native-purchases.• EAS production build distributed through TestFlight.• The build uses the public iOS RevenueCat SDK key (appl_…), not the Test Store key. The same key was configured in the EAS production environment before building.• RevenueCat Test Store is enabled only in development builds.• The app is currently in App Review.What I’ve checked• The Paid Applications Agreement is active, and tax/banking information is complete (Purchases worked for another app of mine in the past).• The bundle ID matches between the app, App Store Connect, and RevenueCat.• Apple product IDs match exactly between App Store Connect and Reve
Hi. For a period of time, up to a week of a few ago, the Renewal Cycle segment was available on Active Subscriptions charts, and I came to like it a lot… then suddenly it was gone. It is still available on some other kinds of charts (e.g. Revenue chart), thus I guess it was not some technical limitations urging you to remove such segment from charts? Can you bring it back please for subscription counting charts?
Hi everyone,I am using the RevenueCat Flutter SDK (purchases_flutter) on Android (Google Play Store) in my game. I am encountering an intermittent issue where purchases are occasionally attributed to a newly generated $RCAnonymousID at the moment of purchase, even though Purchases.logIn("2585") is executed during app initialization.Important Context: In my game architecture, users cannot access or open the shop page unless they are fully signed in. Therefore, an anonymous purchase flow should theoretically be impossible under normal user operation.Additionally, right before a user selects a product to pay, I explicitly call Purchases.setEmail(). However, when this bug occurs and the purchase is unexpectedly assigned to an anonymous ID, subscriber_attributes in the webhook payload remains completely empty (no $email present).This issue happens rarely; in most cases, the Flutter SDK works as expected and attaches purchases to the logged-in app_user_id.Timeline of Events (from Dashboard L
Hi everyone,I'm an independent developer building a health companion app with Expo/React Native and RevenueCat.My Android update has been rejected by Google Play because reviewers cannot access the full app without going through the subscription paywall.Here's my setup: RevenueCat SDK 10.4.4 No user accounts or login Anonymous RevenueCat customer IDs Google Play subscriptions with a 14-day free trial Premium features behind a mandatory paywall The app already supports RevenueCat promotional entitlements Google requires reviewers to access all premium features without entering payment details or making a purchase.I'm looking for the simplest solution that doesn't require maintaining a separate backend, ideally using RevenueCat itself.My questions: Is there a RevenueCat-native way to provide Google reviewers with complimentary Pro access when their anonymous customer ID isn't known beforehand? Could RevenueCat Offering Metadata be used to enable/disable reviewer access remote
Hi,I have several apps under the same RevenueCat project, and the project icon currently mirrors the icon of one of my apps. This gets confusing when I use RevenueCat from my Android device: on the Transactions screen I can only see the project image, so I can't tell which app a transaction belongs to unless I rename each product.Would it be possible to add an option to upload a custom project image? That way I could set a neutral icon that isn't tied to any single app.Thanks!
Does using Stripe’s new Global Payouts and Treasury features impact RevenueCat billing?
Hi Shipaton team,I submitted "Hector Miller", a 2D stealth game built solo in Godot 4.7, for the Next Gen Award (demo video + public GitHub repository). It was my first game ever.I understand no individual feedback is available. If possible, I'd love to know which judging stage my project reached.Devpost project: [incolla qui il link del tuo progetto]Thanks for running Shipaton 2026, and congratulations to all the winners!
We use revenuecat paywalls in our macOS apps, however the experience of designing paywalls with the paywalls editor isn’t great as only phone or tablet resolutions are supported as previews. it would be great if we (as users) could define our own paywall preview size class in the editor, which would be representative of the window we show our paywalls in our app.
Hi RevenueCat team and community, I am building my mobile application using FlutterFlow (No-Code platform), so I do not manually manage native Android configuration files or code in a standard IDE. When trying to generate a release Android App Bundle (AAB), my build fails during the R8 minification task because of `purchases_flutter` and Google Play Billing API classes. I have attached a complete diagnostic report to this post (Flutter Build Diagnostic Report.pdf) which contains the exact error logs, but here is the core issue:ERROR: R8: Missing class com.android.billingclient.api.QueryPurchaseHistoryParams$Builder (referenced from: ... com.revenuecat.purchases.google.BillingClientParamBuildersKt.buildQueryPurchaseHistoryParams(...)) Execution failed for task ':app:minifyReleaseWithR8'.Since I am working within FlutterFlow, could you please advise on how I can resolve this? Specifically: 1. Do I need to add custom ProGuard keep rules in FlutterFlow for RevenueCat / Google Play Billing?
According to rico it seems the cohort explorer does not include ads revenue, will it be possible to add it? or to create a chart that can shows revenue progression day by day by install date which includes purchases + ads?
We are experiencing inconsistent currency display during testing in TestFlight. All subscription prices are already correctly configured in App Store Connect for all countries and regions. Custom Paywall UI / RevenueCat Paywall: Prices retrieved from RevenueCat offerings are displayed in USD ($). Apple In-App Purchase Sheet: Prices are correctly displayed in INR (₹). I came across a similar post discussing this issue that was published around seven months ago. I would like to confirm whether there have been any updates or changes since then, and whether this behavior is still expected or if there is now a recommended solution.
There is no production public key for our RevenueCat Billing app — only asandbox key (rcb_sb_...). Checkout renders correctly but shows the yellowSANDBOX banner, so no real payments are possible.DiagnosisOur two web apps point at different Stripe accounts: [App Name] (RevenueCat Billing) type rc_billing acct_...(sandbox) created Aug 22 [App Name] (Stripe) type stripe acct_...(live) created Aug 27The live Stripe account is fully verified (KYB complete, live mode accessible).Because the acct_ IDs differ, the Billing config appears to be tied to aseparate Stripe sandbox account, which by design only exposes a sandbox key.The Billing config was created 5 days before our live Stripe account wasconnected.Setup we want to preserve- 42 RevenueCat Billing products- each attached to its entitlement- each in the "default" offering's packages alongside the App Store productsQuestions1. Can the existing Billing config's Stripe account be switched to our live account in p
Hi, We are in the process of integrating RevenueCat into our project. On the desktop version of our app, we use web checkout for purchases. The purchase is always made with our generated appUserId. The problem is that on web, the purchase is not linked to the anonymous appUserId created by the app when it first launches, leaving an orphan anonymous customer. Calling the /v1/subscribers/identify endpoint makes the link and unifies the behaviour across mobile and desktop versions of the app, The /v1/subscribers/identify endpoint is not documented however. Is it still safe to use, or is there another recommended way to solve this issue?
Hi everyone, I submitted Paparcar: ¿dónde aparcaste?, a community app for finding and sharing parking spots in real time in Madrid. Today I got the email saying it wasn't selected. That's fine, there were thousands of great apps and limited prizes. What bothers me is something else. Since the submission deadline, I haven't seen any sign of judges using the app: no new accounts or activity during the review window. I know judges could have reviewed it in ways that don't show up in my analytics (the video, the store listing, testing without signing up), so I'm not claiming nobody looked. But I can't tell either way, and the rejection email says no individual feedback will be given. So I'm curious: Did any of you see clear judge activity (sign-ups, sandbox purchases, reviews) in your apps? Does anyone know how the judging pipeline works? For example, is there a first screening before hands-on testing? A suggestion for future editions: even a simple "your app was tested hands-on" or "your
Hi,I would like to store as little identifying information about my users as possible for privacy purposes.When making a web purchase through Paddle, the payment screen asks the user for their email in order to send their receipt after the purchase. This email later shows up in the “E-mail” attribute for the customer on the RC dashboard.I do not need this attribute populated, is there any way to avoid it?
Hi everyone,We are currently setting up a RevenueCat Web Funnel using the pre-built template, with Paddle as the payment provider.Our planned setup is:Meta / Google Ads → RevenueCat Web Funnel → Paddle → PurchaseWe already use Adjust and are sending purchase events via S2S.What we are trying to figure out is how to attribute these web purchases to the original Meta/Google campaigns in Adjust.The main questions are:How can we capture the campaign information from Meta/Google when the user lands on the RevenueCat Web Funnel? Can we use UTM parameters / campaign IDs with the pre-built Funnel? Since the RevenueCat-hosted Funnel does not seem to use the Adjust Web SDK, how can we generate or pass an Adjust ID ($adjustId) for the web user? What is the recommended way to connect the Paddle purchase → Adjust → original campaign?Has anyone implemented a similar RevenueCat Web Funnel + Paddle + Adjust + Meta/Google Ads setup?Would really appreciate any guidance or examples of the recommended imp
Hi,I’ve set up an integration with Meta Ads a few days ago using the Conversions API.I can see a few events coming from “Server” in Events Manager, but only for the events shown in the screenshot. I don’t see any fb_mobile_purchase events. Is that expected?I’ve already had 10+ purchases with this event, and I can see that the event was sent to Meta in the customer profile. How does this work exactly?Also, for the events that do appear in Events Manager, I see significantly fewer events in Meta than were actually sent. Is that normal? Is there anything I can do to improve event matching/delivery and provide Meta with more data?Thanks in advance!
We use RevenueCat and Adjust together, but their cohorting logic is different.1. User count mismatch:Adjust counts each reinstall as a new install, while RevenueCat keeps the user tied to their original first_seen_time. So Adjust can show significantly more users in the short term.What is the recommended way to reconcile these two systems and make user counts comparable?2. Delayed conversions:We cohort users based on first_seen_time. However, a user may not start a trial or pay during their original cohort and then return months later and become a paid user. In this case, looking only at the first_seen cohort can make us miss when the actual conversion happened.Would it be better to keep first_seen as the acquisition cohort but create a separate conversion cohort based on the first trial/paid event? How do you usually handle this?
Hi all,We changed the price of a Web Billing subscription product the way the docs suggest (we created new products and swapped them into our offering).The old products are out of the offering, but they're still attached to our entitlement, because existing subscribers are on them.We'd like to archive the old products to tidy up the catalog, but we couldn't find what that does to existing subscribers.Questions:If a product is archived, do its subscriptions keep renewing and keep their entitlement? Does anything else change for those subscribers, like the customer portal or renewal emails?Thanks!
I am new to revenue cat and would appreciate some help here. I see that revenue cat supports monthly grant cadence for in-app virtual currencies attached to subscription products (monthly, annual etc). I am wondering if that functionality extends to lifetime products (non-consumable types).In my app, i would like to provide a lifetime purchase that will grant a certain currency indefinitely per month with auto-expiry at the end of a month duration.Is this possible with revenue cat?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.