Get help with your SDK implementation.
Recently active
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!
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 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,
Why does SDK provide this two similar error codes?ErrorCode.receiptAlreadyInUseError = 7ErrorCode.receiptInUseByOtherSubscriberError = 13Is there any special considerations when handling those errors during `restorePurchases()`?
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
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!
Hello,I want to know the revenue generated by each ad creative I will run on Meta ads.Will integrating Purchases SDK with Meta Ads allow me to know that ?
Hello-I see the related topic that was answered months ago, but checking in again, is there any update to the answer previously provied?We are looking to add a mobile app to the existing web app, so we have a bunch of existing subscribers that we want to allow access to in the mobile app showing them as “active”.Thanks for updates/clarifications...
Is the latest_offer attribute of a customer available through the API/SDK? I cant seem to find it but need it for analytics in my app.
Hi RevenueCat team,In Sandbox I’m seeing this every time I try to purchase our monthly subscription (product_id: intimigo_monthly): ”””ERROR [RevenueCat] 🍎‼️ There was a problem with the App Store.ERROR [RevenueCat] 💰 Product purchase for 'intimigo_monthly' failed with error:PurchasesError( error: There was a problem with the App Store., userInfo: [ "readable_error_code": "STORE_PROBLEM", "NSUnderlyingError": StoreKit.StoreKitError.unknown, "source_file": "RevenueCat/StoreKitError+Extensions.swift:49", "source_function": "asPurchasesError", "NSLocalizedDescription": "There was a problem with the App Store." ])””” The only recent change on my side was increasing the price of intimigo_monthly in App Store Connect (status: Ready for Sale). I fetch offerings before calling Purchases.shared.purchase(package:), and I’ve tried:Waiting 24+ hours for price propagation Restarting the app and device (testing on a real device since I am developing using WSL) Uninstalling the ap
private void Start() {#if UNITY_ANDROID && !UNITY_EDITOR _wrapper = new PurchasesWrapperAndroid();#elif (UNITY_IOS || UNITY_VISIONOS) && !UNITY_EDITOR _wrapper = new PurchasesWrapperiOS();#else _wrapper = new PurchasesWrapperNoop();#endif if (!string.IsNullOrEmpty(proxyURL)) { _wrapper.SetProxyURL(proxyURL); } if (useRuntimeSetup) return; Configure(string.IsNullOrEmpty(appUserID) ? null : appUserID); GetProducts(productIdentifiers, null); }
I’m in the process of implementing RevenueCat. (Flutter-IOS)I followed the steps on the documents. My product appeared on the revenueCat UI I’ve created an offering and a base entitlement + created a paywall Attached entitlement a product (I have only one.) Made a subscription succesfully and that appears on the RevenueCat side. ***But no attached entitlement*** So I can’t use themAny help appreciated. Even if this is a known issue, I couldn’t find any source to solve it.thank you
Hi friends, i am working on project using swift revenuecat as the purchasing library,now i want to detect from my code if the paywall was not set for the offering, but i cant find any way to do that, the problem is the return value from offerings.current.paywall is always nil, ofcourse i already setup in the dashboard, event the paywall can be shown in appif there is some one who have any experience with this, please help?here is my code to make more clean, Purchases.shared.getOfferings { offerings, error in guard let offering = offerings?.current, error == nil else { print("❌ Failed to fetch offerings:", error?.localizedDescription ?? "") // fallback to custom popup if failed presentCustomSubscription(on: visibleController) return } print("Current offering:", offerings?.current?.identifier ?? "none") print(offering.paywall?.templateName ?? "none"); // Check if paywall is set if let paywall = offerin
After integrating RevenueCat into Unity, I conducted a test using a sandbox account. After logging into a sandbox account with VIP status in the game, when I switched the account in the iOS background, the game still showed VIP status. My game does not have its own account; it's a mini-game. Is there a solution to this? Is this normal?
Hi RevenueCat community,I’ve seen the following question here about the ETA of Paypal as payment method to a flutter app.As this question points to an In-App-Purchase and with that to a different SDK I wanted to ask the same question for RevenueCat Web Billing. In the docs I can see that the current possible payment methods are credit card, google pay and apple pay. Stripe however is providing Paypal amongst many other payment methods. As RC Web Billing is using Stripe as payment gateway, I’m curious if there is a plan / ETA of adding Paypal as payment method to Web Billing as well. Best,Moritz
I have configured “Keep with original App User ID” as transfer behaviour which leads to binding of a subscription to a single userID.Now lets say user has bought the subscription while being logged into accountA, later at some point user uninstalls the app and logins with accountB in app, now playstore being the same, when user tries to subscribe again, the error will come: Product Already Purchased ErrorUpon triggering Purchases.restore or Purchases.sync, we will get RECEIPT_ALREADY_IN_USE, I want to show the user accountA details so user can log back in with correct account, however I can’t as revenue cat doesnt surface any usable info in above errors, like appUserId / receipt / token of the purchase from the previous account which I can query in my backend to fetch accountA details.What is the correct way here ?
Hello,Currently, I am considering deleting old records for "customers who are not on a premium plan" using a regularly scheduled batch process.At this time, in order to filter the target customers, I would like to obtain a list of "customers who have premium plan entitlements."With the current REST API, it is only possible to check the entitlements of one customer at a time. Considering rate limits, it is not realistic to perform this for all users.(https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id} )Is it possible to achieve the above scenario using the current REST API?Or, do you have plans to develop this in the future?
I am running ASA campaigns but i want them to receive a completely different offer when they open the app than a user who organically downloaded the app. I cant see a way to target them in the revenucat dashboard, is this something that can be done via code?
I just purchased something in sandbox mode but the operation doesn’t appear on the customer’s history. Looking through the logs, I’ve seen this error. Haven't seen any posts about it - any additional information?Note that I'm using Superwall as the main paywall provider and RC is just observing.
We are using RevenueCat only for non-subscription in-app purchases (e.g. consumables). We currently handle reward distribution exclusively via webhook events on our backend. However, we’ve encountered some cases where a purchase fails (e.g. credit card limit exceeded or other payment method failures), but the frontend has no way to detect this and may incorrectly treat the purchase as successful. We’d like to ask: For non-subscription products, is there any way on the client side (React Native SDK) to detect if a purchase has failed right after calling Purchases.purchasePackage()? What specific webhook events does RevenueCat send to indicate: a successful non-subscription purchase? a failed non-subscription purchase (e.g. payment declined, card limit, etc)? Based on your answers, we plan to distribute in-app rewards only after receiving the successful purchase webhook. Additionally, we would like to clarify the behavior for “Billing Issues” or “Pending” states.If a purc
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.