Get help with anything related to RevenueCat.
Recently active
Hello,In an attempt to test the revenueCat implementation in our iOS application, we’ve been facing an understanding issues.Currently, our app is in test flight, and despite seeing our subscription on revenueCat monitoring console, we are not always able to see this subscription/purchase on the client side of the App store. For somes of our test users, the subscription is visible on their app store, and for some others it’s not visible.Besides, on our android device it seems to be working as intended. Also, we do not understand well how revenueCat categorize the transaction to be “sandbox”. Is it related to the state the app is in the store (test flight, in testing...)?Can we be sure that when our app will be released, the subscription wiil stop be labelled as “sandbox’?Thanks
Hello, I’m experiencing an issue where all subscription renewals fail due to a billing error, including for sandbox users. This started two weeks ago after I made some changes to my offerings. Specifically, I:• Added multiple offerings.• Added another entitlement to the existing entitlements. However, my product IDs have remained the same throughout these changes.At first, I didn’t think much of it, but now multiple real users’ renewals are failing due to a billing error. I tested this with new sandbox accounts, and the issue persists there as well. Issue Details:I'm using flutter and building for ios and I'm not using StoreKit Configuration, this wasn't an issue before.• Previously, users could subscribe successfully with a free trial, and after the trial period (3 days), the renewal would always go through.• However, since making these changes, all renewals now fail with:• “Entered a grace period due to a billing error”• “Subscription canceled due to a billing error”• “Subscription e
How do I link stripe payments through their payment links to a revenuecat user? I tried using the client_reference_id url param and link that in the revenuecat ui using the metadata field option but I do not think it is working.
I always have a known user ID before I get to my paywall, so do I ever need to use Purchases.logIn() ?If I sign out, I don’t call Purchases.logOut() because I don’t want to generate an anonymous ID, but when I get another user coming through and hitting the paywall, is it sufficient just to call Purchases.configure() again integrating the new appUserId?I’m just concerned that I’m using a ‘configure’ function for setting the apiKey which should only really be done once per session but I’m doing that every time I sign in a new user when it seems more sensible to use a logIn function.Are there any downsides (apart from a wasted resetting of the apiKey) with the way I’m doing this?I mean, it seems to be working…..Many thanks.
I am trying to integrate with SDK to automate free trial ending reminders and more. And I read this post - But I also notice that RevenueCat allows various SDKs including customer.io and Firebase, which I am using currently. OneSignal seems great, but I am just wondering if customer.io might be better in the long-term. How are you guys doing it? I would like to learn from those who has implemented similar features.
I have updated the dependencies of purchases_ flutter from 3.4.5 to 3.9.2.But I have an error when I install the pod file.Error is:PurchasesHybridCommon required a higher minimum deployment targetThe error occurs when I try to install the pod files and then install to an iOS device.Can you help me?
The data for all of my charts says “Last Updated: 9 hours ago”. I’ve tried refreshing the page, different browser, logging out/back in, etc., but nothing helped. The RevenueCat status page isn’t reporting any issues with dashboards, so I’m not sure if this is happening to others as well?
Hello there! During the initial implementation of RevenueCat into our react-native app, we attempted to set the app user ID as the user's first and last name stored in the app context, to facilitate easier contact later on. This led to a bug that caused a custom App User ID to be assigned to users who created accounts through external providers that do not supply this data. As a result, some users were assigned an "app user ID: undefined undefined".This bug was quickly fixed and the affected users were removed from the database.Since then, the app user ID has been assigned anonymously, in accordance with the documentation, and we identify users using assigned attributes.The issue arose later, as despite having no such users and no code in the app assigning a custom app user ID, we started seeing more users with the ID "undefined undefined", and their accounts were being merged during purchase into a single "undefined undefined" user account. I'm convinced the issue lies within the Reve
Hi,We are planning to integrate a payment gateway to our app’s web version however Stripe isn’t supported in our country (Philippines). I can’t find relevant documentation for the SDK for any sort of postback or equivalents.Since we are already using RevenueCat, is there a way we can proceed without switching to another IAP platform entirely?I’d love to hear from you if you have any suggestions (aside from opening a Stripe Atlas account).
My App supports premium only model. Each new App User have to buy subscription. I select transfer behaviour “Keep with original App User ID”.1. I sign-up with MyUserA and bought the subscription2. Then I sign-up with MyUserB and want to buy the subscription, but get the error `There is already another active subscriber using the same receipt`. (presumably from MyUserA)In a paywall I see an error “The product is already active for the user”. Before RC error modal I see PlayStore bottom sheet error modal “Error. You’ve already subscribed to {MY_PLAN}...” So question, how can I achieve behavior when every new My App user have to buy subscription, while being login into single PlayStore account?e.gMyUserA → SubscriptionInstanceA → PlayStoreUserGlobalMyUserB → SubscriptionInstanceB → PlayStoreUserGlobalIs this possible?I do not want to share the same bought subscription between my app accounts, but also I do not want users to overcomplicate/bother with their PlayStore user change/relation.
Hello,We have implemented RevenueCat in our React Native app. We want to use it only with Apple app store. We have been testing in the SandBox and now we want to test the real production flow before submitting an update for the app. We always get the sandbox test purchase even after switching the SandBox switch off in the RevenueCat website.
Hi, Can I use your web billing / low code web app to let users redeem free access / trigger RC Promotions, so the user doesn’t have to enter a credit card? If so, would this work for first-time users? So could I send people a link that always them to redeem a Promotion, then the user downloads my app, and the promotion is somehow recognized when the user opens app and creates an account? Thanks, Toby
I believe I have configured everything correctly, but I am unable to purchase on Android.I have followed everything shown in this link 'https://community.revenuecat.com/sdks%2D51/why%2Dare%2Dofferings%2Dor%2Dproducts%2Dempty%2D124' but it still doesn't work.Configure if (Platform.OS === 'ios') { try { Purchases.configure({ apiKey: REVENUE_CAT_IOS_API_KEY, appUserID: user?.uid, }) } catch (error) { console.error('error configuring revenuecat for iOS', error) await analytics().logEvent('error_configuring_revenuecat_for_ios') } } else if (Platform.OS === 'android') { try { Purchases.configure({ apiKey: REVENUE_CAT_ANDROID_API_KEY, appUserID: user?.uid, }) } catch (error) { console.error('error configuring revenuecat for Android', error) await analytics().logEvent('error_configuring_revenuecat_for_android') }} This is where I am trying to fetch the products. const purchaseStoryToken = async () => { try { useSetLoading(true) const products
Hi everyone,I'm implementing in-app purchases using RevenueCat and would love some clarity on managing multiple paywalls.My goal is to: Show a default paywall during the onboarding stage. Show a different paywall after a user hits a trial limit or reaches a milestone in the app. I understand that RevenueCat supports Offerings and Paywalls, but I want to confirm:Is it best practice to create two different Offerings (e.g., onboarding and postTrial) and then call the relevant one based on the user's stage?Also, are there any potential caveats or gotchas I should be aware of when switching paywalls dynamically like this?Appreciate any guidance or shared experience!Thanks in advance
Hello, I have this error from RevenueCat: code: 23, 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 domain: RevenueCat.ErrorCode, userInfo: "readableErrorCode":"CONFIGURATION_ERROR","readable_error_code":"CONFIGURATION_ERROR","source_file":"RevenueCat/OfferingsManager.swift:237","source_function":"createErrorForEmptyResult(_:)","NSLocalizedDescription": 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-off
Hi there,I have a question about anonymous user IDs and subscriptions.My scenario:User subscribes on Android using RevenueCat's anonymous ID Later, they get a new iOS device and use our data transfer feature As part of this data transfer, we'd transfer the RevenueCat anonymous ID from Android to iOSWhat I need to know:If we transfer the anonymous ID and call login() with that ID on the iOS device, will the subscription be recognized? What happens to the subscription status on the original Android device after this? Are there any platform-specific limitations to this approach?Creating user accounts isn't an option for our app. We need to rely solely on anonymous IDs for subscription tracking.
Our app has a recurring subscription, that users need to pay in order to use it. We would like to offer something like a group subscription - if a company approaches us and want to buy 10 subscriptions for their employees we would like to offer them a discount. We could get a list of users from them, we could send them codes, the way how do we exactly do it its not that important to us. Is it even possible to do something like this with app and play store? If yes, how can I enable it via revenue cat
For my new app (having no login support), I want to support a few coins to use the pro features to every user, post that they will be prompted to purchase more. I don’t want the user to be able to get those coins again and again by reinstalling the app. I also need to update the available coins via revenue cat if possible.Is there any such support in revenue cat? Need to know how does RC is able to store the user identifier on its own which is persistent across reinstall or restart of the phone.
I’m creating a webbapp (web + ios + android) and I’m setting up a minimal subscription support, using Revenuecat as source of truth.My implementation:The bakend receives a webhook call both from RevenueCat or for the frontend (when subscription succeeded). It just tates revenuecat app_user_id field OR the user_id (if is a frontend call, which is the same as app_user_id), and checks against RevenueCat the user entitlements, updating the associated entitlement object in the backend database. We dont care about different fields for each event kindSummary: Each time something happens (event), my backend doesn’t even care about the payload of the call, it just update entielements expiration in the database. This allow me to be completely agnostic to the platforms: IF SOMETHING HAPPENS → UPDATE ENTITLEMENTS.The problem comes to present a Manage Subscription button in the frontend. Because I don’t know or store the platform through the user has subscribed to my App.That leaves me to the quest
I was using API v2 to get customer info in order to get their entitlementsresponse = await fetch( `${apiUrl}/projects/${projectId}/customers/${userId}`, { headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, })Sometimes though I noticed that active_entitlements.items would be empty, even though the user did indeed have an active subscription. So I figured I’d try using the v1 endpoint insteadresponseV1 = await fetch(`${apiUrlV1}/subscribers/${userId}`, { headers: { Authorization: `Bearer ${apiKeyV1}`, 'Content-Type': 'application/json', },})And there it is! In this response the entitlement is included. v2 response, no active entitlements:{ "active_entitlements": { "items": [], "next_page": null, "object": "list", "url": "https://api.revenuecat.com/v2/projects/proj6e8ba871/customers/823211fd-6c1f-4d10-8b1f-de9718832140/active_entitlements" }, "experiment": null, "first_seen_at": 1741892521463, "id": "823211fd-6c
Hi,I have a blind spot when users delete their account from my Flutterflow app. That is, any paid subscriptions stored in RevenueCat remain live. Currently, only the anon Apple ID is attached to the RevenueCat record (this isnt stored in my auth users database though). The simple solution would be to also set the Apple email in the RevenueCat Customer record - then I can find a match with my auth users record. How can I have RevenueCat store the email (aswell as the Apple ID) when a purchase is made please? I’m not a coder and so I was hoping it was a settings adjustment, but I can’t see this anywhere. Many thanks for your time.
When I try to pay for a subscription in the app, and then I cancel the subscription.When I log out of the account and switch to a new account, and want to retest the paid subscription function, the following error is displayed.And the terminal shows those error: 🤖‼ BillingWrapper purchases failed to update: DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode:: DEVELOPER_ERROR.nullE/[Purchases] - ERROR( 7251): 🤖‼ PurchasesError(code=PurchaseInvalidError, underlyingErrorMessage=Error updating purchases. DebugMessage: Account identifiers doon't match the previous subscription.. ErrorCode: DEVELOPER_ERROR., message='One or more of the arguments provided are invalid.')And no matter which account I switch to, the same token is used when creating an order? In other words, when using this app, the user's Google Play account will be bound to the first paid account by default. After that, no matter which account this app switches to, an error message will be d
Is there a broad timeline for adding Catalyst Support to the v2 paywalls?
So, I’m pretty sure this is a bug, but I wanted to post this here first. I have this working successfully in Android. But in iOS my pay flow hangs.In my pay flow, subscriptions are retrieved successfully, but when I go to purchase the selected package, it fails: Purchases.purchasePackage({ aPackage: packageToPurchase })Showing configured productsAt this point it should present the pay flow, but hangs.In android, it looks like this..
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.