Discussion and help from anything related to RevenueCat.
Recently active
Hi folks, Recently, I’ve been getting a bunch of messages from customers who are confused when they see a much higher price during checkout, compared to what I display in the app. The reason is VAT taxes. Many customers are so confused that they don’t end up purchasing. Any strategies for getting around this? I’m thinking of adding “+ tax” right next to the price on my subscribe screen. What do y’all do? Does anyone dynamically pull the price from RC or Apple/Google? If so, what’s the easiest way to do that? Cheers, Toby
I recently updated my apps to use the latest version (6.9.4 - android java) and I am getting the following warning in my Google Play console. Is there anything else I should have done that I forgot?You're using the InAppProduct API to manage subscriptions, which is now deprecated and will stop being supported for new apps in January 2024, and for all apps in May 2024. Start using the new Subscriptions API to get new features including multiple base plans and offers, as well as prepaid plans. App: Android (Java)Revenuecat version: 6.9.3
Hello!Excited to be integrating the paywalls beta functionality. We didn’t see anything with regard to supporting promo codes in the paywall templates - are we missing anything? Is this on the roadmap? thanks,Max
Our team configured revenue cat for IAP purchases in ios. But after subscribing inside our application it’s not reflecting in revenue cat ledger. Can you guys help us resolve this issue?
I have few apps and I would like possibility to share subscriptions between them. So if a user is subscribed in one app they would have possibility to use pro features in other apps as well. Is it possible now with RevenueCat?
I did every step correctly for google play store. But i have that error. Can anyone help me? In terminal it says it can’t access the my test subs
I am unable to clear the above Credentials issue. I went through all the steps in the guide - https://www.revenuecat.com/docs/creating-play-service-credentials/ - carefully to no avail. According to a number of post in this community form on the same problem, the solution is to make sandbox purchases. The problem is can’t make sandbox purchases. My supposed sandbox purchases go through as real purchases. I followed the guide - https://www.revenuecat.com/docs/sandbox - for sandbox purchases to no avail.I would very much appreciate help with this. Thank you in advance.
I want to give my subscribed users a way to restore their subscription from the underlying store without using the “user id”. the reason why I want this is that some users use another login method than the original one they used when they subscribed. This gives the user account a different id, therefore they cant find their subscription. we got a lot of customer support tickets because of this problem, So I was wondering if there is a way to restore the subscription directly from Google Play or App Store without any user id?
We use RevenueCat so that our own backend is the source of truth for user status information. We offer consumable IAPs.After we make purchases via the RevenueCat SDK, we communicate with our backend to get the updated user status.When I make a purchase on iOS and kill the app when the StoreKit transaction has completed but before RevenueCat has processed the transaction, I run into the scenario that the RevenueCat SDK will process the transaction on the next launch.I see in the logs that the transaction is successfully processed by RevenueCat. But `PurchaseController.purchases(_:receivedUpdated:)` is not called afterwards.I assume the delegate would be called in case of subscription IAPs, but how can I get notified for consumable IAPs?
I’m migrating iap other SDK to Revenuekit.i know that there is no way to check refund status of consumable purchase. but in non-cosumable case, which user can purchase only one time, func getRefundCheck() { Purchases.shared.restorePurchases { customerInfo, error in if error == nil { if self.isPremiumActive { if customerInfo?.entitlements["Premium"]?.isActive == false { self.isPremiumActive = false } } } }Is this the right function for me to find refund users?
I am currently creating my products in Google Play for my App.I want to use prepaid subscriptions without auto renew.I tested this out, created products, imported them in RC, linked them to offers and entitlements, purchased them. They expired automatically and my entitlement got removed.All fine so far.But there is an option in Google Play Console which asks if I want to Allow extension of this prepaid subscription. I am not sure if this is a supported feature by RC?So I tried to figure it out in the docs and found nothing. But I found this part of the documentation here which confuses me a bit.Prepaid base plans not yet supportedRevenueCat does not yet support base plans with the renewal type "Prepaid".Source: https://www.revenuecat.com/docs/android-productsIs this just some outdated paragraph in the docs?I mean it seems to work.And if the docs are just outdated (hopefully) could you extend those and explain how to properly configure prepaid products in google?Would love to get some
Hello Team,RevenueCat portal is showing Could not validate subscriptions API permissions. Status is the same after 48 hours. I followed all the steps mentioned here Google Play Store (revenuecat.com). Can someone help how to resolve this issue?
My subscription flow was working, and it's been a month since I received the 'Something went wrong' error. I have two published apps, and both of them are encountering this error simultaneously. I've tried many solutions, but none of them worked.purchases_flutter: ^5.6.5 error log:Activity finished with resultCode 0 and billing's responseCode: 3E/[Purchases] - ERROR(26164): BillingWrapper purchases failed to update: DebugMessage: . ErrorCode: BILLING_UNAVAILABLE.nullE/[Purchases] - ERROR(26164): PurchasesError(code=PurchaseNotAllowedError, underlyingErrorMessage=Error updating purchases. DebugMessage: . ErrorCode: BILLING_UNAVAILABLE., message='The device or user is not allowed to make the purchase.')
I am trying to add Revenue Cat to my application and I am getting an unexpected behaviour. await Purchases.getOfferings(); never finishes. It hangs. try { console.log('This logs') const offerings = await Purchases.getOfferings(); console.log('This does not log');if (offerings.current !== null) { ….}} catch (error) { new Error(`Error getting offerings from Revenue Cat ${error}`);} I am unsure why this happens. This are the logs 2023-09-12 15:06:48.379841+0200 someApp[4687:37716] [configure] INFO: ℹ️ Purchases instance already set. Did you mean to configure two Purchases objects?2023-09-12 15:06:48.380048+0200 someApp[4687:37716] [configure] DEBUG: ℹ️ Configuring SDK using RevenueCat's UserDefaults suite.2023-09-12 15:06:48.380078+0200 someApp[4687:53865] Opened database at /Users/john/Library/Developer/CoreSimulator/Devices/3B433335-5FEA-4324-BCD4-4CBB677C5A4E/data/Containers/Data/Application/F8725A65-E28B-4E6B-BAE0-E0058C257495/Documents/foo.db2023-09-12 15:06:48.
Is there a way of showing the amount of customers whose subscriptions are auto-renewing per day? Basically what the ‘Revenue’ tab offers, but in the form of numbers of subscribers as opposed to a $ amount.So what I’d be looking for would be something likeSep 1: 210 subscribers’ subscriptions auto-renewed on this daySep 2: 179 subscribers’ subscriptions auto-renewed on this daySep 3: 203 subscribers’ subscriptions auto-renewed on this dayetc.? It feels like there must be a way because it’s pulling the same data from the Revenue tab but I can’t find it. Any help would be greatly appreciated!
Hi. I’ve been playing with the different charts trying to figure this out. Here’s an example of what I am trying to see:For June’s new user Cohort, every paid/converted subscription (whether there is a trial or not), broken down by Product. Basically, right now, I can see how many new subscriptions of every type started in a given month which is great, but I have no idea which cohort they came from.It does seem like I can get this info if I do Conversion to Paying and then one by one filter for each Product and export the data, but this is a time consuming way to do it.Lastly, when filtering, it would be amazing that if after selecting to filter for a specific app you’d only seeing related products for that app when selecting the product filter. In my case I have to sift through 50+ products in a small window that doesn’t show the full name. Even just changing the css to show the full name of each product would help. Thanks for the help!
I'm developing a multiplatform app, that will run on mobile and desktop. And it will be subscription based.What I don't get, is how does it work across the 2 stores? If someone signs up for a subscription on the Mac app store, how will the iOS app store, know the person has already subscribed in the other version? And vice versa?Would the user just download whatever version, fire it up and then I could just offer for the person to sign in, if they already have an account and then I'll know if they are subscribed or not?
Hi everyoneI would like to know whether is it possible to make 2 different paywall with one template? If yes, could you share the steps on it?For the context: We would like to offer to 2 different product subscriptions in our app so we think we need 2 different paywall each different products, content and design also.However we want to manage it in our single product dashboard.
I have an issue with getting RC to work on the iOS Simulator on an M1 Mac Mini, it’s saying that the framework doesn’t have the required architecture to run on the iOS Simulator, I only need this to run some automated tests on other parts of my app, I’ve been able to test on a physical device all through the development of my app but always had this issue with the simulator, now I have been able to get it to work through rosetta but that’s only the iOS simulator and not through Appium which is the testing framework I’m trying to work with.I hope someone will be able to help me, Thanks!
We have an AppsFlyer Integration that occasionally uses the customer_user_id as the appsflyer_id. Does anyone know why this would happen?Here’s an (anonymized) example.{ "af_events_api": "true", “appsflyer_id": "aaaaBBBBCCC", "bundleIdentifier": "com.bundle.app, “customer_user_id": "aaaBBBBCCC", "eventCurrency": "USD", "eventName": "renewal_event", "eventTime": "2021-10-08 21:27:43.000", "eventValue": "{\"af_revenue\": \"5.99\", \"renewal\": \"true\", \"af_content_id\": \"monthly_plan\", \"af_currency\": \"USD\"}"}A correct appsflyer_id looks like a Unix Epoch timestamp with a random number appended like this. "appsflyer_id": "1617274484000-5786735",Does anyone know why it occasionally doesn’t have the correct Appsflyer ID?
I looked at the list of transactions:"AppStore environment" there is probably a problem with the following:Free Trial subscription automatically changes to status:(⚠️ “Disabled the auto-renew status for an active subscription.” webhook type: “CANCELLATION” ⚠️)Because of this, after the Free Trial period expires, no funds are debited.😓 Help me to understand. “Also rate the screenshots” I did not find more detailed information about the "Opted out of renewal" status.(Testing use case, Auto renewable, works in the TestFlight environment ✅)Use case: User subscribed to "Free trial - 7 day"____________________________Expectation:INITIAL_PURCHASE⬇️ (⏱ 7 days)RENEWAL⬇️CANCELLATION⬇️EXPIRATION____________________________Reality:INITIAL_PURCHASE⬇️ (⏱ 2-3 days)CANCELLATION⬇️ (⏱ 7 days)EXPIRATIONI think in some of the screenshots the funds should have been debited. but it didn't happen.
Is it possible to grant a promotional subscription in the sandbox environment, as opposed to the production environment? When using the dashboard to grant an entitlement to a user, it always says "environment": "PRODUCTION".I’ve read that users don’t relate to a particular environment, but transactions do. Isn’t granting an entitlement a transaction, and therefore wouldn’t it make sense to grant an entitlement in the sandbox environment?
A few hours ago, the data when getting the returned package list was missing title and description{"identifier":"$rc_weekly", "offeringIdentifier":"Default", "packageType":"WEEKLY", "product":{ "currencyCode":"USD", "description":"", "discounts":{ }, "identifier":"dsports.weekly", "introPrice":null, "price":6.99, "priceString":"$6.99", "productCategory":"SUBSCRIPTION", "productType":"NON_CONSUMABLE", "subscriptionPeriod":"P1W", "title":"" }}
On Android, the APIs `.getOfferings().current.product.title` property is returning Android Store value, with appended App name. <Base Subscription Title> (<AppName>) ex. “Pro (My app)”Shouldnt this display the Display Name / Title from the “Product” section of RC? iOS seems to display the name from the Products section of RC. I did notice this post from 9 months ago. But i dont know if thats an official statement “works as expected” or if its just another user confirming that thats the way it is.
Hi,When I set the availability of my Subscription to 1 country, can I assume that this:try await Purchases.shared.offerings().current?.availablePackageswill return an empty array/error with other storefronts?Cannot really test it via TestFlight, as it seems to discard the region completely.
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.