Discussion and help from anything related to RevenueCat.
Recently active
I need to create discounts of my app for a program affiliate. on iOS i can create a promo code that is a Discounted % of my base price.it appears on Android, their “promo” code is only Free. The only option is to create an “Offer” inside the subscription base plan, but I don’t want to do this.So, is it possible to create a PromoCode on Android that is a discount, not a free code?
Hello,I’m currently testing the restore purchase functionality in my app, and I’ve encountered an issue where TestFlight testers receive a true response when triggering restore, even though they have no purchase history.Details: In Sandbox, it works correctly. In TestFlight, the restore function returns success (true) even when no purchases were made. Is this behavior specific to TestFlight? Will this issue persist in the production environment, or is it safe to assume it will work correctly in live deployment?
Hi, Is it possible to add a download link for the app in the email that is sent to the user after the payment?If not, is it something in your roadmap? Thanks!
There are crashes when purchasing on Android when using Kotlin MultiPlatform SDK. It’s not happen with all devices, but some devices. Below is the stacktrace Fatal Exception: java.lang.IllegalStateException: There's no current Activity. at com.revenuecat.purchases.kmp.di.AndroidProviderKt.requireActivity(AndroidProvider.kt:83) at com.revenuecat.purchases.kmp.Purchases.purchase(Purchases.android.kt:236) at com.revenuecat.purchases.kmp.Purchases.purchase$default(Purchases.android.kt:227) at com.chipmango.kmp.revenuecat.RevenueCat.makePurchase(RevenueCat.kt:152) at shared.presentation.paywall.PaywallViewModel.purchase(PaywallViewModel.kt:108) at shared.presentation.paywall.ScreenPaywall2Kt$PaywallContent$1$2$1$1.invoke$lambda$12$lambda$11$lambda$10(ScreenPaywall2.kt:188) at shared.presentation.paywall.CTAButtonKt$CTAButton$1$2$1$1.invokeSuspend(CTAButton.kt:91) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Contin
Hi there,I’m trying to build a subscription flow with some limitations for my plans. Currently i have the code from my Stripe implementation where i have set metadata for each product.My Silver plan can save up to 10 things per month and my Gold plan can save up to 100 things.I see that you have implemented the ability to add metadata per in Offerings but not in Products. Do you plan to add metadata to products as well or is there any other workaround to achieve what i mentioned above? Thanks!
I have created an app that I have distributed in the Amazon AppStore and I have configured a subscription type In-App Item.I have configured everything in revenuecat in a similar way as I had done previously in other products that were available in the Play Store, but when I try to launch the subscription process I get the following error: There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store.Is it possible to use RevenueCat with Amazon AppStore without having the same app available in PlayStore?
Is it possible to create offer/promotion/coupon codes for Stripe using this product - https://www.revenuecat.com/docs/web/revenuecat-billing?utm_source=google&utm_medium=cpc&utm_campaign=eu_branded&utm_content=eu_branded_web_billing&utm_ad=696158664377&utm_term=revenuecat%20web&matchtype=p&device=m&GeoLoc=9046547&placement=&network=g&campaign_id=21174681310&adset_id=161676794158&ad_id=696158664377&gad_source=1&gbraid=0AAAAADEnorfCAxGt9rw4_ijkJhDs8c-_d&gclid=CjwKCAiA3Na5BhAZEiwAzrfagGVeUwu1BydECLip5WAiTbJK9oqKHENnrIPoFWcAMEdhVTH6zetKJxoCKuQQAvD_BwE?Or would I have to do a deeper integration for this? E.ghttps://www.revenuecat.com/docs/web/stripe
On iOS, my paywall works just fine. So that’s proof that my product settings and paywall settings are all setup correctly for App Store. On Android, I followed the documentation and checklist - three times over - to make sure each step is followed to the letter. I have verified my google ↔ RevenueCat server-side connection is setup correctly, by sending test messages successfully from google. My subscription products in Google Play are in active status - which I’ve “imported” into RevenueCat. I have a attached entitlements, and created one offering with packages in RC correctly (both Apple App Store and Google Play Store products in each package - and all that is working correctly in iOS). My app is in “alpha/closed” testing stage (and approved by google) - when I download the app on a real device, and run it, I still get the following error: "Error 23: There is an issue with your configuration. Check the underlying error for more details." In case you are wondering how Google a
There is an Error Encountered in the privacy report of my iOS app. But it hasn't caused any issues, and my app was successfully approved. Perhaps upgrading PurchasesHybridCommon.bundle could eliminate this warning.Thanks.
Great job on getting API V2 to work RC team! 😻 I confirmed that the endpoints I wanted to use (e.g. /subscriptions) are working as intended and sharing more helpful info than V1.I was wondering if there is any chance to add a add an endpoint to get the list of all payments (i.e. activities) of a customer? Currently, it’s shown in the dashboard under Customer History box.Checking on the Network tab of my browser, it seems like the data is coming from api.revenuecat.com/internal/v1/developers/me/projects/:project_id/subscribers/:customer_id/activity which is an internal endpoint. So, the data and the formatting is there–It’s just a matter of exposing it as the external API.Is there any chance that it will happen anytime soon? Is this against the rules and Terms of Service to call that internal endpoint programmatically (and occasionally) to get the data for our own internal dashboard?Thanks,--Aideen.
I’ve implemented revenuecat for in-app purchase with google play. I’ve done all steps carefully, but when purchasing in testing mode, it gives this error “This version of the application is not configured for billing through Google Play. check the help center for more information”. I have wasted more than a month solving this error. Nothing works for me. Please help.Thanks!
Hello,I am working on integrating webhooks to store and update users' subscription statuses on our server.As suggested in the official documentation (https://www.revenuecat.com/docs/integrations/webhooks#syncing-subscription-status), We’re implementing a system where our server listens to webhook events such as INITIATE_PURCHASE and RENEWAL.Upon receiving these events, we call the RevenueCat V2 Subscriptions API to retrieve the latest subscription status stored in RevenueCat and update our server data accordingly.However, in the case of the RENEWAL event, when we call the V2 Subscriptions API immediately after receiving the webhook event, the response often contains outdated information. It seems that we need to wait at least several seconds before calling the API to retrieve the latest data.To synchronize subscription statuses in an idempotent and robust manner, I agree with the documentation’s suggestion to rely on REST API data rather than directly using the information from webhook
How can I get a stable ID for the ‘current subscription’ using the iOS SDK?What I’m looking to do is to give users some amount of in-app credit to use every month they are subscribed, with that clock starting immediately when they subscribe to either a monthly or yearly plan. So I need some sort of bucketing system to track the usage for the current month number, and therefore I need a stable key to use.Here’s what I had in mind: <current subscription id> + <current month index>.The month index would simply be derived by comparing the current time to the subscription’s original start time. When the index rolls over, they are using a fresh new bucket of credit. (I could probably live with slight drift over time of the point in the month at which the index turns over relative to the renewal time, after say a delay due to a billing retry and grace period).But what does RevenueCat provide that I could use for a subscription ID? I would need it to change after upgrade or downgra
Currently, the restore functionality works correctly in the Sandbox environment, but issues arise in TestFlight.In TestFlight, when a user who has not made a purchase presses the Restore button, it incorrectly shows the purchase as restored. In Sandbox, when a user who has not made a purchase presses the Restore button, it does not show the purchase as restored, which is the expected behavior.I’m unsure why this issue only occurs in TestFlight. What solutions are available to address this discrepancy?
I’m not having any luck getting in-app purchases to work in Android (everything is working fine in iOS). I followed these directions https://www.revenuecat.com/docs/google-play-store as best I could, but there are parts of them that don’t make any sense to me, and now when I try to make a test purchase, I get the error message, “This version of the application is not configured for billing through Google Play. Check the help center for more information.”For reference, I am developing using React Native and a custom Expo dev client built remotely using the EAS Build service. I don’t know the first thing about developing using Java/Android Studio or trying to build locally. I have gotten as far as setting up a test product in Google Play, importing it into RevenueCat, and retrieving info about that product in my app code. This leads me to believe that the product is set up correctly. I am also sure that my user account on the physical device is included in the list of testers for Cl
Background / use case: Some time ago we changed auth providers from AWS/Cognito to Firebase/Auth. We use a RC webhook to integrate with a 3rd party CRM (Customer.io). We still get RC webhook events with the legacy Cognito app_user_id’s when the legacy subscribers auto renew (for instance) even though these legacy subscribers have new Firebase ID’s that are associated with the legacy COgnito ID’s via RC aliases. Question: Is it possible to update the Cognito app_user_id’s with the newer Firebase ID’s? I.E. can we swap alias ID with app_user_id?
I’ve got my app correctly wired to provide ASA campaign and ad group info to RevenueCat. I would like to get access to this info for my own deeper analysis. Is this possible? Thanks,G
I’m using the iOS SDK, all products can not be loaded in China Mainland unless using a VPN.Any solutions for that? It’s a fatal situcation.
It goes something like this:1 - Sign into RC with appID12 - Purchase subscription.3 - Sign out and back in again using appID24 - RC says no subscription active for appID2 and so we present offerings.5 - Purchase fails because (presumably) Play Store thinks we already have an active sub because appID1 bought one using the common PlayStore sign in.I’d like to prohibit sub sharing across different accounts.In order for appID2 to be able to purchase a subscription, another Play Store account needs to be used.What’s the general best practice for dealing with this scenario?Many thanks.
Hello,iOS users changed subscription plan but it seems the new subscription does not immediately affect their account.Customer profile shows user successfully changed their renewal preference to higher subscription plan but user’s current Entitlement has not been changed. I think the user's Entitlement will be changed on the next subscription renewal.What I want is crossgrade, users should upgrade and use new plan immediately.All of our subscription plans are in the same subscription group and subscription duration are same. It should be Crossgrading with Same Duration but I have no idea what is the problem.Please help me to solve the problem.
I’m building an Expo app using Expo Router, Clerk for authentication, and Revenue Cat to manage subscriptions.I noticed in the docs that I need to switch the Android launch mode to be “standard” as opposed to the default “singleTask” set by Expo, so I built an Expo config plugin to do so.However, after switching to to “standard,” Clerk’s Google OAuth no longer works after redirecting back to my app (by default, this is scheme://oauth-native-callback), throwing an error:Error: Attempted to navigate before mounting the Root Layout component. Ensure the Root Layout component is rendering a Slot, or other navigator on the first render.I’ve verified that switching the launch mode back to “singleTask” resolves the issue. I’m opening support tickets with Clerk and Expo Router as well, but I’m hoping to get some clarification here on whether I may have missed something while setting this up and how important “standard” launch mode is on Android. Is it common for users to background their app d
Hello, could someone kindly explain why we should check entitlements.all isActive after a purchase before unlocking the feature (see code below) ? My points are:If purchasePackage() didn’t fail, it means that the purchase was processed successfully and this should be enough to unlock the features associated to the purchase. Checking isActive of Entitlements doesn’t make sense in the case where Entitlement has several consumable products (ie. boost_1, boost_2, boost_3) which can be purchased multiple times (so for example , user might have 3 active boost_1, 1 active boost_2, 5 active boost_3, etc). In that case, using customerInfo.entitlements.all["my_entitlement_identifier"].isActive might lead even to wrong outcome. Am I missing something? try {CustomerInfo customerInfo = await Purchases.purchasePackage(package);if (customerInfo.entitlements.all["my_entitlement_identifier"].isActive) {// Unlock that great "pro" content}} on PlatformException catch (e) {var errorCode = PurchasesErrorHe
DEBUG: ℹ️ API request failed: GET '/v1/subscribers/$RCAnonymousID%3A4d4f3f826e1d447abbffa71973d3eedd' (<>): The request timed out. WARN: ⚠️ Attempt to update CustomerInfo from network failed.The operation couldn’t be completed. (RevenueCat.BackendError error 0.)Underlying error: The request timed out.
Hello,I have a question regarding the V2 API.When I make a single API call(`/subscriptions`), the value of RevenueCat-Rate-Limit-Current-Usage in the response headers appears something weird. For instance, I receive values like 686 or 602 for a few calls, while RevenueCat-Rate-Limit-Current-Limit is set to 480.The Current-Usage value is higher than the Current-Limit, yet no rate limiting is applied.Could you explain the logic behind how these values are determined?Or is trial and error until the rate limit is triggered the best approach to understand this?
Currently have an iOS app with a subscription group, Basic & Plus. In Revenue Cat I have 2 entitlements containing the respective “product (subscription)” from the app store. Then in my offerings I have 1 group called default, which contains the packages tied to a single product. How can I make sure that my Plus plan is prioritized? I want to make it so that if a user has Basic and buys Plus auto cancel the basic and go to the Plus.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.