Discussion and help from anything related to RevenueCat.
Recently active
Why can't I use an offering on more than one paywall? What's the reason for this?
I’m facing a very frustrating error. I’m able to successfully initialize the react-native sdk: useEffect(() => { Purchases.setLogLevel(Purchases.LOG_LEVEL.DEBUG); Purchases.configure({ apiKey: Config.REVENUECAT_API_KEY_IOS, }); const productIds = ['com.***.*****.staging.pro.monthly']; Purchases.getProducts(productIds).then((products) => { console.log('Products:', products); }).catch((error) => { console.error('Error getting products:', error); });}, []) In this case, it returns a blank array of products. However, in my project configuration, I have successfully imported products from App Store Connect. Secondly, when I run Purchases.getOfferings(), it gives me the Error 23 which mentions misconfiguration. I’m not sure why am I getting that error. I have completed all the steps in the https://www.revenuecat.com/docs/offerings/troubleshooting-offerings guide and I’m still getting the same issue. I’m running my app in a simulator. I know that I need a .storekit fi
Hi,We are trying the new web paywall button in one of our app. It is working great so far but we didn’t find the way to get the info inside the app when a payment is done on the web using the web paywall button.We need trigger some code in our app every time there is a payment in the app based on the subscription taken. Today we an in-app payment, we can simply rely on the response of `Purchases.shared.purchase()`.Is there a way to do the same thing with web payment? Thanks!
The fetchOffers method in the purchase_flutter package sometimes returns me an empty list of products while working in the test environment. While I haven’t faced this issue in the production app yet. And I have been using this package since three years and it was working fine till a month ago I updated it to “purchases_flutter: ^8.7.2”. Does any one knows why is it happening? I doubt that if it is due to the configuration issue since it was working fine since three years.
I successfully managed to integrate RevenueCat into my app for subscriptions and now I’m concerned that maybe it was too easy and I forgot to do something!! I’ve been trying to find information about this and I cannot see that this is happening very often to others.My first trial subscription started 8 days ago now (free trial period is 7 days). Yesterday I waited for it to convert into my first subscription as I haven’t seen any cancellations and the end of the trial came and went with nothing. About 30 minutes after it was supposed to be converted, a new event came in of “SUBSCRIPTION_EXTENDED” - my understanding is that this is an internal RevenueCat event that happens if nothing else happens.When I check the Google Play console, it just says “Payment Pending” - “Order received. Google is the merchant of record for this transaction.”. Nothing else - it doesn’t appear that Google has tried to charge them or that they have done any fraud checks which would delay the transaction.
When I call Get List of Customers endpoint I get only 6 fields of information for every customer. The documentation shows that should be more fields.URL: https://api.revenuecat.com/v2/projects/proj_id/customersYour API v2 response (just for Item object):{ "experiment": null, "first_seen_at": 1744314095343, "id": "123456789", "last_seen_at": 1744314095367, "object": "customer", "project_id": "proj_id"}The documentation show that i should get this:{ "object": "list", "items": [ { "object": "customer", "id": "19b8de26-77c1-49f1-aa18-019a391603e2", "project_id": "proj1ab2c3d4", "first_seen_at": 1658399423658, "last_seen_at": 1658399423658, "active_entitlements": { "object": "list", "items": [ { "object": "customer.active_entitlement", "entitlement_id": "entla1b2c3d4e5", "expires_at": 1658399423658 } ], "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-a
If an expired iOS customer redeems a custom offer code (e.g. one month free), would the RevenueCat webhook send an event? If so, which event should we listen to (e.g. Renewal?) We have a backend that listens to the RevenueCat webhook to track some customer data, and are thinking of implementing offer codes (so we’d also want to listen for that)
Hope to launch an Android version Web Paywall Buttondirectly using the Web Paywall Button Pay
Hey,So I’m trying to implement subscriptions with revenuecat with different types of plans (think Spotify like, where you can invite multiple members into your plan).But in order to do that, I need to store plans/subscriptions data on my own backend.To offer a real time experience, I need to sync user data with my backend in these scenarios :- sync data on app launch- sync data when app comes back to foreground- sync data right after a purchase (user subscribe and right after I send an api call to my backend to confirm status with revenuecat REST API & sync data)- sync data with using webhooksThe problem is, the current rate limit is way too low to do this kind of strategy, as said here : This is really important for my user experience, since I don’t want to make the user wait after successfully subscribing to be able to invite other people into the subscription.What would you suggest in such scenario ? This is a deal breaker for me since it’s a core feature of my app.Thanks a lot
ERROR: 😿‼️ There was a credentials issue. Check the underlying error for more details. Invalid API Key.This comes up on TestFlight when loading the paywall. It works on production. Not sure where this is happening from?
Hey, I am getting default Paywall on Android using Kotlin Multiplatform (latest version 1.7.7+13.29.1)The errors on the logs are the followingMissing string localization for property with id: '5-cMAYlyz8', for locale: 'en_US'. Displaying default template due to validation errors. Could not process value for variable 'sub_offer_duration' for package '$rc_annual'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string. Could not process value for variable 'sub_offer_duration' for package '$rc_monthly'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.I tried seeing in other posts that could be something in localization files, I changed many times the strings and nothing worked. Any clues?
Hi there,We have been using RevenueCat for our subscriptions since November last year, and have several internal users on lifetime memberships.Just this morning, several of our lifetime users (but not all) have been having issues. Their active entitlements are returning as existing, which is correct, but for some reason it is returning some as a trial period type (I think) because in the app it is detecting their trial as being expired, which is only does if the entitlement is period type trial and the expiry date is passed. This only happened since this morning, and it only happens for some users. Is there perhaps an issue going on with such entitlements? As soon as I revoke and re-add the lifetime membership for these users it works for them as expected.Thanks in advance for any help!
I’m trying to test my app before sending it out for beta in TestFlight. I need to make sure the paywall works properly, but there seems to be an issue.I built my app in Flutterflow. The way I have things set up:A user can add one project and do whatever they want with that project If they try to add more than one project (numProjects !=0), I trigger the Revenuecat “Paywall” action, providing the entitlement ID I then have forking logic that checks if the user has that entitlement If the user has the entitlement, they should be able to move forward and add a project without interruption If the user doesn’t have the entitlement, they should see the paywall component I builtBut I’m testing in my local environment (on my iPhone via XCode) with a Sandbox user, and the paywall component displays every single time, even though I can see in Revenuecat that this user has the entitlement. The first time I went through the flow, I was able to make the purchase with the Sandbox user, and I see the
Hi all, i’m getting this error just when i open up my flutter application in dev mode inside my android emulator: D/[Purchases] - DEBUG(13399): Retrieving customer info with policy: CACHED_OR_FETCHEDD/[Purchases] - DEBUG(13399): ℹ️ Vending CustomerInfo from cache.E/[Purchases] - ERROR(13399): Error deserializing subscription information. The input is not a SubscriptionInfoE/[Purchases] - ERROR(13399): kotlinx.serialization.MissingFieldException: Field 'product_plan_identifier' is required for type with serial name 'com.revenuecat.purchases.common.responses.SubscriptionInfoResponse', but it was missing at path: $E/[Purchases] - ERROR(13399): at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:93)E/[Purchases] - ERROR(13399): at kotlinx.serialization.json.Json.decodeFromString(Json.kt:107)E/[Purchases] - ERROR(13399): at com.revenuecat.purchases.common.CustomerInfoFactory.parseSubscriptionInfos(CustomerInfoFactory.kt:161)E/[Purch
Apple has appealed, but for the moment out-of-app purchases seem to be allowed in the US. From the updated App Store terms:3.1.3 Other Purchase Methods: The following apps may use purchase methods other than in-app purchase. Apps in this section cannot, within the app, encourage users to use a purchasing method other than in-app purchase, except for apps on the United States storefront … Fantastic news, at least on the surface. I’m holding off until we see how using external payments affect search placement. My app is new and I need user numbers more than $$, so I’m going to stick with App Store payments for the moment.WDYT? Are you considering switching your iOS app over to web payments? Let us know how it goes!And if the RevCat team has any guidance here, I’d love to see another blog post like this one about the earlier ruling. (Thanks!)
Is there any way to show a component conditionally?Imagine that your app offers three different plans, and you want to display a list of features based on the selected plan. How can we achieve that?As far as I know, this is currently not possible. It's not possible to hide or show content based on the selected product.Is there any plan to support this kind of feature?
Subject: IllegalStateException in Paywall UI Composition (Android)Description:We're experiencing intermittent crashes when launching the paywall with error:"Unsupported concurrent change during composition". Steps to Reproduce:1. Call Purchases.sharedInstance.getOfferings()2. Launch paywall using PaywallActivityLauncher3. Crash occurs randomly during UI compositionEnvironment:- RevenueCat SDK: 8.14.0- Compose: 1.7.8- Device: Pixel 6 (API 34)Additional Info:- Same code works in another app- Crash occurs even with 200ms delay before launchRequest:Can you confirm if this is a known issue? Are there thread-safety guarantees for Paywall UI?
The last thing that I see in logs from RevenueCat is:`CustomerInfo cache is stale, updating from network in foreground.`Full log attached. SDK version: 5.21.0 (iOS)purchases_flutter: ^8.7.3purchases_ui_flutter: ^8.7.3iOS version 18.4.1, not simulator. Not reproducible on all devices only on some.No code was changed, old version of the app stopped working but worked previously.This line `await RevenueCatUI.presentPaywallIfNeeded(value.entitlementId);` never finished. Waited 5+ minutes. No timeouts or other errors.
Hi, is there a way to not show text depending on if introductory offer is selected?In my purchase button when introductory offer is selected I’m showing a stack of two text elements, and when no introductory offer is selected I want to show only one text element.Currently I can only set the second text element to be empty with font size of 1, but it still occupies space, and the ‘continue’ element is not centered. When I set the font size to 0, it takes even more space. introductory offerno introductory offer (in prod, continue is not centered)purchase buttonbottom text element
Hi RevenueCat team, I’m trying to delete a product from our project, but I’m seeing the following error: “There are transactions in the system using this product.” The product ID in question is: com.predictwind.AnchorAlert.12months This product: Is not attached to any entitlement Is not included in any offering Was likely used for testing or was previously active but is no longer in use Since I don’t have any current references to this product, I’d like to either: Remove it completely from our dashboard, or Get a list of app_user_ids or transactions still tied to it so I can understand what’s preventing deletion. Can you assist with identifying what’s blocking deletion or help remove this product if it’s no longer active? Thanks in advance,
Hi!We see that on iOS 18.4 was increased error rate. This problem is on StoreKit 2 and StoreKit 1.Description of the error on iOS 18.4 is “The operation couldn’t be completed. (StoreKit.InvalidRequestError error 1.)” I found this error in new API: https://developer.apple.com/documentation/storekit/invalidrequesterrorDo you have the same problem? How you handle it or maybe you added any fix?Thank you!
I'm building a Flutter mobile app that uses RevenueCat with anonymous user IDs — there is no authentication or login system.On first app launch, I store the user's anonymous appUserID securely. If the user makes a purchase, I save their credit balance and subscription status in Firebase, keyed by this RevenueCat ID. I also call setAttributes to store this ID (e.g. firebase_user_id) as a RevenueCat customer attribute.Now, my question is:If the user uninstalls the app or switches to a new device (but uses the same Apple ID or Google Play account), and then taps restorePurchases() (which creates a new anonymous App User ID), will the customer attributes from the original App User ID be automatically synced and transferred to the new user?I would like to rely on that attribute (e.g. firebase_user_id) to reconnect the user with their Firebase data — without requiring login or using a custom App User ID.Alternatively:Is there any way to access the original App User ID (i.e. the ID that Reven
I am testing out web paywall buttons in Revenuecat Paywalls. While testing out the flow in sandbox url, I get an Error 16, this is the URL for paywall https://pay.rev.cat/sandbox/rzncmmyjvdmgqpaq/123I saw a similar question but here the user was trying to purchase production products while stripe was in test mode, but in my case stripe is not in test mode. I followed this video about web paywall buttons https://www.youtube.com/watch?v=XF9cbvyiK48 and didn’t see him do any special config to get the sandbox paywall working
Hi,when I look at the charts I have a “Proceeds” and “Transactions” row for every product. If I divide proceeds by transactions I get a per-unit proceeds value of 11 up to almost 17 USD. (for an in-app purchase for 22 USD) Why is that? Should that not be consistent?Of course there can be some currency variations but they can’t be so big that 14.28 € (proceeds from Apple for a purchase of 19.99 € in Germany / small business) is 11.50 USD, which would amount to more than 4 € difference.I checked very thoroughly and could not find any proceeds number per unit that would come close to the 14,28 € from Apple. I assume the numbers I get from the charts are correct and they seem to match what we get from Apple & Google, I just need to understand why this seems to vary so much every day. Thanks!
Hi all,In light of the recent court ruling against Apple taking the 30% cut in the US, I decided to try out the Web Paywall button that RC recently introduced. However, when creating the paywall after creating the web offering, I’m seeing this red alert when I make the button option to navigate to a web paywall. Also noticing that in my code (using React Native + Expo), when showing the Paywall with `RevenueCatUI.Paywall` and my new offering that has the web billing option (along with iOS), the paywall screen errors out and falls back to the default paywall. If I switch out the paywall button option from “Web Paywall” to something like “URL”, I no longer see this issue. Is this related to how I’m configuring web billing in my React Native app? I’m currently using react-native-purchases to configure my iOS and Android SDK for purchases, but do I need to do something similar to ensure the web paywall button works as expected?I’m also using my own custom app user IDs to identify users. Wo
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.