Discussion and help from anything related to RevenueCat.
Recently active
After adding RevenueCat, the IPA size has noticeably increased a lot. Screenshot as below: Is there any way to optimize the app size?
Hi,My React Native app is being rejected by Google Play due to Family Policy validation issues related to AD_ID sharing.Issue: According to your documentation, this AD_ID issue has been resolved in version 9.6.8+. However, when I check npm/GitHub, the latest published version is still 9.6.7.Questions:Is version 9.6.8 available yet? If not, when will it be released? Is there a release roadmap I can follow? Are there any workarounds I can implement in the meantime to pass the Family Policy validation? (Changing target group won't pass through Google review)Any guidance would be greatly appreciated as this is blocking our app release.Thanks!
Error: RevenueCat SDK cannot fetch products from StoreKit Configuration file, even though the file is properly configured and set in Xcode scheme. Current Setup- Platform: iOS (Flutter app)- RevenueCat SDK: `purchases_flutter: ^8.11.0`- API Key: Test Store API key (`test_###`)- StoreKit Configuration: `Products.storekit` file exists with products `premium_monthly_1` and `premium_yearly_1`- RevenueCat Configuration:- Offering: `default`- Products: `premium_monthly_1`, `premium_yearly_1`- Entitlement: `premium`- Package identifiers: `$rc_annual`, `$rc_monthly` Error MessageERROR: 🍎‼️ Error fetching offerings - The operation couldn't be completed. (RevenueCat.OfferingsManager.Error error 1.)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).Debug logs show:DEBUG: ℹ️ No existing products cached, starting store products request for: ["premium
Hello,I’m experiencing an issue with one-time products from the Play Store. I created a one-time product and activated the purchase option in the Play Store, but RevenueCat is unable to fetch it. It worked previously, so I believe this is related to recent policy changes.Even when I create the product in RevenueCat using the exact same ID as in the Play Store, it shows a 'Not Found' error. Is there any way to resolve this? Does RevenueCat currently not support selling one-time products from the Play Store?
After upgrading to RevenueCat Android SDK 9.14.1:One-time product is set as non-consumable Discount offer is active in Play Console and backwards compatible checked No rc-ignore-offer or similar tags Login system in place, Purchases.logIn() called before purchase Subscription introductory offers appear and apply correctly in the same buildThe one-time product’s offer data never shows up in the API response (getOfferings) and the paywall always displays the base price only — the discount offer is completely missing.Is this expected behavior for one-time product offers in 9.14.1, or is there an additional step / longer propagation time required for them to appear? Thanks!
Hello,When I callPurchases.configure(configuration);(Flutter) in debug mode I get an dialog with information about Wrong API Key. Doesn’t matter if its on simulator or real device. What can I do? Should be working fine unless I build my app in release mode.In console:RevenueCat/Configuration.swift:491: Fatal error: [RevenueCat]: Test Store API key used in Release build. Please configure the App Store app on the RevenueCat dashboard and use its corresponding Apple API key before releasing. Visit https://rev.cat/sdk-test-store to learn more.Stack:Flutter 3.35.3purchases_flutter 9.9.9iOS 26.0Xcode 26.1.1
Hi i try to setup my paywall but i keep getting wrierd numbers and can’t figure out what is wrong with this paywall. -.-” I selected my offer when i started my paywall at the top rigth: I clicked on the button that i wanna give my premium subscription to and selected Package and my mothly packaged that i defined before.But for some reason the text says week and not my product name…The price is something completly different…And i wanna add a switch like i did to change from monthly to yearly products.But i dont know how to switch my products if monthly or yearly is selected.default offering configuration Could anybody pls provide some help?This is litterly the last thing i need to do before publishing and it is so frustrating.
We are running Meta paid ads extensively.Currently, weAble to track number of install accurately. NOT ABLE to track free trial activation accurately.We would like to solve the above issue, by using RevenueCat + Meta Conversion API.Can someone from RevenueCat, confirm which is the correct changes, so that we can track both install and free trial activation accurately?Before using RevenueCat + Meta Conversion API. Info.plist <key>FacebookAutoLogAppEventsEnabled</key> <string>TRUE</string> <!-- In-App Purchase Automatically Logged Events --> <!-- https://developers.facebook.com/docs/app-events/getting-started-app-events-ios/ --> <key>SKIncludeConsumableInAppPurchaseHistory</key> <true/> AppDelegate.swift private func initFacebook(_ launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { // https://developers.facebook.com/docs/app-events/getting-started-app-events-ios
Is there a way to grant virtual currency on a monthly basis when using an annual (or otherwise non-monthly) plan?From what I can see, all of the currency is currently granted at the time of purchase/renewal, which feels a bit odd. I wouldn’t expect the plan duration to change the “usage/behavior” of the virtual currency. Ideally, my users should stay engaged throughout the entire subscription period, rather than burning through all of their tokens in the first month.I’m new to RevenueCat, but I’m assuming I can work around this by handling it myself: for example, listening for a subscription purchase/renewal event, then scheduling a monthly cron job that grants the user virtual currency via the v2 API. Is that the recommended approach, or is there built-in support for this use case?
We have a working Adjust integration in RevenueCat, but we noticed a large discrepancy in the amount of “active trials” visible in RevenueCat and the amount of tracked “Trial started“ events in Adjust. Currently, there are more than double active trials in RevenueCat than the corresponding events tracked in Adjust.We think it’s because our marketing is relying heavily on App Store’s “Offer codes”. Currently we recommend the user to redeem the discounts via the App Store, as is also recommended by RevenueCat due to Apple’s buggy implementation of the offer code redeem screen in iOS.We suspect that RevenueCat is not sending “Trial Started” events to Adjust if a user starts a 3 months free trial via an offer code. Can you confirm this? Is this a bug or is this intentional? What alternative do you suggest to have more reliable stats on the total amount of trials started on Adjust’s side?
I’m using revenuecat for an app called Snap Tap Relax. I’ve doing a free trial and get over 130 free trials but more 85% results in billing errors. That doesn’t include people who cancel. Everything is set up correctly I still get some free trials converting so seems to be set up correctly. I hear others having similar problems.Just was curious if anyone ever solved this? This is on Google Play where it’s happening. I read on revenuecat yearly state of address billing errors for android are up to 29%. Which is not adding up on my end or what I’m seeing others reporting even on IOS. And just so you know i’m running google app promotions campaigns and optimizing for people who do a free trial plus do a relaxation session. So a better signal to send back to optimize for instead of just free trials. And get about 10 conversions per day. Any help would be greatly appreciated.
I tried to connect the google play console with revenue cat.I completed the setup mentioned in the revenue cat document. Now iam trying to import the products from google play console, its throwing an error, I can’t understand what’s the status of integration.
I have 3 products for my app in app store. One should not be presented on change plan option in customer center. I select 2 in revenuecat but still see 3 in my app after click on change plan. It used to work couple of days before.
Hi all,I am running a Flutter app in Production (Android only) with real users and real revenue.My issue is that the "Paywall Encounters" chart in RevenueCat shows 0, while the "Revenue" charts are populating correctly.I am using the `PaywallView` widget from `purchases_ui_flutter`.Technical Details: Platform: Android (Production) Framework: Flutter SDK Versions: purchases_flutter: ^9.1.0 purchases_ui_flutter: ^9.1.0 Behavior: Users can successfully view the paywall and purchase products. Revenue is tracked correctly in the dashboard. Paywall Encounters: 0.(no matter what “encounter timeframe” is) My Implementation:I am manually fetching the offering in a `StatefulWidget` and passing the resulting object to the `PaywallView`. I am **not** letting the `PaywallView` fetch the offering itself.Here is a simplified version of my code:class MyPaywallScreen extends StatefulWidget { @override _MyPaywallScreenState createState() => _MyPaywallScreenS
Please add the localizedPricePerMonth property to the Flutter SDK. At the moment it’s not possible to safely calculate and format the calculated price again. With localization, thousand separators, decimals and different placements of currency symbols (before, after, with or without whitespace) is too complicated and error-prone to calculate ourselves. You already have this property in other SDKs. It should be easy to put it into the Flutter SDK as well. Please do so :-) Here in this discussion, Ryan from Revenuecat said he would pass this request to the dev team. Then the discussion was resolved without it being implemented. Would highly appreciate to have this feature in Flutter! Best, Tobias
KMP SDK version 2.2.7+17.16.1Dont understand how to include trial.Here is how I fetch dataoverride suspend fun loadProducts(): List<Package> = suspendCoroutine { cont -> Purchases.sharedInstance.getOfferings(onSuccess = { val packages = it.getOffering("default")?.availablePackages packages ?: cont.resumeWithException( PurchasesException( PurchasesError( PurchasesErrorCode.StoreProblemError, PurchasesErrorCode.StoreProblemError.description ) ) ) cont.resume(packages!!) }, onError = { cont.resumeWithException( PurchasesException( PurchasesError( it.code, it.message ) ) ) })} Here is how I purchase override suspend fun purchase(storePackage: Package): PurchasesError? = suspendCoroutine { cont -> Purchases.sharedInstance.purchase( storePackage,
Hello!I have added a RevenueCat paywall, and on iOS everything works correctly, I see the exact paywall I created in the dashboard.However, on Android the paywall looks completely different: it shows a gradient background, large logo, “Restore purchases” button which is removed, and is missing all the feature texts. But the offerings are correct.It seems that Android is loading the legacy or fallback paywall instead of the new Paywalls v2 design.Details: Paywall ID: default Offering ID: default react-native-purchases: 9.6.0 react-native-purchases-ui: 9.1.0 Using: (RevenueCatUI.presentPaywall({ offering: currentOffering }) Tried: Uninstalled and reinstalled the app Republished the paywall Confirmed products and entitlements are shared between iOS and Android Could you please help we figure out what is causing this issue?Thank you!
Hi,I process webhooks events in my API, it works. For more resilience, I also sync with the subscriptions endpoint:https://api.revenuecat.com/v2/projects/$projectId/customers/$userIdStr/subscriptionsregularly. Sometimes the sync calls are triggered directly after processing the webhook, and they seem to return stale data, effectively reverting the webhook updates.How to deal with this? I assumed that subscriptions api was the source of truth, but this appears to not be correct?Interestingly I’ve been using this system for about 3 months without apparent issues but today this problem is happening consistently (specifically: subscription expires, I subscribe, receive “Initial” webhook, call `subscriptions` and get just the older expired subscriptions)Thanks
Why does SDK provide this two similar error codes?ErrorCode.receiptAlreadyInUseError = 7ErrorCode.receiptInUseByOtherSubscriberError = 13Is there any special considerations when handling those errors during `restorePurchases()`?
Hi,My app is integrated with RevenueCat and the subscriptions are set up in App Store Connect. When testing via TestFlight, the subscriptions correctly show a 3-day trial. However, once the app is live on the App Store, the trial option doesn’t appear.
My Paywall looks great on the Revcat dashboard, but when viewing on my phone (Which has dark mode turned on), the only content within the paywall being changed is the text - so if you have a light background behind your black text, your paywall is ruined. I can’t find a way to turn this off either Settings Dark mode onDark mode off
I’m trying to set up products on an Android app. The documentation I’m struggling with to be specific is https://www.revenuecat.com/docs/service-credentials/creating-play-service-credentials?embed=true I’ve run the automated script successfully and such. But I’m stuck at this section:Once the script has finished running, you will need to upload the revenuecat-key.json file from the Cloud Console shell instance to RevenueCat in your Project Settings > Google Play App Settings > Service Account Key. I can’t see “Google Play App Settings” anywhere, am I looking in the complete wrong place? I asked your AI model for help: The location moved. You now upload your Google Play service account key under each Android app, not at the project level.Do this:In the RevenueCat dashboard, go to your Android app. Open App Settings > Service credentials (Google Play). Click “Upload key” (or “Replace key”) and upload the JSON you generated (revenuecat-key.json).If you don’t see the upload area:M
Hi there,does RevenueCat provide a webhook message (body) signing mechanism?Like described here: https://hookdeck.com/webhooks/guides/webhooks-security-checklist#verify-the-messageOr is the authorization header the only way?
I added my Subscriptions App Store Connect, configured them, and they appear correctly in RevenueCat. However, the products don’t show up in local testing; they only appear when I use a .storekit configuration file, which doesn’t work in TestFlight or for the reviewer. Reviewers need the products to be approved to see them, but during review the products aren’t visible, causing the app to get rejected. Even when I submit a build, the products remain in Waiting for Review and aren’t approved. │ ERROR [RevenueCat] 🍎‼️ Error fetching offerings - Impossibile completare l’operazione. (Errore RevenueCat.OfferingsManager.Error 1).│ 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). │ More information: https://rev.cat/why-are-offerings-empty│ WARN [RevenueCat] ⚠️ RevenueCat SDK is configured correctly, but contains some issues you might wan
When a user registers for my app, I automatically create a new subscription with status trial in my database for this user - no opt in is required by the user. How can I track these trials with RevenueCat? Do I need to add some trial properties to my offerings? Currently RevenueCat is notified of user subscriptions only once a user actually starts a paid subscription (same goes for AppStore and PlayStore - they are unaware of the trial that I have initiated in my database). Thanks for your help!
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.