Discussion and help from anything related to RevenueCat.
Recently active
Hi everyone,Is it possible to breakdown the “Subscription Retention” Charts by country? I couldn’t find any setting that let’s my chart breakdwon cohorts by different attributes. Besides, when I try to filter by country (e.g. country = United States), the number seems wrong, it shows much less results than I expected. Anyone know why?
Hello!I know that by developers locally its possible to clear the Purchase History on the Sandbox Testers section in AppStoreConnect. But how to clear the Purchase History for TestFlight testers that are not necesary connected to the Mac with cable and XCode?Is it posible? Where do I see the purchases I’ve made?Thanks in advance,Paolo.
Hi team,Is there a way to link a specific offering to specific app within a project?I am using a project to allow for shared subscriptions in the future, but to do so, I have to share my offerings between apps. The current system only allows for one default offering for all apps within the bundle and the offerings call from the iOS SDK returns all offerings as there is no way to mark them for a given app.I’d love a way to say that this specific offering or offerings is only for this given app and only to return it for that app API key.Otherwise I end up with errors like There's a problem with your configuration. No packages could be found for offering with identifier default_monthly.
I have both subscriptions and in-app purchases (lifetime unlock). All use the same entitlement (unlock). I would like to differentiate between sandbox and non-sandbox purchases. Specifically, if someone buys in production, that should overrule anything bought in the sandbox, and Sandbox purchases should not be used in Production.The entitlement info provides that information but because it’s a dictionary, it only stores one purchase for the unlock entitlement. Problem 1: If someone buys something in production and later buys something in the sandbox, I believe the entitlement could be “inSandbox” because it’s the most recent transaction, even though there is also a production one (and I prioritize production purchases over sandbox)Problem 2: Non-subscription purchases have a sandbox flag, but TransactionsFactory.nonSubscriptionTransactions() discards that information, so that it is not possible to determine if a non-subscription transaction was purchased in the sandbox (even though tha
Hi there!I’m currently implementing the paywall for my game in Unity. If fetch all offerings via the SDK, and my idea now is to check if the user is eligible for the free trial i have configured on all my products, and make the paywall offer that accordingly.How do I do this in Unity? I don’t find any documentation on it, I feel like I have to run it on different devices, look at the different JSONs the SDK receives, read through the source code, etc. Feels odd for this being such a common use-case.My first idea was if I can check “StoreProduct” objects in the packages of an offer have an “IntroductoryPrice” set, and then offer a free trial. But maybe that one is always set, regardless of eligibility? The existence of the “CheckTrialOrIntroductoryPriceEligibility” method makes me think so. For Android, you write “If Google Play determines that a customer is not eligible for the offer, it will not show up in the subscriptionOptions of the StoreProduct in the SDK at all.” To sum up: I ne
LE: Title fix: How can we know the base subscription plan price that the user is paying every cycle? In our app, we have a screen where we display information about the currently active subscription, including the base plan price per month (or per year). - the price that is paid without any discounts applied Up until now, we got this price by asking the RevenueCat SDK for the current offering. (`getOfferingsWith` in Android) However, we want to increase the price of the subscription for users who will purchase the subscription after the price increase, while keeping existing subscribers on the old price, so we cannot rely on this method anymore, otherwise we’ll end up displaying the new price for old subscribers too, even though they won’t be paying the new price. We are aware of the `price_in_purchased_currency` field in the webhooks, but that will include discounts, and will also be `0` when the user is in trial - that is not what we want to display. Is there a way to get the correct
Why are there so many billing error problems?I'm noticing that this error only occurs when the application developer gives the user a 7-day free trial.When immediate payment occurs, this works.So I tested it with 2 friends who had a balance on their credit card to subscribe to my app with a 7-day free trial, it didn't work.I would like to know what step you took to fix this problem?we have more than 85% error rate of this on android (playstore)My friend did the test with his card and it shows that he has a balance, but there was a problem.Is there a problem with the revenucat SDK with Google processing thinking that all payments are fraud? image of my friend's balance:
I am using PaywallView to present the subscription page. Here is the complete code: .sheet(isPresented: $showPaywall) { PaywallView() .onPurchaseCompleted { customerInfo in if customerInfo.isUnlimitedAccessAllowed { navigateToFeature() } } .onRestoreCompleted { customerInfo in if customerInfo.isUnlimitedAccessAllowed { navigateToFeature() } } } Please let me know what do I need to do? Here is the App submission rejection feedback:We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, your app was loading indefinitely on the purchase page. Please review the details and resources below and complete the next steps.Review device details:- Device type: iPad Air (5th generation)- OS version: iOS 17.4Next StepsWhen validating receipts on your server, your server needs to be able to handle a production-signed app getting its receip
I uses RevenueCat Flutter SDK.What happens in Offline in these cases below?1. presentPaywallIfNeeded()2. Purchase attempt.3. If offline purchasing is possible, is CustomerInfo updated once the purchase (subscription) has been made but the user is still in Offline.Extra question:How to learn if there is any cached CustomerInfo data at all?
Hello guys!I'm new using this SKD and integrating payments in my app. I already made a test today using my own credit card to test a purchase of a in app product. Everything is nice, however the name that is appearing in my card. I suppose that the client could see another name in the app purchase, but i getting the following label: IDK why appears YOUTUBE because the purchase wasnt made in that app. Could you help me?I already configure my payments profile in google and the bank statement name says other name…I have to configure anything else in revenuecat?Thanks
I'm currently in the process of integrating RevenueCat with my mobile application built on OutSystems. I'm excited to offer subscription plans to my users and leverage RevenueCat's management features.I've been following the general guidelines for integrating RevenueCat with mobile apps, but I'd appreciate some guidance specific to the OutSystems environment.Here are some specific questions I have:Compatibility: Are there any known compatibility issues or considerations when using RevenueCat with the latest version of OutSystems 11? OutSystems Forge: Have others in the community developed pre-built components or plugins for integrating RevenueCat with OutSystems? If so, could you point me in the right direction? I could not find it. Best Practices: Are there any recommended practices or security considerations specific to integrating RevenueCat within the OutSystems development workflow? Troubleshooting: If I encounter errors during the integration process, are there any resources or c
From the The ultimate guide to iOS subscription testing I found this approach to test subscription restore:One big caveat with iOS testing in the sandbox environment is that there is no receipt file on the device until a purchase is made. This differs from the production sandbox and production environments, where a receipt file is generated at the time of installation. To fully test restoring a purchase in the sandbox, you need to add a button, gesture, or some other means to revert the app to the unsubscribed state.Sign up for a monthly subscription. Use a button or gesture to revert the app to the unsubscribed state. Tap the Restore Purchases button. If you do this before the 35-minute subscription cycle is over, an active subscription should be found, and the app should change to the subscribed state. Question is, how do I perform step 2? Is there any API call I can make to do that?
Hi, I wish to migrate my subscriptions, How can i get receipts and currency data for import from App Store.
Hi RevenueCat team,The question is about trial conversions for our iOS app Customuse.The issue is that many of trials got converted after being cancelled due to billings errors.I’ve attached a couple of examples. We have a 3-days grace period enabled for Paid-to-Paid renewals only, so it's not the case.Moreover, the conversions occurred a few days after the trials expired.Also from the Amplitude logs we see that users have not returned to the app to make a purchase, so the payments were made automatically.Could you explain why the trials were converted, please?And how can we avoid such false conversions.At Customuse, we are really worried about this issue because users can blame us for scam.Looking forward to your response.Customer ids:c98d6c3d-2946-4920-96bd-2919fd81be0f6aacf173-34a3-492c-9f0b-dfa86d1316c8Kind regards,Dmitry, Customuse
I am trying to get Features detail from RevenueCat’s Paywall Editor into Unity UI, is there any possible way to do it?These features detail that I want to directly apply to Unity UI
I noticed that fields like User country, Last seen app version, Last seen platform and several others recently disappeared from Customer Details page.Any reason for this?Any way to get it back?Saved me a lot of time and effort
Why am I getting “Internal Server Error” when trying to access some of the sandbox customers under Renenue Customer List Data? Furthermore, the error is not always consistent - when I revisit certain sandbox customers, the error may appear, even though moments ago, they were fine with the yellow banner. Is the subscription monitoring not stable with the sandbox data, given its nature?
Hello RevenueCat Community,I'm currently working on a Flutter app where I need to manage subscription changes, specifically upgrading or downgrading user subscriptions while handling proration. I'm using the RevenueCat Flutter SDK for this purpose.In native Android, I'm aware that we can use methods like purchaseProduct with PurchaseParams to specify an old product ID and set a specific proration mode (e.g., IMMEDIATE_WITHOUT_PRORATION)I'm trying to achieve something similar in Flutter. My main questions are:How can I specify an old product ID and a proration mode when initiating a subscription change in Flutter using RevenueCat? Is there a direct way in the RevenueCat Flutter SDK to manage these subscription changes while applying proration, similar to the native Android approach?Any guidance or examples on how to properly implement these subscription changes with proration in a Flutter app using RevenueCat would be greatly appreciated.Thank you!
When presenting paywalls using .presentPaywallIfNeeded in Flutter, RevenueCatUI can include a close button. However the color of the close button is always black.Can you please update the Flutter package so that the color of the close button can be customized?
Hello,I'm encountering an issue with my Flutter app's in-app purchase (IAP) functionality, particularly with restoring purchases on iOS.My app offers a non-consumable premium version that provides lifetime access to certain features. However, during the App Store review process, I received a rejection due to the following reason:Guideline 3.1.1 - Business - Payments - In-App Purchase"We found that your app includes a feature to restore previously purchased in-app purchase products by entering the user's Apple ID and password. However, in-app purchases cannot be restored in this manner."While the restoration process works smoothly on Android without any sign-in prompts, on iOS, it triggers a sign-in prompt, leading to the rejection.it only happened for app store, everything was fine for google playHere's the relevant code snippet from my app:static Future<void> restorePurchases( PersistenceViewModel persistenceViewModel, BuildContext context) async { try { CustomerInfo cust
I have installed RevenueCat using SPM (version 4.39.0) but I do not see the xcprivacy file associated with RevenueCat.Xcode 15.3 Privacy Report also does not include RevenueCatWhat am I doing wrong?
My network is working elsewhere. I’m just unable to fetch data from RevenueCat server at this point. [customer] WARN: ⚠️ Attempt to update CustomerInfo from network failed.The operation couldn’t be completed. (RevenueCat.BackendError error 0.)Underlying error: The request timed out.
Hey everyone,I’d like to propose the Logger use `com.revenuecat.Purchases` as the subsystem instead of `Bundle.main.bundleIdentifier`. This is determined in `LoggerType.swift:92`.This would allow utilising the `Hide Similar Items` feature of Xcode 15 console to only hide RevenueCat logs (instead of launching RevenueCat again to change the log level).The documentation of `Logger(subsystem:category:)` does contain:The string that identifies the subsystem that emits signposts. Typically, you use the same value as your app’s bundle ID. For more information, see CFBundleIdentifier.I believe this is advice for logs originating from the app, but when it comes to a dependency like RevenueCat, the app would be considered RevenueCat.You might ask if this then means that if both app and RevenueCat logs wish to be hidden you would need to perform the `Hide Similar Items` twice. This isn’t necessary as you could hide all by hiding the logs of the process which includes your app and RevenueCat.
Hello Revenuecat Team,I have successfully integrated and tested the iOS version, and it works perfectly. Now, I am testing with a real Android device and have made a test purchase for a subscription package. It was successful, but when my server calls the API to check customer info, I receive the following data:{"request_date": "2024-03-12T09:15:30Z","request_date_ms": 1710234930863,"subscriber": {"entitlements": {},"original_application_version": null,"original_purchase_date": null,"other_purchases": {},"subscriptions": {"xxx12monthsub": {"expires_date": "2024-03-12T09:34:17Z"},"xxxx.6monthsub": {"expires_date": "2024-03-12T09:02:55Z"}}}}*xxx represents the accurate subscription package code, which I have removed for security reasons.My question is, if it is an Android device, do I need to check the "subscriptions" instead of "entitlements" as in iOS?Here is my flow:1: User clicks on the subscription button on the device -> sends a request to my server.2: My server calls Revenuecat
I have already applied for the Apple Small Business Program. When filling in the dates, for the start date, I can enter an exact past date when my application was approved. However, I don't know when my planned end date will be. I don't expect to reach $1 million in sales, so the program may never expire. How should I fill in the end date? Also, I found that the end date can only be selected as today or any past date, but not any future date. Is this a bug?
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.