Get help with anything related to RevenueCat.
Recently active
I’m moving my new subscription service to revenuecat.The way current system works is this:1. User makes purchase from either iOS or stripe2. if purchased on iOS, entry is created on DB with app_user_id & purchase id3. Receive webhooks from apple/stripe and use that to give user premiumI have a couple concerns:Do I need to use syncPurchases? I don’t see how it makes sense if a customer has purchased through stripe With receipt forwarding, older versions of my app don’t send receipts, just user id and purchase id. Your create purchase endpoint requires the full base64 receipt, what can I do? For migrating, I don’t have the base64 encoded receipt file, just the unencoded purchase details
Hi,I have a question regarding RevenueCat.As an example: Suppose a company has the following:- Company has three iPads- these three iPads are associated to one Apple ID- each iPad registers with its own business email address and password- The password is only for the company and controls things like delete account etc. (administration)- Licenses are associated with this own business email address.Does it work that I can implement a monthly subscription to each iPad, i.e. for each email address with RevenueCat?
I have a problem using RevenueCat on IOS.When I login user A account and link it to RevenueCate. And Then Buy Package A. On the same phone, I logout account A then login account B and the buy Package B, but the list of entitlements returned entitlements A and B.In this case, Can we link Package A to account A and Package B to account B?
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?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.