Get help with anything related to RevenueCat.
Recently active
Hi, I’m currently trying to integrate this APIhttps://www.revenuecat.com/docs/api-v2#tag/Customer/operation/list-subscriptionsIn the response example, it shows `entitlement` with `product` details of that entitlement. But, from my testing, the `product` field is not in the response. I've tried experimenting with `expand` parameter with multiple values, but the `product` field is not showing. Is the documentation wrong? Can you tell me how can I get the `product` details? "entitlements": { "items": [ { "created_at": 1755827296320, "display_name": "Premium", "id": "entl861f....", "lookup_key": "premium", "object": "entitlement", "project_id": "proj8d....." } ], "next_page": null, "object": "list", "url": "https://api.revenuecat.c
Context1I have an existing iOS app using RC for subscription and lifetime purchase of Pro features.I am about to roll out a Mac version (part of Shipaton).For both, I would like to implement virtual currencies. This is a long-planned feature to be used to buy content where a portion of the payment would be forwarded to content authors. I’ve implemented most of the local document model including content rights tracking all the way down, was holding off hoping you’d solve the rest for me.I have also considered allowing coins to be used to purchase short-term access to Pro features, for people who hate subs and don’t want to commit to the size of the lifetime purchase.These products (Touchgram) emphasis user privacy and preserve anonymity, requiring accounts only for people who will be submitting content for re-sale. Context2As a separate Shipaton submission, I’m building a Compose Multiplatform app. However, if virtual currencies prove problematic, I think the business model can work wit
I’ve been working with the API and noticed that in several endpoints where active_entitlements or similar objects are returned in a lightweight format, we only get the internal entitlement_id, like this: { "entitlement_id": "entl498b7a7b44", "expires_at": 1755783769000, "object": "customer.active_entitlement"}However, it would be extremely helpful if the lookup_key was included as well in these responses.For example, in:GET /v2/projects/{project_id}/customers/{customer_id}GET /v2/projects/{project_id}/customers/{customer_id}/active_entitlementsWe only get the internal ID, and in order to know which entitlement this refers to (e.g. "Pro", "Premium", etc.), we have to make an additional API call to:GET /v2/projects/{project_id}/entitlements/{entitlement_id} This adds unnecessary complexity and overhead, especially when managing entitlements for multiple users at scale.Would it be possible to include the lookup_key directly in all entitlement summaries across the API?It would make inte
I’m building an app where the user can make a purchase without creating an account. In this case, RevenueCat associates the purchase with an anonymous App User ID. Later, I prompt the user to create an account, and I call:await Purchases.logIn(newUserId)(Using Flutter SDK)This correctly links the original anonymous user to the new App User ID (an alias is created in the dashboard), but no TRANSFER webhook is fired.I’m relying on RevenueCat webhooks to keep my backend subscription data in sync, but in this case no webhook is triggered — so my backend doesn’t get updated.Questions: Is this expected behavior when logIn() creates an alias rather than transferring the purchase? If so, what’s the recommended way to update my backend in this flow?
Hello,Two of my customers have downgraded from an Annual (Trial conversion) to Monthly.It is my understanding that the down grade would only ‘apply’ at the end of the current subscription period (therefore in 12 months time for these candidates)However the screenshot here in RC is showing an immediate change and the Total Spent reflects the Monthly subscription price. When i check ‘View Details’ to see the events, i only see PRODUCT_CHANGE, i don’t notice any refunds. Can someone explain what is happening? Why is Total Spent reverted to a monthly value. I’d expect it to be for the Annual Tier (which is $99.99)
I am getting the V2 Paywalls setup. I have it working on my Simulator just fine. Now I am testing an actual device & my Paywall gets stuck.the `applicationId` is the same on both. I was originally calling `await Purchases.getOfferings();` so I could show my custom loading instead of the loading paywall UI. But that was getting stuck also.There are NO errors in my logs. I do have `MISSING_METADATA` warnings, but isn’t that OK because it’s a “DEV” bundle and will never actually be submited for approval. Plus, it renders on the simulator. That being said, I have added screenshots so they’re now “Ready to Submit”. Is there something different about my physical iPhone compared to simulator? Android is OK on both simulator & device
Hi, Does anyone ever encountered randomly this issue in the lasts few days ?I’m getting that using a Firebase Cloud Functions, never been able to reproduce using Postman... GET /v1/subscribers/{id} return 403 with : data: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n' +'<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">\n' +'<TITLE>ERROR: The request could not be satisfied</TITLE>\n' +'</HEAD><BODY>\n' +'<H1>403 ERROR</H1>\n' +'<H2>The request could not be satisfied.</H2>\n' +'<HR noshade size="1px">\n' +'Bad request.\n' +"We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner.\n" +'<BR clear="all">\n' +'If you provide content to customers through CloudFront, you can find steps to troubl
Hello,I have an app that’s been live for about a year. When I first set up the project, I didn’t define my own user IDs, so RevenueCat has been assigning them automatically. Now I’d like to switch to using my own user IDs to make subscription granting and tracking easier.My question is: what happens if I assign new user IDs to existing users? For example, if a user currently has a premium subscription under their RevenueCat-assigned ID, will their premium status still be recognized after I set a new ID?This is crucial to clarify, as I want to avoid any risk of premium users losing access to their subscriptions. Thanks in advance for your guidance.
Live paddle webhook is trigger successfully but data is not coming at revenue cat side.For sandbox user data coming revenue side and it is working fine but not for live.I am verify Live api key all fine. then I added the API key in revenue cat then webhook automatically in my live Paddle account. And logs print in paddle as well. but LIve data not coming in RevenueCat sideplease help me what is wrong here
Hi!Is there anyway we could set a “default” entitlement for new users.The trial from Apple Store imply the activation of a subscription and it seems to repeal a lot of users.Is there any way we could have something to give new users the ability to try the app with an entitlement with a limited duration? Doing it through the Rest API induce a lot of latency and we have to wait for the app to contact the server, then the server to grant the entitlement and finally the local customer to synchronise and sometimes it takes a long time. It would be great to be able to assign a default entitlement when a user is created without relying on the various stores. Is something like this possible? Is it a feature you could consider? Thanks!
I’m integrating with RevenueCat webhooks to track subscription plan changes across iOS and Android. From the documentation, I can see the following events are emitted when a plan change occurs: Android: PRODUCT_CHANGE,INITIAL_PURCHASE iOS: PRODUCT_CHANGE,RENEWAL My questions: Can I rely solely on the PRODUCT_CHANGE event to handle corresponding plan changes in the backend for both iOS and Android? Does the PRODUCT_CHANGE event guarantee that the payment has been processed successfully, or is it just an indication of the plan change attempt? In the case of a payment failure during a plan change, what happens to the subscription? Does the existing subscription continue until the end of the billing period? Or would RevenueCat emit an EXPIRATION event for the new subscription?
I’d like to see the list of all customers (people with a revenuecat id, not necessarily a subscription), order by last open or something, is there a way to do that? Or at least get the ability to search by customer id, as typing in all 32 chars of an id from a screenshot gets a bit old quick :) I see customer lists, but is there a way to just do a one time search?
When I access they web billing payment section for react native, it says sandbox on the top. Is this valid or should it not be saying that? Sorry if this was said before I couldn’t find anything about it.
After Google will also open up to external payments (https://support.google.com/googleplay/android-developer/answer/14372887?hl=en&ref_topic=15820351&sjid=9606841540042051-EU) will there be an option for the Web Purchase feature on Android Paywalls as well?
My main question is:Is there another way to implement offer codes aside from using Apple’s native offer code redemption either through URL or Purchases.shared.presentCodeRedemptionSheet()? Context:The apple store connect is really restrictive when it comes to offer codes.Like only having 10 offer codes per subscription. That is important because we plan on using this for affiliates and if we have more than 10 affiliates, we have to make another subscription of the same price but different identifier, and that doesn’t seem like a good solution. This adds up to the fact that RevenueCat’s webhook records the offer code name in the webhook instead of the custom code name.Custom codes are always unique and considers even deactivated offer codes or custom codes. We don’t know how many users our affiliates would get and there’s a set maximum of 25000 redemptions for a custom code which means if that is exhausted, people can’t use that offer code anymore.During testing, there is an occurrence
I have connected with live paddle account but it display me message connected to paddle sandbox. If I have want change any thing live automatic to manual save not actIve, it is always disable and I am not able to save the changes.
I no longer offer Lifetime Premium, so I want to delete the in app purchase from the App Store, so it no longer shows under my app.Can I do this without the users having bought this being affected? I want their entitlement to stay the same.
Hi everyone, my app is keep getting rejected. I made sure the annual price is displayed correct and monthly price on the paywall and I have 3 day free trial. Guideline 3.1.2 - Business - Payments - SubscriptionsWe noticed that one or more of your auto-renewable subscriptions is marketed in the purchase flow in a manner that may mislead or confuse users about the subscription terms or pricing. Specifically:- Your auto-renewable subscription promotes the free trial or introductory period for your subscription more clearly and conspicuously than the billed amount.Next StepsPlease revise your auto-renewable subscription purchase flow to ensure that the billed amount is the most clear and conspicuous pricing element in the layout. Any other pricing elements, including free trial and calculated pricing information, must be displayed in a subordinate position and size to the total billed amount. Factors that contribute to whether the billed amount is clear and conspicuous include, but are no
Hello, Is there any way to display text based on selected package ? I know about the introductory offer text but my case is as following and it cant be solved with introductory offer text.I have three packages.Weekly Annual LifetimeWhen weekly and annual is selected, I am displaying a text that says “No commitment , cancel anytime” which is fine. But when lifetime offer is selected this does not make any sense and I want to display “Pay once use forever” instead of that. I researched but couldn’t find a way to do it or define a custom variable for packages.Any suggestions would be great.Thanks in advance.
Hi, I triple checked and all of my iOS certs and pk8 files, secrets are all valid. its connected to my app store connect automatically I made RevenuCat an app manager. It successfully linked my products to apple. Yet in apple I have 14.99 a month, and 99.99 a year. But the app continually shows the wrong pricing (9.99 and 79.99). NO idea where it’s getting that from? I’m in sandbox mode. I tested on the demo xcode app got the same thing. Any help? I am trying to get this app released after a grueling 1.5 years of work! Thanks, Michael
I haven’t found any good resource/answers for this, if there is something please point me to it.My app keeps getting rejected (has been in the store for years and the purchase of ad removal has been in for over a year now) with my latest update. They tell me that I need to have a dedicated “restore”, which I do. I check for the entitlement being active and if it is I then check to see if I am supposed to showing ads. Basically if showAds==true and entitlement==false show “Remove”, if showAds==true and entitlement==true show “Restore” else show nothing. I’ve done some basic logging and testing but what I can’t seem to figure out how to test is the restore scenario. I have a sandbox account setup as well as the simulator with the storekit setup. I can install the app from XCode, run it, make the test purchase and all works as expected. How do I test the restore though? That requires removing and reinstalling app, which appears to also reset my purchase history to appear that I have not
Hi there!We’re eager to test A/B testing functionalities on RevenueCat, but we realized this is actually not possible because it doesn’t support custom attributes.We already use custom attributes to display specific paywalls to defined partners’ users. If we run a test, we don’t want users coming from partners to enroll in the experiments (they still need to see the usual paywall as defined per partner agreement!).Anyway, in the enrollment rules, we can’t make sure we use the same custom attribute we use in targeting. This is frustrating: it’s a blocker for us on running experiments. For the company this is getting a concerning issue, as we’re looking to validate our product proposals by defining its more appealing bundles and prices.We have cool feature there, but we can’t currently use it, and given our use case, I suppose it’s pretty common issue. When are we going to get this?
I’m build an app that handles multi account, user can add multiple accounts and switch to other account and perform tasks Each account should have their own subscriptionBut the problem here is I purchased “Plan A” in “Account 1”if i go to “Account 2” and purchase “Plan A” It says this subscription is already active.but it’s active on “Account 1” Not on “Account 2” But i can see few apps like instagram, twitter . They have this thing for blue tick. I can buy a blue tick subscription in “Account A” for 6$, and i can buy a blue tick subscription in “Account B” for same amount. both managed in same Play store account subscription. Kindly guide me, how should i procced. Thanks.
Step 3 of the Android setup requires you to ‘invite a user’ on google play corresponding to the service account created in the previous step. How does one invite a service account when the only input for inviting a user is the email?
Hi there, I saw an older thread here about this from 2021. It’s 2025 and I am wondering when RevenueCat would support other Android stores like Huawei.
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.