Get help with anything related to RevenueCat.
Recently active
I’m implementing RC on Android. Sandbox testing.My use case is this:✅ I make a purchase in the app and reload the purchaser info ✅ The user correctly now has an active subscription, in both RC and Google Play Store❌ 5 minutes later I re-open the app and load purchaser info. The active subscription is gone from RC, both via getPurchaserInfo and on the website✅ On Google Play Store it’s however correctly still active and I keep getting purchase confirmations mails every 5 minutesWhy is the subscription deleted from RC after the initial 5 minute subscription period?
Relatively minor but just seeking some clarification on the numbers in the dashboard. We are currently doing testing and haven’t published the app to a production environment yet. As it stands the dashboard is showing 132 new customers and 138 active users, all of these are test users. Deleting the test customers does remove them from the Customers list (after a period of time) however the dashboard still seems to count them. Active users, as I understand it, is just the number of user ID’s (including anonymous/generated) that have been seen within 28 days. My question is over time we’ll still be testing things and will interfere with these numbers. Is there anyway to differentiate between the testing users and production. Toggling the ‘View Sandbox data’ doesn’t seem to effect these numbers?
I would like to track on my server when each user first subscribed. I hit the /subscriptions endpoint and check `subscriber.original_purchase_date`, but it is set to some date in 2013 (I only started implementing IAPs in the past couple of weeks). The property under `subscriptions.<product>.original_purchase_date` seems correct, but I would prefer not to have to check every product in that `subscriptions` dictionary for the earliest date, especially not knowing right now which products I will want to add later, and which of those I will count as subscriptions.What is the purpose of `subscriber.original_purchase_date` and why is it set so early? Is it an artifact of Sandbox testing? A bug?
Hello,I have an app, where I’m selling pictures. I have Non-Consumable and Auto-Renewable Subscription formula. This means, you can buy pictures one by one or you can subscribe for one year to get all of them. My GET API check your inventory, to make sure you own the image. Therefore I synchronise the database via Webhook. My RevenueCat structures look like this:I have 1 offering called default, with 2 packages (Annual and Lifetime) Annual package has 1 product Lifetime package has 1 product (I don’t want to map the product-image one by one, cuz it’s not scaleable) I have 2 entitlements First one is for lifetime things, therefore this has only 1 product (Lifetime package) Second one is for subscriptions and lifetime things, therefore this has 2 products My problem is, if my customer make a Non-Consumable purchase (so buy only 1 image), my webhook called, but i do not know, which image was bought. I know who bought, cuz after login I’m settings the app_user_id. Any suggestion?
User got purchase transferred from another user, in the renewal event after this transfer the webhook did not receive app user id, instead only RCAnonymousID is included in the webhook request. How do I know which user had this renewal in this case?
When I test the subscription in the sandbox, it prompts:Apple Media Services Terms and Conditions have changed.Finally, "Coming Soon!" appears and it is over, there is no response.Please see the screenshot below to help me see if any steps are missing.thank you all.
Hi, really loving RevenueCat!I have the following situation:Android App I initialize Purchases SDK in the AndroidApplication class with an anonymous User ID User logs in → I log in the user into the purchases SDK → User has an anonymous ID + my domain user IDThe problem happens, when the following happens:The user purchases a subscription with automatic renewal The user uninstalls the app and then installs it again The next time the webhook calls my backend for the renewal, it will contain ONLY an previously unknown anonymous ID and no way for me to match it to the userThe main problem stems from this I believe:Current App User ID Provided App User ID already exists? Provided App User ID has anonymous alias? Result Anonymous Yes Yes PurchaserInfo changes to Provided ID, no aliases created. My solution is to manually alias the current app user Id every time a user logs in IF the current app user id is an anonymous one. It has worked so far, however, it feels strange. Is t
Hey team, consider the following scenario: User Signs up. We show them an “Initial Paywall” Offerings: $20 month, 2 week free, $80 a year, 2 week free Here, we let the user “Skip” the Paywall In this case, we don’t show it to them again, for 2 weeks _2 weeks later_. We show the user a “Blocking Paywall” Offerings: $20 month, $80 a year Some users buy at “Initial Paywall”, some users buy at “Blocking Paywall”. 3 months later, the user goes to their “Membership Settings” We want to let the user upgrade / downgrade Here, their `activeSubs` could contain _either_ 2 weeks free, or notProblem:Let’s say in the upgrade / downgrade, I have “$20 a month”, “$80 a month”. A user on the “20 a month, 2 weeks free” _can theoretically “upgrade” to the $20 a month plan. This feels like a bug, as it won’t make a difference -- I would like it so they can only upgrade to the yearly one. Is there a “best way” to handle this scenario?
Good morning,We are trying to integrate Stripe into RevenueCat, in addition with Google Play and App Store. We had some doubts regarding if our product structure in Stripe is adequate for integration.- We have a Prime Entitlement.- In Stripe we have 2 products, one for Spain and one for the US.- Each of them has 3 prices (what in RevenueCat are packages) for monthly, quarterly and yearly subscription.These three packages are the same ones we have in Apple and Google Play.Therefore in Stripe we have two products, each of them with 3 prices.Will this Stripe structure work with Revenuecat? If not, how could we properly modify our Stripe structure to work correclty?
MyApp requires signIn operation for purchase.And also, `Purchases.logIn("my_app_user_id");` after signIn. But, `created a new alias` executed about 1 month after purchased.This occurs a few users. Why??In the period, it has been used `$RC:AnonymouseID:xxx` instead of `my_app_user_id`.It is not expected. it should create alias as `my_app_user_id` as soon as possible(ex. next to First seen using the app). Any help, please
Hi,I’m looking for an advice or a guidance how to fill the Data safety form in Google Play in regard to RevenueCat integration. Our app is not collecting any private user data, no account is necessary, no ads, no analytics implemented, but offers subscription to Premium version with unlimited functionality. We are processing Premium subscriptions using RevenueCat SDK. We are getting anonymous information about users who started trial/purchased/canceled subscription. All we know is that “someone” (we get anonymous user ID, e.g. $RCAnonymousID:23kkjjj344kjkjkjkjkj3jkjjjkjkj) in Canada using Android device opened the app, started a trial, purchased the Premium subscription, or canceled trial, opt out from renewal of Premium subscription. I assume the “data type” we collect is only “Financial info – Purchase history”. I assume this data is “collected” and users can “choose whether this data is collected”, since users can use the app without purchasing the Premium subscription. I assume the
Hi, I have some confusion betweenif let info = purchaserInfo { if info.allPurchasedProductIdentifiers.contains("xxx") {and if purchaserInfo?.entitlements["pro"]?.isActive == true {Basically, i am trying to check if the user has subscription or not. I am checking with .onAppear in the default main view. I am new and would like to learn how to check if the user subscription period hasnt finished (doesnt matter if the user cancelled the subscription or not, of course)
Hi there,I’m trying to fetch my consumable offers on my iOS simulator but I get empty products. I have performed the following steps.Set app credential from app store connect to revenue cat Enable IAP on XCode Follow https://www.revenuecat.com/docs/apple-app-store and created storekit file and uploaded to revenuecat Create product on revenue cat On iOS simulator iPhone 13, when I call fetch offers I get the error ```flutter: PlatformException(23, 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).This could be due to a timeout, or a problem in your configuration.More information: https://rev.cat/why-are-offerings-empty, {code: 23, message: 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).This could be due to a timeout, or a problem in your configuration.More information: ht
Hi all! I followed this video: https://www.youtube.com/watch?v=0H2SdKf4ot0 which was immensely helpful in helping me get RC setup in my SwiftUI app. I was able to get purchasing working for a single subscription using a button: VStack { Button(action: { Purchases.shared.offerings { offerings, error in if let packages = offerings?.current?.availablePackages { Purchases.shared.purchasePackage(packages.first!, { transaction, purchaserInfo, error, userCancelled in print("TRANSACTION: \(transaction)") print("PURCHASER INFO: \(purchaserInfo)") print("USER CANCELED: \(userCancelled)") if purchaserInfo?.entitlements["Pro"]?.isActive == true { } }) }
Hello,The following link https://www.revenuecat.com/support returns 404 and it is used in “report the problem” link here: https://docs.revenuecat.com/docs/errors#-unexpected_backend_response_error
We have a production version of the app on testflight, and i assume users can make free IAP’s with sandbox there and gain premium user status.When we promote this build to appstore, as its backed by the same environment, users can use their same account on production.I wanted to know, will revenue cat update our backend to make their account ‘non premium’ again after they open the appstore build of the app? despite using their same user account and backend server that they had sandbox premium on in testflight?I didnt want a situation where users are non premium in revenue cat, but still marked as premium on our server causing issues.Thanks
How do I know when the free trial period is over and the subscription has started? Can you help me if I need to make changes to the code after the trial period?
I’m working on an IOS application with the following in-app purchase options:$0.99 - Receive 1 credit per month (Auto-Renewing) $1.99 - Receive 3 credits per month (Auto-Renewing) $2.99 - Receive 5 credits per month (Auto-Renewing) $3.99 - Receive 10 credits per month (Auto-Renewing) $4.99 - Receive 1 credit (Consumable)Users may only subscribe to one auto-renewing option at a time, but they can purchase the single credit consumable without restriction.My question is how should I organize these products as offerings/entitlements/packages/etc.? My current method is:All four auto-renewing products above are associated with a single entitlement Each auto-renewing product has a 1:1 “parent offering” The consumable product has no associated entitlement/offeringThe tutorials I followed all suggest using offering and entitlements, and so I did. However I feel it’s all clunkier than it has to be. For example, with the Purchases SDK, fetching the offerings and then extracting the packages (prod
I’m using the Flutter SDK and the introductoryPrice field returns null even if the free trial is set on the Google Developer Console. This also happens in production. I looked up my crash reports and found out that there aren’t many users affected by this bug. I haven’t tested on several devices, but I guess it only happens on several Android devices or the OS versions. At least I confirmed that it doesn’t work on my device. Anyone else has experienced the same issue?
I’m trying to push my app out for Beta testing but when I upload a build to TestFlight and run it the call to Purchases.getPurchaserInfo() hangs and never returns. It works on the same device when just running outside of TestFlight. I can run through the whole IAP flow when running on this device. But as soon as I push to TestFlight and run it through there it just hangs waiting to get purchaser info. I think these are the logs needed:default 12:08:37.873277-0500 Runner [Purchases] - DEBUG: There are no requests currently running, starting request GET /subscribers/$RCAnonymousID0X0P+0f621ae3fbd374db9b96d0b6d31ea5d20default 12:08:37.873327-0500 Runner [Purchases] - DEBUG: API request started: GET /v1/subscribers/$RCAnonymousID:f621ae3fbd374db9b96d0b6d31ea5d20default 12:08:37.883570-0500 Runner [Purchases] - DEBUG: There's a request currently running and 0 requests left in the queue, queueing GET /subscribers/$RCAnonymousID0X0P+0f621ae3fbd374db9b96d0b6d31ea
Is there a way to know the monthly start date of the user's subscription? I can use the latest purchase date for a one-month subscription product, but there is no way to know a three-month or one-year subscription product. Because the latest purchase date will continue to change.
I have a subscription tier in my iOS app. I understand how to access `purchaserInfo` to check if the current user has the entitlement associated with this tier. However, I would like to display a badge on all user icons for other subscribers in the app - a little like the ‘verified’ badges on a Twitter account image.Clearly I need to store something server-side on my own user objects to track this, but I’m not sure what approach to take. Perhaps each user’s status should be saved to the server by my app as their entitlements change, and other instances use this saved user flag? But entitlements can change when the app isn’t being used, such as cancelled or expired subscriptions. My backend will have no knowledge of that change, so that use will continue to be displayed as a subscriber until and unless the launch the app again.Any suggestions on a good approach for this?
I am using RevenueCat to manage my 3 streams of subscriptions: Android, iOS, and Web. For Web purchases, we are using the promotional entitlements API to register the relevant subscription purchases. However, we are not sure how to manage grace periods for these.Is there a recommended way of doing it using RevenueCat? Or should the logic to manage a grace period be done on our side?A potential solution we have discussed is to update a user’s subscription information when a billing issue is detected on a payment method on the Web platform. This would allow us to keep a consistent format in managing mobile and web purchases. However, there doesn't currently seem to be a way to do that.
In my application i want to achieve the following flowActual flow:User install the app → Purchase the subscription → Create account on our app → Get access to appIssue:User install the app → Purchase the subscription → Uninstall the appNow when a user re install the app we are calling restore function of Revenue Cat to restore purchases just to verify if the device has any active purchases If any purchase found → navigate to sign up screen and if no purchase is found → navigate to purchase screen againIn our app launch we are calling Restore function which restore purchases to anonymous user which is creating a edge case, that every time the app is installed it restores the purchases and any user who sign up will be bind to that purchase with provided app user id, means its possible to create multiple accounts on same device/same purchase.For-example: App launches, restore happens and if there is no logged in user, some another user will create an account on same active subscription be
Hello! I am planning on increasing the price of the subscription to access my app. I want to keep all current users on the existing price, and only increase price on new users. I am planning on creating a new subscription group (iOS) and the google play equivalent so that new users cannot go into settings and switch to the cheaper subscription plan that my legacy users will be on. My question is: can my new subscription group be connected to my existing RevenueCat Entitlement? Or will I have to create a new RC Entitlement for each subscription group? TIA!
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.