Discussion and help from anything related to RevenueCat.
Recently active
Hi,In my app, users can manually select their preferred language, since many of them don’t change their phone’s system language to match their native one.Because of this, the app language is controlled through my own state management system rather than relying on the device’s localization settings.The problem is that I can’t find a way to localize the paywall to match this internal language setting.Am I missing something here, or does this mean I can’t localize the paywall at all?This feature is essential for us, and it could determine whether we continue with RevenueCat or need to explore alternatives.Please help!
Error loading subscriptions: 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, {code: 23, readableErrorCode:CONFIGURATION_ERROR, 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 information: https://rev.cat/why-are-offerings-empty, readable_error_code:CONFIGURATION_ERROR, underlying ErrorMessage:
I’m integrating Customer Center into my app (with purchases-kmp) and the Customer Center Composable always shows a blank screen. Any ideas on what could be wrong? https://drive.google.com/file/d/1YT3z5aytElJVvgDZvJHN_VwCV-aRu7X8/view?usp=sharing
I have a monthly subscription that gives 40 virtual credits each month. It seems that each renewal, it adds another 40 credits. Is there way to make sure the credits don’t roll over each month?
We have multiple paywalls configured in RevenueCat and would like to implement dynamic paywall decisioning based on the user’s attributes or behavior.What is the recommended approach to determine and show the correct paywall for each user?Is there a way to manage or customize which paywall is presented at runtime using RevenueCat’s SDK or dashboard?
I’ve a user with a certain app user id, which I see on my logs and RevenueCat webhook calls.Under customers this id is not in any of the lists (active subscription, sandbox, non-subscription, expired).I see it however on the dashboard (“overview”) right as the first customer id.Any reason for this discrepancy? it’s confusing that it’s not listed under customers. Thanks.
Getting a bunch of these in my logs12.1.0 - [FirebaseAnalytics][I-ACS023141] Purchase is a duplicate and will not be reported. Product ID: test3Is this from RevenueCat? I’m not sending this data to analytics. Thanks!
Hello,I am wondering if it is possible for stripe checkout metadata to be propagated from the revenue cat webhooks that get sent to my server. I understand how we can set the app_user_id ( a combination of setting the metadata in checkout.sessions.create ) but is is possible to set other metadata on the stripe session that will propagate to my server? This feature would be useful in cases where the I have a ton of different products and I could link it the db identifier on my end to avoid looking up the product from stripes api.Thanks!
I tested successfully purchasing a subscription : I downloaded the app from Play Store, and purchase it, everything is fine.Is it possible to do the same test when deploying from Android Studio or installing manually the apk ? When I try, I get an error “This version of the application is not configured for billing through Google Play”.Both tests are done on an emulator. Thank you
For anyone who has had to create a secondary Firebase project to support a Production environment seperate from Development. I would love some advice or testimony on what you did.I am currently assuming that I will create a new environment for prod assumign the one i have setup already is devhave to create a secondary project in firebase with 3 new apps (1 web,1 ios, 1 android) I have to create a secondary project in revenueCat linked to the new firebase project I have to create a new set of ios app/google/stripe play app and recreate the subscription products.I am a bit unsure if 3 is correct and was wondering if anyone had success using the same apps/purchase products created for both environments in a dual firebase/revenuecat sitch.Cheers,Onyaga
Hello RevenueCat community,We would like to open a discussion around the initialization behavior of the Amazon Appstore SDK when used with RevenueCat, particularly on Fire TV devices and low-spec kindle tablets. EnvironmentReact Native Purchases: react-native-purchases: 8.11.10 RevenueCat Amazon Store: purchases-store-amazon:8.22.0 Amazon Appstore SDK: com.amazon.device:amazon-appstore-sdk:3.0.5Devices tested:Fire TV Stick (Fire OS 5.2.9.5) Kindle Fire 7, 7th generation (Fire OS 5.7.1.0) Issue observed When configuring RevenueCat withPurchases.configure({ apiKey: REVENUE_CAT_API_KEY_AMAZON, useAmazon: true })we sometimes experience very long initialization times (up to 30–60 seconds). This affects the ability to fetch offerings at app startup.Errors observed in React Native:[RevenueCat] Error obtaining storefront in Amazon: PurchasesError( code=UnknownError, underlyingErrorMessage=Timeout error trying to get Amazon user data., message='Unknown error.')[RevenueCat] 😿‼️ PurchasesE
Hi Everyone,I’m trying to give an existing subscriber a free month using RevenueCat’s “Google Play: Defer a Subscription” API (https://www.revenuecat.com/docs/api-v1#tag/transactions/operation/defer-a-google-subscription), but I keep getting "Subscription not found for subscriber" in the response.I’m posting to this URL: https://api.revenuecat.com/v1/subscribers/{app_user_id}/subscriptions/{product_identifier}/deferI copied the product ID from the "product_id" field of the event data from when the user purchased the subscription, to make sure I was using the correct value. I have tried it with the product ID as both plain text and URL-encoded. The user ID contains only letters and numbers, so URI-encoding makes no difference there.My POST body looks like this:{ "expiry_time_ms": 1762620360000}I can’t figure out what I’m doing wrong. Does anyone have any insight?
import SwiftUIimport RevenueCatimport RevenueCatUIstruct BuyPremiumInfoOrButton: View { @EnvironmentObject var store: Store @State private var displayPaywall = false var body: some View { Group { switch store.premiumState { case .notLoaded: Text("Loading...") case .hasPremium: Label("You have premium", systemImage: "crown") case .doesNotHavePremium: Button { displayPaywall.toggle() } label: { Label("Upgrade to Premium", systemImage: "crown") } case .error: Text("There was an error loading your premium status") } }.sheet(isPresented: self.$displayPaywall, onDismiss: { store.refresh() }) { PaywallView() } }}The above is my code. Its just using the PaywallView() from the RevenueCatUI. But this one seems to not dismiss the sheet that the
I am upgrading from Legacy to V2 paywall and am using the React Native Paywall UI component to display my paywall inside a route view. The docs suggest having an `option` Prop passed `displayCloseButton: true` in order to render the close button: <RevenueCatUI.Paywall onDismiss={onPressDown} onPurchaseCompleted={handleContinue} onPurchaseError={handleError} onRestoreCompleted={restoreComplete} options={{ displayCloseButton: true, fontFamily: 'Inter_400Regular', }}/>However, there is no close button visible in my UI anymore. Any suggestions for debugging this?
Hello, I'm trying to purchase an inapp purchase product on production, but it's taking a long time to load. Can someone help? I downloaded my app at https://apps.apple.com/eg/app/sumizeit-daily-book-summaries/id1327646115 and clicked on Upgrade Now. When I tried to buy the monthly in app purchase product, it's taking a long time to show the payment screen. What is going on?
We noticed a weird issue that is happening to some users. When we present the paywall we are using the loaded offerings and if they are not loaded we wait for them to be refreshed. In our code we first fetch customerInfo and then the offerings. By looking at the logs from one of our users call to the customerInfo() never seems to end - it doesn’t return nor throw an error.public func refreshData() async throws { logger.log("Refresh data") try await refreshCustomerInfo() try await refreshProducts()}inside the refreshCustomerInfo() we are logging everything but only Begin refreshing customer info seems to be included in the logs.public func refreshCustomerInfo() async throws { logger.log("Begin refreshing customer info") do { customerInfo = try await purchases.customerInfo() logger.log("Refreshing customer info succeeded. Bought: \(purchased)") } catch let error { logger.error("Refreshing customer info failed", error) throw PurchaseError(erro
I tested fresh version of my app via TestFlight - I opened app from it and purchased yearly subscription.It was my real device and the account was my real account (not a sandbox one).After I made a purchase I don’t know how to cancel it:in the sandbox account section (inside settings → Developer, etc) there is no any subs, because I didn’t purchase from sandbox account in the real Account Settings → Subscriptions there is only my real subs for others app.I see that sandbox purchases still coming to RevenueCat every day (renewals).How to cancel subscription made on real acc in app started from TestFlight? Where else I can check?
https://pub.dev/packages/purchases_flutter/changelog#900 broke restoring some purchases. I’m trying to find a solution for it, so I wanted to ask:Does RevenueCat plan to somehow automatically fix this? I saw this comment mentioning RC working on some permanent fix? Is it possible, with any version of the SDK, to detect which purchases won’t be restored in version 9+ ? If it was, then developers would be able to ship such detection and store user’s info (locally or on server) about their purchases. App could be running with this logic for XXX time, before finally updating to version 9+. It’s not ideal, but it would save a considerable percent of users. AppendixI have an account where I made first ever purchase in my app using https://pub.dev/packages/in_app_purchase. After I migrated to RC, restoring the purchase always worked fine, but stopped after updating to version 9.0. I double checked my git history and I used `buyNonConsumable()` method back then. In RC dashboard the product wa
Hello everyone :)The behavior I describe below happens in open testing.Context:I’m using RevenueCat for subscriptions in my Flutter app.Users must have an account linked to my backend in order to subscribe.That’s why I’m using the option “Keep with original App User ID” in RevenueCat.Since the stores require a “Restore Purchases” button, I added one, and on click I run:final user = await Purchases.restorePurchases(); Problem:Each time I click on my restore purchases button, I get this error:PlatformException(7, There is already another active subscriber using the same receipt., {message: There is already another active subscriber using the same receipt., readableErrorCode: RECEIPT_ALREADY_IN_USE, code: 7, underlyingErrorMessage: There is already another active subscriber using the same receipt., readable_error_code: RECEIPT_ALREADY_IN_USE}, null)Which has no sens because, if the user tries to purchase a subscription, the payment modal does show up, and they can successfully subscribe t
I’ve created a paywall with a “redeem code” button. It has a “Navigate to” “Offer code redemption” action. However, the button doesn’t show up in my app.I’ve added all translations. When adding a plain text label with the same string it shows just fine.Anything I’m missing here?
I was wondering if there is any chance to add a add an endpoint to get the list of all payments (i.e. activities) of a customer? Currently, it’s shown in the dashboard under Customer History box.Checking on the Network tab of my browser, it seems like the data is coming from api.revenuecat.com/internal/v1/developers/me/projects/:project_id/subscribers/:customer_id/activity which is an internal endpoint. So, the data and the formatting is there–It’s just a matter of exposing it as the external API.Is there any chance that it will happen anytime soon? Is this against the rules and Terms of Service to call that internal endpoint programmatically (and occasionally) to get the data for our own internal dashboard?Thanks,
Hi, I am trying to finalise testing my app on TestFlight before submitting, however, my paywall keeps loading non stop after user signs up. I tried the same flow with local development and everything works as expected. What am I doing wrong here? I am using Expo btw.
I set up my products in the RevenueCat dashboard back in 2021. In the changelog for the new Flutter v9 package, it specifically warns:please make sure your one-time purchase products have been correctly configured in the RevenueCat dashboard as either consumable or non-consumable. If they're incorrectly configured as consumables, RevenueCat will consume these purchases. This means that users won't be able to restore them from version 9.0.0 onward I double-checked my “lifetime_no_ads” product, and right now it’s set up as a “Non-renewing Subscription.” But honestly, “Non-consumable” seems like the more accurate choice. This issue only exists on iOS — on Android it’s already set correctly as a non-consumable.So here’s my question: if I switch it from a non-renewing subscription to a non-consumable, will existing customers run into any problems, or should it be a smooth transition?
I am using RevenueCat and Superwall. In Superwall, I open an in-app browser to purchase Stripe products, and then the receipt is submitted to RevenueCat. My question is: if I integrate RevenueCat’s Meta integrations by implementing the Conversions API, will the purchase events be successfully sent to Meta?
Hi,I have a mobile app using the RevenueCat SDK for in-app payments. We recently developed a WebApp where users will be able to sign up and purchase a subscription directly from the web using Web Purchase Links.I’d like to clarify one point: to avoid using Redemption Links, I understand that I need to provide an app_user_id. What’s the best way to create a new RevenueCat customer with an app_user_id directly from my WebApp? Is there an API endpoint or recommended approach for this flow?Thanks for your support!
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.