Discussion and help from anything related to RevenueCat.
Recently active
Hi RevenueCat team,We're seeing a critical crash affecting some of our iOS users when calling Purchases.getOfferings(). The app terminates with the following fatal error:EXC_BREAKPOINT Fatal error > getOfferingsWithCompletionBlock: > PurchasesHybridCommon/CommonFunctionality.swift This is not just an error — it’s causing the app to crash and close immediately, making the app unusable for affected users.This issue appears to originate from RevenueCat's SDK internals and must be addressed as a top priority. Please investigate and provide a fix or workaround immediately. This is a production-blocking issue for iOS.Thanks.
Hi RevenueCat team,Some of our iOS users are getting the following error when calling Purchases.getOfferings():PlatformException: PlatformException(23, There is an issue with your configuration. Check the underlying error for more details. 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, {readableErrorCode: CONFIGURATION_ERROR, readable_error_code: CONFIGURATION_ERROR, storeError: {code: 1, domain: StoreKit.StoreKitError, message: Couldn’t communicate with a helper application.}, message: There is an issue with your configuration. Check the underlying error for more details. 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
Hi RevenueCat team,Some of our iOS users are encountering the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, A network error has occurred. The request timed out., {readable_error_code: NETWORK_ERROR, message: A network error has occurred. The request timed out., code: 10, underlyingErrorMessage: The request timed out., storeError: {message: The request timed out., code: -1001, domain: NSURLErrorDomain}, readableErrorCode: NETWORK_ERROR}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) File "<asynchronous suspension>" This happens intermittently on iOS devices, even when the internet connection appears to be stable. The error seems to originate from the underlying NSURLErrorDomai
Hi RevenueCat team,Some of our Android users are experiencing the following error when calling Purchases.getOfferings():PlatformException: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Billing is not available in this device. DebugMessage: Billing service unavailable on device.. ErrorCode: 3.}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This happens exclusively on Android devices, and the error message indicates that billing is not available. However, the affected users are running on standard Android devices
Hi RevenueCat team,Some of our Android users are getting the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, Error performing request., {code: 10, message: Error performing request., readableErrorCode: NetworkError, readable_error_code: NetworkError, underlyingErrorMessage: Failed to connect to api.revenuecat.com/3.82.170.40:443}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This is happening only on Android, and it's clearly a connectivity issue between the device and the RevenueCat API server.The devices are connected to the internet and other network operations succeed, so we need to know why this specific request to api.revenuecat.com is failing.Please investigate and resolve th
Hi RevenueCat team,Some of our Android users are encountering the following error when calling Purchases.getOfferings():PlatformException: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Error when fetching products - DebugMessage: Billing Unavailable. ErrorCode: 3.}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This is happening exclusively on Android devices. The message suggests Billing Unavailable, but users are using valid Google Play accounts and devices. We're not sure why RevenueCat is failing to fetch pr
Hi RevenueCat team,Some of our Android users are encountering the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, Error performing request., {code: 10, message: Error performing request., readableErrorCode: NetworkError, readable_error_code: NetworkError, underlyingErrorMessage: thread interrupted}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) File "<asynchronous suspension>" This is happening only on Android and appears to be triggered sporadically across different users. The underlyingErrorMessage: thread interrupted part is concerning — it’s unclear why this would happen under normal conditions.This issue is blocking access to offerings and needs to be addressed immediately
Hi RevenueCat team,Some of our Android users are intermittently experiencing the following error when calling Purchases.getOfferings():PlatformException: PlatformException(10, Error performing request., {code: 10, message: Error performing request., readableErrorCode: NetworkError, readable_error_code: NetworkError, underlyingErrorMessage: Unable to resolve host "api.revenuecat.com": No address associated with hostname}, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334) File "<asynchronous suspension>" #3 Purchases.getOfferings (package:purchases_flutter/purchases_flutter.dart:264) This is affecting real users in production, and it’s blocking them from accessing any available offerings. The devices are connected to stable networks, and no other connectivity issues are present.Please investigate and provide a fix or actionable guidance. This need
In reading over the documentation, I see that the appAccountToken in the StoreKit transaction is only set if the app user ID is a UUID (https://www.revenuecat.com/docs/platform-resources/server-notifications/apple-server-notifications#user-identity). We use firebase for auth and their user IDs are not UUIDs. We can generate a UUID from the Firebase ID, but we’d need to to create a UUID → Firebase UID lookup. We can easily do this if necessary, but I’m not clear on the benefits. "What do we lose out on if appAccountToken is not set because we aren’t using UUIDs?
Hi folks.I already have internal purchase logic in my app, and I’m trying to implement RevenueCat’s PaywallView to do A/B testing.My PaywallView presents this message: PaywallView has not been correctly initialized. purchasesAreCompletedBy is set to .myApp, and so the PaywallView must be initialized with a PerformPurchase and PerformRestore handler.Is there documentation on this requirement?
On the paywall the yearly subscription has a tag that shows the percentage of how much the user would save by selecting the yearly subscription. Is there a way to show the actual dollar amount instead of the percentage ?Thank you.
Hey everyone, I am asked to input the Sandbox Api Key here: Any idea where I can find it?
In my previous apps, account creation wasn't a feature, so I relied solely on RevenueCat's SDK to determine subscriber status.However, my new app incorporates an account system powered by Firebase Authentication. I plan to integrate the RevenueCat Firebase extension to facilitate this. My goal is to grant premium access to users consistently across Android, iOS, and web platforms.Therefore, I'm wondering if Firebase Auth custom claims can serve as the sole mechanism for checking a user's subscription status. My concern is that if a user signs in with their premium app account but uses a different Apple ID or Gmail (not linked to the original purchase), the RevenueCat SDK might incorrectly return 'false' for their subscription status."
I am showing a PaywallViewController (iOS, UIKit) without a “Restore” button in my app (I am showing it in my own UI in a step before). Unfortunately, the “Continue” button now sits just at the top edge of the view which looks a bit unprofessional. I see no way to change this myself. Please see the attached screenshot (taken in the Catalyst version of our app). Thanks!
I just made my first test purchase… well, or so I thought. It said something went wrong, but nothing happened in my app, so I guess it didn’t register the purchase correctly.Now I cannot make another test purchase to debug, because I already own the item (that’s what Google Play says once the purchase bottom sheet appears).Is there a way to delete the purchase? Or is the only way to do this by making the product consumable (which isn’t really what I’d want in a real production environment for users, they can only buy the product once)?Thanks!/edit: I think I may have found the answer:“Note: To perform multiple test purchases for the same non-consumable product, you can refund and revoke purchases using Google Play Console.”This is as per the Google Play docs… Should we delete the customer in RevenueCat as well, or keep them and their metadata?
Hi looking into Virtual Currency for tokens in my game. Currently on ios I save tokens to icloud so they transfer between devices but are not tied to a user account in my game. I also save them on the keychain so they survive app delete / install. On android I save the count in userData but that doesn’t survive app delete and that’s not great.I haven’t associated tokens with user accounts because creating an account isn’t mandatory.. some people simply like to play the computer opponent and not online.. so they don’t need an account. So wondered if virtual currency might be a good option as rev cat creates an anon id. But it’s complicated. For example.. assume someone installs the app the the first time, gets an AnonID and buys tokens without a userid in my app.. then they create a new account in my game and I tell RevCat about that userID. It does look like that in-game user id gets assigned get an alias to the orig anonID and the tokens are still there. Great But if I insta
On Android devices, it appears fine; however, on iOS devices, it pushes the UI off the screen to the right. I have attached the Screen shot.
Hello everyone,When a user registers in my app, I create an account for them on the Revenue Cat platform with a POST call to this url https://api.revenuecat.com/v2/projects/projxxxxxx/customers. I ask for the creation of a new customer and I also ask for app_user_id RevenueCat to be the unique identifier that my user has in my app so that I can find him easily when he is in RC.When I go to “customers” in R C, my customer is there, with the app_user_id set to the unique identifier in the app. So so far so good!Except that when my user takes out a subscription on app, Revenue cat creates a new Revenue Cat identifier for him, whereas I want the customer to keep his app_user_id identical to the unique identifier in my app.
I’m testing family sharing on subscriptions and IAP in sand box. I have an IAP that unlocks a lifetime access to the app and if users that are in a family sharing group purchase it, other members of the group are able to access it via restore purchase. However, if a member subscribes to the monthly membership, they get access to the app through the lifetime IAP, but are also charged a monthly subscription. When they sign up for a subscription, it creates a new alias.I understand that sandbox environment can be wonky but I’d like to get an idea of the expected behavior in prod from those who have tested this previously. What’s the standard way for users to download a family shared app? You cant access Settings > Your Name > Family > Subscriptions with a sandbox account. Is it expected for users to be charged a monthly subscription even though they have access to a family shared IAP? Thank you!
Whenever I need to upgrade the minimum iOS requirements of my app, I wonder: “how many subscribed users will I lose?”, and “how many users who purchased a lifetime license no longer receive updates?” It would be great if RevenueCat had a chart for that. One that looks at the maximum supported iOS version per user. For example, I may have two users, Alice on an iPhone 7 and Bob on an iPhone 8. Both are running iOS 15. When I bump the minimum version of my app to iOS 16, Alice can’t ugprade to iOS 16, so I’ll lose her, whereas Bob on his iPhone 8 still can, so the chart should not show him as a user I’d lose.
Hi team,I’ve integrated RevenueCat with my Flutter app and everything works fine in testing — all products show up correctly and test purchases complete as expected.Now that I’ve uploaded the app to production, I created a promo code for one of my subscription products through the Google Play Console. However, I noticed that the "Redeem code" option does not appear during the purchase flow in the production version of the app.Has anyone else experienced this?Is there something specific that needs to be done on the RevenueCat side or in the Google Play Console to ensure that the redeem option is visible in production?Any guidance would be appreciated!Thanks!
Hello everyone :)I am trying to give different links for English and Local language for footer links at paywall.I could not find it.Can we add localized links for footer links Privacy Policy and Terms and Conditions at paywall?
Hello there,Is it possible to have something like 'Day {{ primary.trialPeriodDays | minus: 3 }}: Trial Reminder' in our trial timeline, to indicate that users will receive the reminder 3 days before the trial period ends?Regards,Zahra
Hi RevenueCat fam,I’m testing my paywall with real device. My payment still shows up after my purchasing and even tho I use .presentPaywallIfNeeded( function which should automatically check if I’ve paid. .presentPaywallIfNeeded(requiredEntitlementIdentifier: "pro",purchaseCompleted: { customerInfo inprint("Purchase completed: \(customerInfo.entitlements)")},restoreCompleted: { customerInfo in// Paywall will be dismissed automatically if "pro" is now active.print("Purchases restored: \(customerInfo.entitlements)")}) Attached is what I saw after click purchase on paywall a 2nd timeAnd this is my LOG DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953aDEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953a'DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953a' (304)DEBUG: 😻 CustomerInfo updated from network.D
Hello RevenueCat Team, I am currently working on integrating the RevenueCat REST API v2 into our backend systems. During testing in the sandbox environment, I’ve encountered an issue where the /subscriptions endpoint returns an empty items array, even customer object has valid entitlements in Sandbox. This behavior is not limited to subscriptions integrated via Stripe like the post “REST v2 subscriptions empty in sandbox”; it also occurs with subscriptions made through StoreKit. This issue has been previously discussed in the community before. However, the problem persists and significantly impacts our development workflow. The inability to retrieve sandbox subscription data via the v2 API hinders our ability to manage and verify user subscription statuses during testing. Consequently, we are compelled to rely on the deprecated v1 API for this functionality, which is not ideal for maintaining a modern and efficient codebase. We kindly request that the RevenueCat team consider extending
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.