Get help with anything related to RevenueCat.
Recently active
I have an app that has been available in the App Store for sometime. Many users have made a life time purchase to be ad free.I now wish to convert that payment to a yearly subscription.I have been doing some testing with a prototype app after following the tutorial by Code With Chris.The life time purchase will no longer be an option once I have updated to subscriptionIf a life time purchasers deletes then reinstalls the app after the update they will see the ‘Go Ad Free’ button and the ‘Restore Purchases’ button available to them.Question - I want to understand the behaviour when one of these users taps the ‘Go Ad Free’ button instead of restore.In my testing the App Store response does recognise that the user has already purchased life time Ad Free status and appears to charge them for a subscription. Although the subscription doesn’t appear in the sandbox recent transactions so maybe there is no charge? It would not be clear to the user though.Sorry for the long question. I hope
Curious why there is a 7 day delay on this chart but not on others?
Hello,I’ve configure a 7 days trial period in subscription in playstore and also an introductory period.getofferings() display price introductory at 0€ for 7 days.The skudetail display "freeTrialPeriod":"P1W". and introductory with the price "introductoryPricePeriod":"P1M","introductoryPrice":"2,49 €"With info offerings, how can I display on paywall the price of introductory after the trial period ?Must I base my info Paywall on sku details?Thank you in advance.
I want to check a user account have active subscription from another device which have different user account? Note: I’m using Flutter
In the following dashboard:https://app.revenuecat.com/overview we can see the number of installs.Unfortunately we were not able to figure out how to retrieve this data related to installs.What would be the best way to retrieve the number of installs since the ETL export only contains subscriptions?
hey folks,we’re facing a bit of a conundrum:On iOS, we offer a 7 day free trial as an introductory offer. However, for some users that come from channel partners we’ve created (iOS 14) offer codes that give users either a 2 week or 1 month free trial. For these offer codes, we’ve set "No, this code will replace the introductory offer”.A few times now, a user who was supposed to use the offer code, instead redeemed the introductory offer 7 day free trial. After they do this, we give them the offer code and when they redeem it, Apple adds the introductory offer 7 day free trial to the 1 month free trial and so they get ~37 day free trial.Is there any way for me to have it change from the 7 day trial to the 1 month free trial instead, instead of going to the 1 week + 1 month?Also, users report that after they redeem the offer code (after initially redeeming the introductory 7 day trial offer), in their Apple ID subscription settings, they see “plan automatically renews at $X.XX/month star
One of our customers make subscriptions and we receive this webhook:{ "api_version": "1.0", "event": { "aliases": [ "$RCAnonymousID:***b501b80f91" ], "app_id": "app1bd0ad1cf1", "app_user_id": "$RCAnonymousID:***b501b80f91", "environment": "PRODUCTION", "event_timestamp_ms": 1627351153536, "original_app_user_id": "$RCAnonymousID:***b501b80f91", "type": "INITIAL_PURCHASE" }} After one hour customer change product and we receive this webhook:{ "api_version": "1.0", "event": { "aliases": [ "$RCAnonymousID:***b501b80f91", "$RCAnonymousID:***776c3a98f0" ], "app_id": "app1bd0ad1cf1", "app_user_id": "$RCAnonymousID:***776c3a98f0", "environment": "PRODUCTION", "event_timestamp_ms": 1627351457649, "original_app_user_id": "$RCAnonymousID:***776c3a98f0", "type": "PRODUCT_CHANGE" }} Why after product change RevenueCAT change “original_app_user_id” from ***b501b80f91 to ***776c3a98f0 and RevenueCAT ID ***b501b80f91 going from “orig
i am using react native in ios it is working fine ,but in android it is not working .could any one help me.but in android other react iap is working componentDidMount() { Purchases.setDebugLogsEnabled(true); Purchases.setup("****************************");}================version i have used============== "react-native": "~0.63.4", "react-native-purchases": "^4.3.0",============error i am getting ,showing it s not connecting with RC but it is working with IAP other pacages==================null is not an object (evaluating 'RNPurchases.setDebugLogsEnabled')at node_modules/react-native-purchases/dist/purchases.js:335:19 in Purchases.setDebugLogsEnabledat App.js:23:4 in componentDidMountat App.js:21:2 in componentDidMountat [native code]:null in commitRootImplat [native code]:null in performSyncWorkOnRootat node_modules/react-native/Libraries/ReactNative/renderApplication.js:54:4 in renderApplicationat node_modules/react-native/Libraries/ReactNative/AppRegistry.js:117:25 in
When people makes purchase we get the IP address as well separately, this allow us to do business analysis . What we found that in more than 40% case the location revenue cat showing is wrong. Can you please update your GEOIP database? Maxmind is the best provider in the world
I would like to know how to reset a RevenueCat-enabled Mac Catalyst app's in-app purchase state so that I can test the app's in-purchases with different sandbox users and with local StoreKit testing. Below is a more in-depth description of the issue I’ve had and how I've (so far unsuccessfully) tried to resolve it.(Note: in what follows, references to "app user IDs" are always to the anonymous app user IDs that RevenueCat automatically provides.)Prior to the introduction of local StoreKit testing for in-app purchases, it was useful to have multiple sandbox accounts to test in-app purchases (since a developer could use any one sandbox account only once to test a particular IAP— as you probably know, there's no way to "roll back" a purchase in a single sandbox account to try testing it again with that account).When I wanted to test an in-app purchase with a new sandbox user on the same iOS / iPadOS device on which a previous sandbox user was logged in, the following procedure reliably re
componentDidMount() { Purchases.setDebugLogsEnabled(true); Purchases.setup("mUQhRkqUFZPTbjuTxjsSts*******");}i am using react native in ios it is working fine ,but in andriod it is not working .could any one help me.but in andriod other react iap is working
I have an app that sell courses as video lectures written in flutter. My app is rejected from Apple Store because I suppose to use in-app purchases instead of an external payment method. Each course has its own price. I’m a little bit rusty about in-app purchases. There is a lot term here with revenuecat: products, entitlements, offerings. Do I need these all? Some courses are non-consumable and has lifetime access.Some courses are subscriptions and has a one time limit. I have a course detail page. When I enter here, I want to check if I bought this course. If yes, I’ll show all videos. If not I want to show a buy button. The prices, id and type(subscription or non-consumable) will come from my rest api. Should I create product id for each course with these information like $courseId1_tier_1, $courseId2_tier_3, $courseId3_tier_1 or I should create product ids in apple and in google and then share the same products ids with rest and rest api should return product id when course detail
I state that both with iOS Device and Android Device everything works fine. As for the Android emultor I can regularly test the in app purchase (emulators with Google play services), with the iOS emulator (with iOS 14.0) I have difficulty making it work with the storeKit. I followed the explanations to configure it but it shows that I have done something wrong. One step that I didn't understand is that of duplicating the Configuration.storekit. Why is it necessary to duplicate it if you can select the first one in the next step? If you have any advice on mistakes that other users have made previously that prevented the emulator from working properly with storekit, I welcome it.
Hi, We see different behaviors regarding aliases and we would like to know more about how it works.Here are the different behavior that we see:1- If we set a user id, sometimes the alias is set as the App User ID, sometimes the App User ID stays the RCAnonymous id but the alias is there when we look at the user aliases. What is the logic?2- If we set multiple aliases, how RevenueCat decide which one to use as the App User ID? Thank you,
Hi, what happened to the very very good tutorial here https://support.revenuecat.com/hc/en-us/articles/360041793174 about troubleshooting empty product list? Now it redirects to a very short post of the forum with missing images and with very few informations The previous article was very good, at least fix the missing images.
Can you please explain how the unsubscribe_detected_at field is populated?I have some users who have opted out of auto renewal, but their unsubscribe_detected_at field is null. And some users who don’t have it as null.The only difference I see is that users in the latter group re-subscribed after opting out.
When setting up your Play Store service credentials, it can take up to 36hrs+ for your credentials to work properly with the Android Developer API. You will see "Invalid Play Store credentials" errors and be unable to make purchases with RevenueCat until this happens. Any changes to these credentials will also take up to 36hrs+ to fully propagate. If the Google Play Android Developer API has not been used in your project before or it is disabled, you can enable it by visiting APIs & Services in your Google Cloud Platform. Service Credentials Not Populating under API accessThis is a rare case, if your service credentials are not populating under Google Play Console > 'API access', be sure to check if the service credential email address is in the "IAM" tab in Google Cloud Console. To navigate to this page, go to Google Cloud Console > IAM & Admin.If you do not see your service credentials under this tab, select the "+ ADD" button at the top of the page and copy the email f
Hey,Currently, I’m experiencing a strange behavior when the user has one google account and logged in on two different devices and also the user has two accounts in my app.When the user is purchasing a subscription on one device this subscription is applied to both accounts of my app.I'm expecting that it should be applied to one of my accounts and the second account shouldn't see this subscription.Can someone help me with it?didn’t find an answer for this issue on the forum =(
I've setup the Facebook and the Stripe integrations for my Android app, but the fb_mobile_purchase i setup as a target event doesn’t get any events.
Multiple subscriptions? How?Although rare, it's possible for a user to have multiple active subscriptions. On iOS, this could be done by accident if a user has multiple devices using different Apple accounts and purchased on each one. On Android, a user may have tried to upgrade/downgrade a subscription but instead purchased a duplicate. If using RevenueCat to make purchases on Android, you need to specify in the purchasePackage method whether it is an upgrade/downgrade, or else it will be treated like a regular purchase.If neither of the above cases apply, or you see a lot of subscriptions on the same user in RevenueCat, you may have hardcoded an App User ID instead of using a unique identifier for each user. Each subscription is actually associated with a different Apple or Google account, but each one is tied to the same hardcoded App User ID in RevenueCat. In order to separate these users out, you should release an update to your app that clears out the hardcoded App User ID, then
Refunds are issued differently depending if the subscriber purchased through the App Store or the Play Store. App StoreApple does not allow developers to issue refunds on behalf of users. Users will need to contact Apple customer support directly for a refund. RevenueCat will automatically detect when a refund has been issued by Apple.If a user requests a refund, you can direct them to the Apple support page: https://support.apple.com/en-us/HT204084 Play StoreThere are multiple ways to refund a customer that purchased through the Play Store:(recommended) Active Android subscriptions may be refunded directly through the RevenueCat dashboard. Click on the respective transaction event on the customer page and hit "Refund" in the upper right. Documentation for reference. Refunds can also be granted programmatically through the RevenueCat REST API. It's also possible to refund users directly through the Google Play console. This is not recommended since RevenueCat cannot track refunds init
How can I change my plan?You can change your plan at any time from your RevenueCat account plan page. See our Fair Billing Policy for more info about upgrading and downgrading plans. Why don't I see all the premium features for my app after I've upgraded?If you've upgraded your account but don't see the premium features (like charts) for your app, ensure that you are the app owner and not a collaborator. Only the app owner can manage billing. If you've upgraded your account as a collaborator by accident, don't worry - you'll only be billed if you're the owner of a live app so you can simply downgrade back to 'Build' and never be charged. If you were in fact billed by accident, contact us. How can I migrate off of RevenueCat?We hate to see you go, but if you need to migrate off of RevenueCat we'll happily export all of the receipt files we've collected. You should also remove the RevenueCat SDK from your apps to reduce API calls to our servers.
What is MTR?MTR stands for monthly tracked revenue. It's the amount of revenue tracked by RevenueCat (in USD, and before the platform cut) during a one month billing period. This includes paid subscriptions, renewals, and one-time purchases. Why do you base MTR on pre-platform cut revenue?Our goal is to help you take advantage of Apple's and Google's 1-year cut reductions as well as the benefits of moving subscriptions to less costly platforms like Stripe. This ensures we aren't disincentivized from making that happen.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.