Discussion and help from anything related to RevenueCat.
Recently active
Our testflight apps and local dev app works just fine. The android version of the app works without any issues. Apple approved the app but not the subscriptions yet and now our app bricks on production but works just fine on test flight. The app gets stuck at a white screen on load. What more information could I provide to help with troubleshooting?It appears the app bricks when Purchase.setup() fails, but I don’t know the exact reason for the error when I cannot get it to reproduce locally.
Hi everyone, I’m trying to set up my app in RevenueCat and encountering an issue when adding the App Store Connect API Key. Whenever I enter the required details (Key ID, Issuer ID, and upload the p8 file), I click “Set,” but nothing happens—the fields just reset without any error message or confirmation. Similarly, when I try to upload the p8 file, it doesn’t populate or seem to register. I’ve double-checked that I’m using the correct key from App Store Connect and ensuring all fields are entered accurately. However, it seems like the data isn’t saving or uploading. Is this a known bug, or could I be missing something in the setup process? Thanks in advance for any help!
I have created a Paywall using the template editor, but when I have it display the introductory offer, it says it is “14 days” even though my actual introductory offer at the App Store is six months.It is displaying the monthly subscription price correctly ($4.99), so RevenueCat seems to be communicating with the app store, but it’s getting the introductory offer details wrong. I could just hard code the value, but there appears to be a deeper issue here. Can someone please advise? Screenshot of the template editor below showing the display of the incorrect value.
Hi everyone!I’m planning to change my Google Play developer account from an individual to an organization account, which will require transferring my apps to the new account. I currently use RevenueCat to manage the subscriptions for my apps.My question is: what precautions should I take during this process to ensure RevenueCat continues to function correctly after the transfer?Here are some specific concerns:Do I need to reconfigure anything in the RevenueCat dashboard after the transfer? Will the product IDs (SKU) in RevenueCat continue to work as expected, or is there something I need to adjust? Are there any impacts on Webhooks or the API integration? Are there any best practices to follow to avoid interruptions in subscriptions or billing data?Thanks in advance for your help!
Hi. I use FlutterFlow for developing the app. I have a custom paywall. As I understand, prices get from Apple/Google Store. Why some prices has icons, but some texts, especially on local language? Is this managed by stores or by RC? USDUAHFF says its not on their side.Thanks!
Even though I configure everything correctly, everything as it should, the save changes button is not enabled. This only happens when I try to add an app to the app store, because it works normally in the play store. What happened? How to solve it?
I’m new to RevenueCat and am looking into how I can migrate my existing app’s non-consumable in-app purchases to RevenueCat.I know this type of question has been asked several times, but none of the answers really answered my questionSo far, I’ve looked at using syncPurchases() but as stated in the documentation:Google Play Store does not provide an option to mark IAPs as consumable or non-consumable. RevenueCat's SDK will consume all Android IAPs upon purchase.To replicate the behavior of a non-consumable IAP for Android users, you must ensure your user will not offered the IAP after the initial purchase. Failure to do so will enable the user to re-purchase the IAP. ...and sure enough, in initial testing, as soon as I call syncPurchases() all of the user’s in-app products are consumed and the Google Play Billing client no longer sees the purchases.Regarding the first paragraph, when using the Google Play Billing API, we have the option to consume, or not consume the in-app purchase. A
Hi,as I need the package name / state in my own backend for some calculations I’m using webhooks.For now I’ve just used the entitlement ids property, and the first value of that array. While doing some testing I granted a new entitlement to the user and now he has two. Which does not work with my solution. I wanted to change his entitlement not add another one.And now I’m concerned that this might not be the best way to solve this. What if (for some reason) there are two entitlement ids? So there are two questions:How do I change/overwrite the entitlement of a customer? What is the best practice to reliably check the users entitlement in the own database?Thanks in advance!
Hi I am seeing this message in my App Store Connect, The SHA-1 intermediate certificate used for signing App Store receipts expires on January 24, 2025. If your app performs on-device receipt validation, make sure it supports the SHA-256 algorithm; alternatively, use the AppTransaction and Transaction APIs to verify App Store transactions. Learn More I checked the docs but couldn't find anything regarding that.Is there something we should do?I am using Flutter in my client with version: 8.2.2.
I’m building frontend logic to either:Show eligible users an offer with a 3-day free trial (a promotional offer) Show ineligible users a paywall without the trial offer.I know that checkTrialOrIntroDiscountEligibility exists for ios. But there isn’t a similar function for android devices. So I’m trying to build a workaround with allPurchasedProductIdentifiers in the CustomerInfo object. My question: I’m wondering if free trials and introductory offers are added to the allPurchasedProductIdentifiers array when the trial starts. If so, then I can simply check to see if the length of allPurchasedProductIdentifiers to determine which offer to display. If not, are free trials and introductory offers recorded somewhere else that I can check on android?
We are currently utilizing the iOS subscription payment system, and we plan to attract new users by offering an initial free week followed by a three-month discounted rate. We would like to know if this promotional combination is supported?
Hi! Is it a error? i have put the app nam, but it appears that.
Hi,I am working on an app that doesn’t have user account management and is already integrated with RevenueCat for some existing features. We’re introducing a new feature where users can purchase digital stickers.There are thousands of sticker packs, and new ones are added regularly. Therefore, creating individual products for each sticker pack isn’t practical. Instead, we’ve categorized the stickers into pricing tiers: for example, product_sticker_tier_1 and product_sticker_tier_2, which are set up as consumables on Google Play and the App Store. Each sticker is associated with a unique ID, such as:sticker_a: associated with sticker_tier_1 sticker_b: associated with sticker_tier_1 sticker_c: associated with sticker_tier_2When a sticker is purchased, the app must send an API request to our backend to deliver the sticker to the user. However, I need to ensure that the server can validate whether a user (identified only by an anonymous ID) has purchased the corresponding sticker before al
purchases_flutter: ^8.3.2purchases_ui_flutter: ^8.3.2 When I configure RevenueCat using PurchaseConfiguration(“key"), the application’s back button handling is overridden and stops working. When I press the device back button from navigation or even use the back gesture, I get the following log in the console. D/RevenueCatUI(21343): Paywalls: Close paywall initiated
Hi everyone,I am encountering an issue (which I should have tackled a long time ago) with a limited number of users. In my apps, I usually set the RevenueCat App User ID to the Firebase notification token that is received from Firebase. I noticed a few users having their subscription expired on a User ID, only for it to be transferred over to a different User ID, only to then be transferred back to the old User ID (so it would expire on the new user ID), and the cycle keeps on going. These are users with more than one device, who are buying on one device, and restoring on a second device.According to https://www.revenuecat.com/docs/getting-started/restoring-purchases,“For example, if UserA buys a subscription, then UserB logs into your app on the same device and restores transactions, UserB would now have access to the subscription and it would be revoked from UserA.”This explains the behaviour I am seeing, but I found it to be unexpected, since I would expect the subscription to be l
Hi everyone,I’m facing an issue with my Flutter app using RevenueCat for in-app subscriptions. The paywall works perfectly in previous versions and even in the current TestFlight build (I’ve recorded proof for the App Store review). However, during their review process, the App Store review team reported that the paywall doesn’t load—it just shows a continuous loading screen.I’m wondering:Could this be due to regional access restrictions in RevenueCat? Has anyone else experienced a similar issue? Any tips on how to debug and fix this?Any advice or shared experiences would be greatly appreciated!Thanks in advance,
I added the custom paywall, but when it appears in the application, i can see the native revenue cat paywall underneath in the entrance animation. So, it's as if two paywalls appeared at the same time. How can I disable the native paywall?
My goal is to - Accurately track subscriptions generated from Facebook Ad campaigns, allowing you to know precisely how much revenue your campaigns generate. But, I want to avoid RevenueCat from interfacing my Facebook Ad related data. Hence, I want to avoid - Send trial starts, trial conversions, and renewals directly from RevenueCat to Facebook Ads Manager, allowing for accurate tracking without an app open. I read on :https://www.revenuecat.com/docs/integrations/attribution/facebook-ads#3-send-revenuecat-events-into-facebook-ads-manager I have performed steps1. Install Facebook SDK2. Send device data to RevenueCat I SKIP steps# Track Install and Usage Events ( https://www.revenuecat.com/docs/integrations/attribution/facebook-ads#track-install-and-usage-events ) - Skip3. Send RevenueCat events into Facebook Ads Manager (I input the “App ID”, but I leave “Client Token” empty)4. Testing the Facebook Ads Manager integration - Skip5. View Events in Facebook - Skip By doing so, can I stil
I am using React Native CLI to develop my app for the Android Play Store, and everything is working fine. I am making the connection to the public API, but when I try to display the paywall screen, I get the error shown in the image. The error code is 23. There is no issue, and I have done the necessary steps, but why am I getting this error? Android Play Store React Native CLIcom.revenuecat.purchases.PurchasesException:There is an issue with your configuration. check the underlying error for more details.com.revenuecat.purchases.PurchasesException:There is an issue with your configuration. check the underlying error for more details.
Hello everybody,After the incident of a few days ago where RevenueCat was not accessible in China, we have deployed the recommended fix as quickly as possible, however it doesn’t seem to be working.We keep receiving messages from users that they cannot access paid features nor see the paywall because of a “network error”. Our error reporting tool logs error related to the SSL verification:Error Domain=RevenueCat.ErrorCode Code=10 "A network error has occurred. 请求超时。" UserInfo={source_function=init(_:dnsChecker:), NSLocalizedDescription=A network error has occurred. 请求超时。, NSUnderlyingError=0x300e8b120 {Error Domain=NSURLErrorDomain Code=-1001 "请求超时。" UserInfo={_kCFStreamErrorCodeKey=-2103, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <8F169AC4-0EF6-4C8D-85B4-001912B77290>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <8F169AC4-0EF6-4C8D-85B4-001912B77290>.<1>"), NSLocalizedDescription=请求超时。, NSErrorFailingURLStringKey=https://api.re
What is the difference between using a delegate (used in the Magic Weather sample app), vs calling Purchases.shared.getCustomerInfo or Purchases.shared.customerInfo() as shown here? Should you use both at the same time, or only one per project?
Due to a mistaken configuration, we currently have 9 subscriptions for each store. Except for duration, products are similar in terms of benefits offered, while in some cases price can change in a 5% of the overall regions. We would like to disable all the useless subscriptions we are offering and maintain only one annual plan and one monthly plan. I know that current iOS subscribers of the disabled plans won’t have the possibility to renew anymore, while for Android users it depends from a renewal setting. Is there any suggested (and legal) process to follow in order to migrate these customers to one of the existing plans we want to maintain? I am thinking of a communication that their plan will convert in legacy and that they can subscribe to one of the available options. I read about price changes that can work for the 5% mentioned above, but in many cases the price will be maintained so this is not our case. I am interested in both App Store and Play Console approaches, thanks!
Permissions to call subscriptions API is checked as validated, but not the other two.I have gone over the configuration for the service account several times, following your documentation instructions, but never the less I’m stuck. I have also waited several days before refreshing the status again, but it’s the same. I simply don’t know what else to do know except reaching out to you.I’m creating an app for Android with package name biz.codepower.echonotes and RevenueCat App ID app4742cd71c6.
Hi team,Is there a way for us to get access to the underlying `appAccountToken` of a transaction?It looks like the SDK always adds it when a StoreKit2 product is purchased, but so far it seems the id is only available in the Purchase method callback, specifically as part of the StoreKit2 transaction itself.it would save us a significant amount of work if `appAccountToken` was available in `CustomerInfo` (in our specific case, for `NonSubscriptionTransactions` if it makes any difference).Thanks in advance!
On test subscription phase, Does RevenueCat send events on first subscription expire and then for renewal? I'm worried because is there any time window between expiration and renewal when user will loose premium access temporarily?I have a subscription plan on Google Play console with auto-renewal on. However, infrequently I see the paywall is prompted on my app (which I’m triggering when isActive is false) and when I try to re-subscribe, it says subscription is already active. I'm suspecting this is due to the expiry (which starts my Paywall fragment) and later renewal event, which restores the subscription.What could be possibly done to avoid this? I also have grace period enabled, though I’m not handling it anywhere in the code to check subscription status. Is this could be a test subscription quirk?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.