Discussion and help from anything related to RevenueCat.
Recently active
Hi all, looking to use the Revenue Cat API to dynamically set the price of a subscription within my app - looking at the API docs I’m struggling to find a way to make a GET request with either a UserId or SubscriptionId to get the price of a subscription. Is there a way to do this currently, and if so - how?
Hi,While testing my subscriptions on IOS with a sandbox account i found a strange behaviour of getCustomerInfo(), needing to call it twice in order to get the correct data.The way i’ve set my app is to call getCustomerInfo on appLaunch and on appResume, to check for updates. The scenario is the following:I purchase a subscription and get back info that the entitlement is active and my expirationDate is 5min from now (because of the sandbox account). Then i minimize the app and wait 6 mins, after which i can see the sub renewal transaction appearing in rc dashboard and in the customer details screen. I open the app, which triggers getCustomerInfo, but it’s returning the same data i got from when i first purchased the sub. Then when i minimize the app and open it again, triggering getCustomerInfo for the 2nd time, it return the correct updated data with the new expirationDate.Is this the expected behaviour? Is this because of Sandbox? Or am i doing something wrong?P.S. it’s a flutter app
I’m moving RevenueCat 4.x to 5.x and I’ve created my account and integrated my existing app to it.Even though on the dashboard, the `In-App Purchase Configuration` section prompts that I have valid permission, I still can’t purchase when testing it on sandbox environment and receive this error “Apple In-App Purchase Key is invalid or not present”Could someone tell me what’s wrong here?
Hello! I am architecting the backend for a mobile application and despite reading through a lot of documentation posts, I feel I’m going in circles trying to grasp some subtle points and would love to get some answers before committing a lot of development. So I understand the basics of user IDs and anonymous user ids. Our app will ONLY allow users to login (and get an explicit User ID recorded in our database) AFTER a purchase.No problem: users get an anonymous ID, they sign in and we assign them a new, unique App User ID, which we record, and use login() to associate with their RC account. The question happens when the same user logs into a fresh device (or reinstalls). They get a new anonymous ID upon starting up, but then what happens when they “Restore purchases”?My hope is that we would be able to get access to the previously assigned App User ID. However, the documentation for Restoring Purchases mentions:If an anonymous ID restores and the owner of the receipt is an identified
iOS purchases made using a promo code aren’t being recognised in my app. Initially I take a user to the URL below from my app. Once they come back Purchases.syncPurchases() is called. I also have a button in the same page that calls Purchases.restorePurchases(), but pressing that seems to have no effect as well. I do have a listener for any changes in the customer information using this Purchases.addCustomerInfoUpdateListener((info) {}), it starts when the app is opened. Once a promo code has been used successfully and the user comes back to the app and the syncPurchses method is called there is still no update in customer info. My app is in production (available on app store) and I already have in-app-purchses/subscriptions working and fully integrated. What is going wrong here? https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}
Hi folks,I have few concerns regarding upgrade/downgrade subscription in android. Before coming onto the questions i want to tell the subscription scenario we are using in our app.BasicPackage:Monthly YearlyAdvanvePackage:Monthly YearlyQuestions:What upgrade/downgrade refers to means is it refer to duration i.e monthly, yearly etc or ammount of package? We have to handle all the posssible scenarios for upgrading and downgrading seperately based on current subscription and manually by passing oldProductID?? The doc says we have to pass oldProductId what was it meant? basePlanId(yearly_advance_Package) or subscriptionId(advancePackage) for productIdentifier(advancePackage:yearly_advance_Package) while i think productIdentifier only use for revenue cat. If IOS subscribed user login into to Android what should i do?? instead of allowing them to manage in our app isn’t it better to route it to managementUrl?? Because if he buys then there will be two subscription for same user and vice ver
Hey team, I have the integration that sends a daily dump of our subscription info into Cloud Storage. Now, I’d like to create a daily job that imports this into BigQuery. I look at the “Data Transfer” Configuration, and am a bit stuck with “Cloud Storage URI”: How could I get it to _only_ get the CSV for a certain date string. I know this is more of a Google Cloud question, but I’d guess everyone who exports to Storage wants to do this too, so thought I’d ask here: if you could share your data transfer configuration with me would appreciate it!
Hi, I’m trying to get some clarity around account creation. Currently, a user can create as many accounts as they want in our app (no payment is needed upon account creation). However, we want to only allow a single Apple/Google ID to be associated with one account. For example, if I:Create two brand new accounts Login to the first one and subscribe to a paid monthly subscription Logout and login to the second accountAt this point, I would expect that the second account doesn’t have access to the paid monthly subscription that was purchased by account number one. The phone is still logged in with the same Apple/Google ID, so:Is the second account able to purchase a paid monthly subscription? If the second account purchased a higher tier than the first account, would it all be associated with one account in RevenueCat, therefore “upgrading” the first account?We have done some testing in Sandbox mode, and wanted clarity on how this would work in production. One thing to note is that each
Hello RevenueCat community,I am experiencing a challenge in managing in-app subscriptions for multiple users on the same device. Here's the situation: User A has an active subscription and is logged into the app on a device. User A logs out, and User B logs in on the same device. User B doesn't have an active subscription, so they are correctly presented with the paywall. When User B attempts to purchase a subscription, Apple's system sends an alert that a subscription already exists (referring to User A's subscription). Upon dismissing the alert, the purchase process proceeds, and User A's subscription gets linked to User B's account. When User A logs back in, they are incorrectly presented with the paywall, and RevenueCat's records show User B as the owner of the subscription. In this situation, my goal is to keep User A's subscription linked to User A, and alert userB that there is already an active subscription linked to the current appleID, and therefore cannot proceed wit
Hi! I’m noticing weird behavior in my subscriptions (in sandbox, my paywall isn’t in production yet), where if a user subscribes on an iPhone, and then disconnects, then i create a new account for my app when I get to the paywall, if i try to make a subscription i get a native alert saying “you already have an active subscription”, and then the paywall closes and I can access the paying features: that is not a behavior I want, because I don’t want a user to be able to create several accounts only paying once. Furthermore, in revenueCat, the sandbox transactions done with the old account then have the userId of the new user (the linked userId changes!)How can I fix this? For information, I usePurchases.setup(MY_KEY, USER_ID) and right afterPurchases.logIn(USER_ID) in my app’s main navigator. Best,Jane
Hi all. I’m hoping someone can offer some help for an issue I’m struggling with. I have a FlutterFlow app that uses RevenueCat for in-app purchases. This was working perfectly for iOS and Android, but just recently the iOS purchases stopped working. My app is freezing when it calls the RevenueCat paywall and purchase functions. This seems to coincide with FlutterFlows recent upgrade to of the RevenueCat Flutter package (purchases_flutter) from 6.0.0 to 8.1.2Has anyone else had a similar experience? Are there breaking changes in the latest Flutter package?Thanks in advance for any thoughts!
Hi all,I have an iOS app created by PWABuilder that Apple have rejected for not having in app purchases. Therefore I’m implementing RevenueCat. However I’m struggling to see where I would add and present the paywall within the code built by PWABuilder. I have 0 experience with Xcode and Swfit unfortunately.Does anyone have any experience of this at all please?https://www.revenuecat.com/docs/tools/paywalls/displaying-paywalls Thanks.
D/[Purchases] - DEBUG( 6814): Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/subscribers/%24RCAnonymousID%3A05155e0681644ad69dc66564531ea514/offerings], appInBackground=false)D/[Purchases] - DEBUG( 6814): Getting storefront from cache was null.D/EGL_emulation( 6814): app_time_stats: avg=9341.14ms min=3.54ms max=130723.25ms count=14D/[Purchases] - DEBUG( 6814): API request started: GET /subscribers/%24RCAnonymousID%3A05155e0681644ad69dc66564531ea514/offeringsD/[Purchases] - DEBUG( 6814): API request completed with status: GET /subscribers/%24RCAnonymousID%3A05155e0681644ad69dc66564531ea514/offerings 304D/[Purchases] - DEBUG( 6814): ℹ️ Requesting products from the store with identifiers: premium, elpa_1299_foreverW/BillingClient( 6814): getSkuDetails() failed for queryProductDetailsAsync. Response code: 2E/[Purchases] - ERROR( 6814): 🤖‼️ Billing is unavailable. App is in foreground. Won't
I’m using promo codes in my flutter app to provide my iOS users with a lower price for the first month of their monthly subscription. Currently I am taking them to url below instead of opening the promo sheet. Once they come back I call the Purchases.syncPurchases() method. While testing its not letting me use iOS test card that is available in the sandbox environment. So I am not sure how to test wether the purchase is synced under their Revenuecat customer info once they come back. As the purchase is done in app store, I’m not sure how Revenuecat syncs their customer info to the Apple account as they are outside of an environment where they are logged in (my app). My app is currently in production. Also please note that I have implemented subscriptions months ago and they are working fine. Sorry if this is a bad question. https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}
In dashboard > customers > Active. Can we have column showing the expiry date for those currently with trials. Like we can with the overview > recent transactions. I’d like to see how long users have left before conversation. Seems strange that the data in recent transactions isn’t displayed in all customers table.
Hi all,After checking several questions in the community and the API documentation, it is my understanding that https://api.revenuecat.com/v1/subscribers/{app_user_id} will only get the latest purchase information for the single app_user_id provided.Is there a way to GET all the current purchase and user_id info from the users actually subscribed or in trial at once?Thanks,A.
Published the application almost a month ago google play. The icon in the revenue cat project has not yet appeared. Because of this, it is difficult to identify the application. It is impossible to add manually
In the documentation for checking subscription status, it is said that for checking if a user has paid, we need to use the entitlement object like this:if (Object.entries(customerInfo.entitlements.active).length) { //user has access to some entitlement}However, this doesn’t work when a user has used a promo-code on Android. Instead we use:if (Object.entries(customerInfo.activeSubscriptions).length) {//user has access to some entitlement}Is that a correct way to check?
Hello,I’m having some difficulties with implementing Capacitor and Vue 3 for Android.Firstly, I want to figure out how to handle locked areas in my app upon boot. As I understand it, the app will send a request to the RevenueCat API to check the subscription status of each user IDs, which will return either a “subscribed” or “unsubscribed” response.I think the best approach would be to save this status in persistent storage and then develop the necessary logic to lock or unlock functions in my app.Could you please confirm if my understanding is correct?Additionally, regarding the Vue.js part: should I include this logic in the App.vue file?Thank you! if (Platform.is.android) {try {const revenuecat = await import('@revenuecat/purchases-capacitor');const Purchases = revenuecat.Purchases;const LOG_LEVEL = revenuecat.LOG_LEVEL;await Purchases.setLogLevel({ level: LOG_LEVEL.DEBUG });await Purchases.configure({ apiKey: process.env.REVENUECAT_API_KEY_ANDROID, appUserID: this.authSto
When do you plan to add flutter web support? There is a huge demand for it and it seems that you already have the tools to support it?
Hi!I finally got my app on a closed track into the Play Store. But when buying a subscription with it, it is not sandboxed but is a real payment from my credit card. The docs only say that it should “just work”. So, ehhhhh, does anyone have an idea of why my app is not in sandbox mode?
I recently received several iOS errors with error code 20 (PAYMENT_PENDING_ERROR). I read the documentation here, but am still unsure what’s causing this error and how to resolve it. The users don’t have parental controls on their devices.The RevenueCat docs mention “a user might choose to purchase your in-app product at a physical store using cash” - is this an option the user would have turned on somewhere in their device settings?Or is there a different reason this error could be occurring?
Dear community, Recently i added a paywall to my app. The app is still in testflight mode. I added products on both Play and App store, but the Apple products are not showing when pressing the purchase button on the paywall, but the Android items are working perfectly fine. Does anyone know why this is the case? Do i for example first need to submit the products, or is there something else i'm missing? I have checked all of these steps: https://community.revenuecat.com/sdks%2D51/why%2Dare%2Dofferings%2Dor%2Dproducts%2Dempty%2D124 All products are visible here, i also created Enititlements and offerings. This is what the Apple products look like in RevenueCat The products show “Ready to Submit” in Apple Store Connect
Hi all!We’re running an A/B-test with a monthly subscription and two pricings both pricings and have the same setup in the AppStore and RevCat but the second package has PACKAGE_TYPE CUSTOM or UNKNOWN whereas the first has MONTHLY as expected. What could be wrong with the setup?currentOffering.availablePackages.map((pkg) => {let priceTag = pkg.product.priceString;switch(pkg.packageType) { case Purchases.PACKAGE_TYPE.LIFETIME: priceTag += ' einmalig'; break; case Purchases.PACKAGE_TYPE.ANNUAL: priceTag += ' pro Jahr'; break; case Purchases.PACKAGE_TYPE.SIX_MONTH: priceTag += ' alle 6 Monate'; break; case Purchases.PACKAGE_TYPE.THREE_MONTH: priceTag += ' alle 3 Monate'; break; case Purchases.PACKAGE_TYPE.TWO_MONTH: priceTag += ' alle 2 Monate'; break; case Purchases.PACKAGE_TYPE.MONTHLY: priceTag += ' pro Monat'; break; case Purchases.PACKAGE_TYPE.WEEKLY: priceTag += ' pro Woche'; break; default: // UNKOWN und CUSTOM priceTag += ' pro Monat*'; break;}
Hi everyone,I'm facing an issue during the Google Play review process and could use some help. My app uses RevenueCat for subscriptions, and everything works fine in Brazil and the US (the only countries where the app is available). However, Google rejected my latest submission with the following message:Google’s Rejection Message:App Status: RejectedYour app contains content that isn’t compliant with the Broken Functionality policy.Reason: The app contains blank or empty pages that lack appropriate error messages.During the review, Google encountered the following message on the paywall:"Error 2: There was a problem with the store." I'm using RevenueCat's PaywallFooter component, and it seems that the error comes directly from the RevenueCat SDK when it can’t load the offerings.Questions:Is this a known issue when Google Play reviewers test the app from unsupported regions? Should I hide the paywall entirely if the offerings fail to load? What is the best way to handle this error to p
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.