Get help with anything related to RevenueCat.
Recently active
I'm attempting to retrieve active trials for a specific app using the Overview Metrics V2 API. However, the API response does not include the app name. How can I extract the app name from the response, which provides data on active trials and active subscriptions for the project?
When the data returns for Metrics in the v2 API, what is “Num tx last 28 days”? There is no explanation about this parameter anywhere I have searched. I am guessing number of trials?Maybe using the complete word rather than tx would be more helpful to a user.
Hello everyone,I have 2 apps in the google play store and two apps in the iOS App Store. Both are subscription based. I would like to offer users a discounted rate if they subscribe to both apps (in a single store). For example, iOS app 1 charges $36.99 a week and so does app 2. If the user subscribes to both, I would like to charge them around $50 instead of making them pay for both subscriptions. Any thoughts as to how to do this?
I’m looking at moving my app to RevenueCat but I’m wondering how the Pro plan pricing is calculated when it comes to VAT?(Sorry if this has already been answered somewhere, I can’t find it) Is the 1% of MTR calculated from:(Price + VAT) * 0.01 Price * 0.01 (Price + VAT)*(1-store_commission_rate) * 0.01 Something elseNumber 3 is my revenueNumber 2 is mine + Apple’s/Google’s revenueNumber 1 is mine + Apple’s/Google’s + the government’s revenue. In Europe number 3 is often 60-70% of number 1. So if RevenueCat calculates pricing based on number 1 then it is more like 1.5-1.7% of my actual revenue. Which may still be reasonable but something I would like to know when I compare alternatives.
I want to have a lifetime free premium offer for me and contributors. Instead of creating my own backend for this, I want to use RevenueCat as well.In AppStoreConnect, the longest subscription I can offer for free is one year, which is not sufficient.Therefor I made a non-consumable in AppStoreConnect and connected it to RevenueCat.I will implement my own logic to manage which promoCode is valid for a free lifetime subscription.I have the following two questions: Can I reliably hide this non-consumable from those who are not meant to see it? In AppStoreConnect there is no way to add logic to who can see it, so does that mean if I simply never show it in my app, nobody can access it? Because I know that for subscriptions, when going to cancel in the apple settings, one can see multiple offers, and I don’t want this non-consumable to show up in any place unless with my dedicated UI for it. Is the following implementation something that would work for what I’m trying to do? Get promo co
I build local development builds and the Revenuecat API works fine. Even with Expo Go, Revenuecat works fine, but it does not load data from Revenuecat when submitted to Test Flight and installed on my iPhone. Basically my offers are not shown at all. Here is the data loading component: const SubscribePackages = () => { const [packages, setPackages] = useState([]); const navigation = useNavigation(); const fetch_prices = async() => { const result = await Purchases.getOfferings() setPackages(result.current.availablePackages) } const subscribe = async(item) => { try { const {purchaserInfo} = await Purchases.purchasePackage(item) const purchase = await Purchases.getCustomerInfo() console.log('purchase: ', purchase) if(typeof purchase.entitlements.active['pro'] !== 'undefined') { await navigation.navigate('Account') } } catch (error) { console.log(error) } } useEffect(() => { fetch_prices() }, []) return ( <
Has anyone had this issue before? We emailed the RevenueCat team and they haven’t been able to help us. Thanks in advance!
Hi there!We have one subscription subscription_id, within which there are two base plans base_plan_id_1 and base_plan_id_2.After purchasing, our application sends a fetch token to our server, which we forward to /v1/receipt/:{ "app_user_id": "$someUserId", "fetch_token": "$someValidFetchToken", "is_restore": false, "product_id": "subscription_id"} The call is executed successfully, but in RevCat and all webhook events, it always shows that the base plan base_plan_id_1 was purchased, regardless of which actual base plan was bought.Example:User buys a Monthly subscription for 0.99 - it works and is tracked correctly User buys a Yearly subscription for 9.99 - it’s tracked in RevenueCat as Monthly for the price of 9.99 After studying the SDK, we tried sending the following variants, but nothing changed.Sending platform_product_id:{ "app_user_id": "$someUserId", "fetch_token": "$someValidFetchToken", "is_restore": false, "product_ids": [ "subscription_id" ], "platform_product_
Hi all - hope everyone is doing well!In our app, we have premium access available to users via in-app subscriptions. We are now introducing a ‘promo-code’ system which allows users who are both subscribed/not subscribed to redeem free premium access for a certain duration (1 week, 1 month, etc).For users who are not subscribed, we can simply grant them promotional access through the RevenueCat SDK. For users who are subscribed, the effect should be that their next billing date gets delayed by a certain duration. Our current approach is to transfer them onto a Promotional Offer within their existing product if they are on iOS, and transfer them onto a new product if they are on Android. In both cases, this promotional offer, and alternative Android product have an initial free period.Is this the correct approach to achieve this functionality? I am concerned that by doing this, a user will lose out on their already purchased subscription? For example, If i pay monthly, and have 3 weeks u
Our application only allows user to use it after logging in and purchases as well. The business logic does want to say that a purchase is only tied to one user ID (otherwise users can log out and create new account and connected the purchases to that new account and the log out and go back to the first account and do it again etc). Does this mean that Keep with original App User ID is the only options we should use?If so, how does work to manually transfer or assign purchases to a user say when they delete their account and decide to maybe come back later and restore it into a new user id but still unique?Any advice is appreciated. Thank you
I am using react native library/sdk on Android to complete a purchase and want to get clarification on how to know the purchase completed successfully. Using this example, i call await Purchases.purchasePackage(package)but this evaluates to false:typeof customerInfo.entitlements.active.my_entitlement_identifier !== "undefined"and it is considered not a successful purchase even though in the OS it said purchase was done ok.seems like my_entitlement_identifier is undefined.Any idea why this would happen?The resulting customerInfo has activeSubscriptions populated to it is telling me it was a success. What is the best way to know it was done successfully? Just compare the product id of the purchase with the one inside activeSubscriptions?productIdentifier coming from the promise is just the name of the subscription and does not include the base so that was not enough to tell..
I have implemented RevenueCat in my app and am testing the restore functionality across multiple devices. I use a device identifier as the RevenueCat user ID. This is a UUID generated when I first authenticate the app on first run.When I restore the subscription on another device, the subscription is transferred to the new app user id, and the old device no longer has a subscription to the content. I can get it back by hitting restore in the old device, but then the new device does not get the content too The Apple guidelines state:“Subscriptions must work on all of the user’s devices where the app is available.”How do I ensure that the subscription is available on all devices which the user owns, and has the app installed on? I don’t want to have the person perform a login step.
After following the suggested answer I am still facing the error of“ 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).”
Hello Everyone,I am currently utilizing the RevenueCat SDK in my Flutter project to manage in-app purchases, specifically, monitoring real-time changes in users' subscription statuses. The SDK has been instrumental in achieving this on the client-side, and now, I am looking to sync this data with my backend.In my backend (which is developed using the Elixir/Phoenix framework), I have a database table where I would like to maintain a record of whether a user is subscribed or not. The main goal is to ensure that the subscription status in my backend is always in sync with the real-time status on the client-side.Here are my thoughts so far:One way could be to send the subscription status from the client to the backend every time there is a change. However, I am concerned about the reliability and timeliness of this approach. Another approach could be to use webhooks, but I am not entirely sure how to set this up with RevenueCat and Flutter.I am very interested to hear if anyone has encoun
Hello, Let’s say I have a project called Flexifit that is both on the mobile and the web.I am using revenuecat to handle subscriptions on the iOs app, users are presented with a paywall before signin in, meaning that they could be a “pro” member without user account.After they create account, how do I reliably “attach” the revenue cat user to my database user? Also on top of that what uniquely identifies the revenue cat user? is it the original_app_user_id or is the email address that is used to login to the app store? I want a single source of truth so that I could verify their subscription status no matter what device they are using.The reason for this is that if user decides to go use the web version, I could check their pro status by calling my database and then checking what revenue cat user id belongs to the current user.
I don’t always want to have to develop features on my physical device and obviously we can’t interact with the Simulator on iOS, related to getting offerings for paywalls…what’s the suggested workaround to avoid having to set a subscription in development on simulator?
I am trying to integrate RevenueCat into my Flutter app. Regarding Authentication I have the following setup:I have a LocalAuthId, which is created when the app is installed. I think this is comparable to the AnonymousId from RevenueCat, but I’d rather be in full control and also I’m using this ID in other parts of the app. I also have the option for users to either log in to an existing account, or create a new account. In both cases the user would then also have a ServerAuthId, which is connected with their database account in supabase.The expected behavior is the following:Upon installing the app, the user is not signed in to the supabase server, and therefor only has a LocalAuthId for now. I call PurchasesConfiguration(<key>)..appUserID = myLocalAuthId; to configure RevenueCat on the device. The user should be able to purchase a subscription, which would then be linked to this device.Then, if the user decides to create an account, I believe that the purchase should be transfe
Hi there, I currently have some products that are available at certain price points (i.e. $1.00, $2.00, $3.00, etc.) However, when presented to users of other countries, the IAP prices that show up in `offerings.current.availablePackages.map((p) => p.product.price)` show up as the local currency values. One workaround that I can think of is to use the `title` of the product (which I included the USD price on) to parse out the USD price that corresponds with the product, but was wondering if there was any other way? Also on the webhook side, if they purchased a package in their local currency for 4.99 CAD (which corresponds to my $3.49USD IAP), what would I get on the event side? I know there is a `price` field that is supposed to be the price in USD. Will that give me $3.49 or will it just do a direct currency conversion and end up with some approximate amount like $3.60 or something?In the end, I want all the tracking to be done in USD
Hi Everyone,For some reason in my app, during the registration process, and while updating user details, the paywall pops up, which prompts the user to buy before their setup is complete.That of course generates an RCAnonymous userId in RevenueCat and my firestore database. Prompting the users to navigate to the subscription page would work but relys on them remembering to do it, even after sending reminder emails.Is it possible to call Purchases.restorePurchase() during the FirebaseAuth login flow, after the user has successfully logged in and the user details have been retrieved?Can I call this... _restore() async { setState(() { isLoading = true; }); try { await Purchases.restorePurchases(); appData.appUserID = await Purchases.appUserID; } on PlatformException catch (e) { await showDialog( context: context, builder: (BuildContext context) => ShowDialogToDismiss( title: "Error", content: e.message ?? "Unk
when the user downloads the app, I want the App Store to display the subscription options there, which have to be selected to download. I don’t have any “freemium” options, either you’re subscribed and access or not. Ideally there is no paywall. can this be achieved?
Hi RevenueCat community,We are going to open part of our application to unauthorised users.And we want our users to be able to purchase a Pro subscription before they even sign up.Customuse backend handles RevenueCat webhook events and tracks user subscriptions to control access to features. But it works with real user id’s only.Our thought was that after signing up, we could restore/transfer purchases made by anonymous user to the registered user (with a custom user ID) so that webhook event would be sent to our backend and we could assign the subscription. But it seems that instead of transferring, a simple aliasing takes place, and no webhook events are being sent.We're sure this is a typical scenario, and would appreciate it if you could advise how to approach this?How can we check on the backend side whether the user has active subscriptions in RevenueCat at the time of registration?Sincerely,Dmitry, Customuse
Hi,I’ve researched the subject for some time but I can’t quite figure out how is RevenueCat able to compute the takehome_percentage value for a certain transaction. I do understand that when somebody pays for a subscription the sdk knows the value + currency and it can extract the receipt then pass the actual transaction information to the api. What makes me wonder is how accurate is the takehome_percentage that RevenueCat’s webhook passes forward. In my mind the only way this would be possible is by looking inside the unified receipt and determine if that user was subscribed for more than a year, then apply the reduced percentage to the next transaction.Thank you
Inb4 great platform and docs ✋Hi, I’m almost finished with my iOS app and i’m at the point where i want to integrate in-app purchases. So far so good with settings up my project in revenuecat. My in app purchases is a common case of consumables - coin packages non-consumable - lifetime access auto-renewal subscriptions - silver / gold - monthly / yearlyI’m using firestore and cloud functions as db and backend, and i’ve also set up the revenuecat extension for firebase. And let’s say on the user profile in firebase I have a field calledactive_subscription = silver / gold / free / lifetime Even though i’ve read lots of article about this, official documentation, examples etc, I still have some questions about certain flows especially Refunds I’m not sure how to handle them. If a refund is accepted by apple for a transaction, the cancellable event is triggered for the web hooks? if that is true, then in my backend hook i’ll update the profile active_subscription? then what’s the poi
Hi,I want to ask is there any possibility to connect Stripe payment with RevenueCat subscription? I mean do stripe can create new user with subscription linked with stripe user base on webhook subscription?I have configured Stripe and Revenue cat like here.Also I want to ask where I can see request or events from `incoming-webhooks/stripe` endpoint?Or I can create in RevenueCat subscription by send request below?curl -X POST \ https://api.revenuecat.com/v1/receipts \ -H 'X-Platform: stripe' \ -H 'Authorization: Bearer YOUR_REVENUECAT_API_KEY' \ -d '{ "app_user_id": "my_app_user_id", "fetch_token": "sub_xxxxxxxxxx" }'
Hello. For the life of me, I cannot get the completion block to fire when making a purchase. Purchases all have gone through successfully but RevenueCat is not letting me know so that I can do post-transaction clean-up. [[RCPurchases sharedPurchases] purchasePackage:package withCompletion:^(RCStoreTransaction *transaction, RCCustomerInfo *customerInfo, NSError *error, BOOL cancelled) { NSLog(@"SUBSCRIPTION PURCHASED"); }];Notes: Running iOS 17.0.1 (have tried 15 as well). Testing in sandbox, multiple devices. Have created new sandbox user(s), logged out of device, deleted app, restarted device, restarted Xcode, cleaned build folder. Several times. Using Objective C. Completion block for getOfferings and restorePurchases does work properly. I know I’m new to RevenueCat, but everything else seems to be working fine, all except this all-important feature. Any assistance or insight on this would be greatly appreciated. Thanks!
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.