Get help with anything related to RevenueCat.
Recently active
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..
Hi,I’ve had two instances so far with this Subscription cancelled due to a billing error:There’s no more info about the billing error in details. How do I debug this? What could have been the cause? Thanks ahead!
I created an app in a RevenueCat account (info@mycompany.com). However, to rapidly release in app store, I released it under my personal App Store connect account (myself@gmail.com). Since we’ve started getting paid subscriptions, I now want to transfer the app to my company’s App Store connect account (info@mycompany.com). I’ve moved the app to my company’s App Store connect account (info@mycompany.com) but I’m not sure how the RevenueCat migration would work since the RevenueCat account is already under my company’s email (info@mycompany.com) In summary:There is 1 RevenueCat account (info@mycompany.com) Initial App Store account which was used to create api keys, certificates, etc. (myself@gmail.com) Company App Store account which now has the app after I moved it. (info@mycompany.com) Should I re-create the api keys, certificates, etc. from within my company’s App Store connect account? Do I need to change the webhook urls, etc in RevenueCat? Will it affect the existing paid custom
Hey,We recently integrated Customer Center and are offering promotional offers in our when a user tries to cancel. I’m trying to evaluate the efficacy of the offer.Question 1: Is there any place to in RevCat to evaluate the efficacy/performance?Question 2: I see two ways to track promotional offer conversions, either by segmenting on the Active Subscriptions chart by “Offer Type” or by checking the “period_type" on webhooks. The question is do these track or fire, respectively, when the user converts on the promotional offer paywall, or when the promotional offer goes into effect, which could be many months from when they see the paywall? An example of the latter would be a user tries to cancel an annual with 6 months left on it, sees an offer for the next year at half off, accepts this offer, but that next year will not start for another 6 months and my not show up in the char or fire a webhook.Thanks!
Hey.I have configured Mixpanel integration on RevenueCat for tracking different purchase events. Can someone guide me, how can I set a custom property for these revenue cat purchase event - which are being tracked on Mixpanel.
I have a KMP app that is done except for billing. How does revenue cat handle promo codes for both Google and IOS? For marketing I plan on having 6 month free codes. We also want to offer our Beta testers 1 year free for participating. Will a separate set of codes have to be generated for IOS and google or can revenue cat create 1 pool of promo codes that will work on both platforms? It seems like this would be possible using entitlements I just don't see a way to enter a 1 time use code into the entitlements. Thanks,Kurtapa
We’re using AWS and our API is behind an API Gateway. AWS API Gateway provides API key authentication via the `x-api-key` header. Is there a way to customize the header RevenueCat uses when making webhook calls so that RevenueCat can integrate with APIs in AWS? Thanks a lot!!!Patrick
EDIT: solved, user error
Something strange has been happening over this last week. Each user who starts a free trial has it automatically cancelled due to a billing error. Event data reported by RC contains "cancel_reason": "BILLING_ERROR".The app currently looks for billing issues (via billingIssueDetectedAt in RCEntitlementInfo) and guides the user to update their App Store billing. Beyond this, to prevent revenue loss, I’ve switched to a discounted offering without a free trial while I figure out what’s going on.For context, it’s an iOS app using Purchases v3.11.1 (although this is probably not an SDK issue).Any ideas as to what’s happening here?
My app requires a user account login before purchasing a subscription. It allows the account owner to create, edit and share content. I only have one subscription type & it’s required to create content. I will not allow family sharing of subscriptions. It’s important the content ownership is under the user account, this allows them to edit the content across platforms (Android, IOS, Web).My question is regarding the Restore Purchases option required on IOS. I see two scenarios here:Subscription is already associated with currently logged in user - no-op: I tell the user they’re already subscribed (the SDK Purchases object should already know that). Subscription was created in user account A, and they’re logged into user account B.For scenario 2, the only useful thing I could do is remove the content owned in account A and add it to account B. This could actually be useful for my app, if the user ever losses access to their original account A, I can tell them to create a new account
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.