Get help with your SDK implementation.
Recently active
I want to use the RevenueCat SDK in my iOS widgets. I tried to use it once before but our users were reporting that their widgets would randomly show “no subscription” (our UI when we determine the user doesn’t have a current subscription), so I commented out the RevenueCat specific code but now I want to try to add it back in. The SDK notes say (https://www.revenuecat.com/docs/configuring-sdk):“You should only configure Purchases once, usually early in your application lifecycle. After configuration, the same instance is shared throughout your app by accessing the .shared instance in the SDK.” However there doesn’t seem to be a good way to achieve this inside an iOS widget since getTimeline() can be called multiple times, I didn’t see another place where you can easily instantiate a singleton RevenueCat instance. I’m not sure if this multiple Purchases object issue was the cause of our previous issues where sometimes it was reported the user didn’t have a subscription even when they d
purchases_flutter: ^8.3.2I keep getting this error and I followed Google Play Checklist but it did not help me. I have an offering with 3 packages. I made sure that identifiers in RC are the same as in the Google Play Store except for “:auto-renewing” which is appended to the identifiers in RC. Please see the image When examining each product in RC, the product status is set to OK as shown in the following image: Here is how the product identifiers look in the Google Play Store: In the Google Play Store, the products are active as shown in the image:Also, I confirmed that the Google Play Package is correct and I do have valid credentials as shown in the image. I am not sure what else to do. Could someone please help?
Is there a way to change the styling for the WebSDK checkout form fields? I know we can update the general styling for the form but it is causing some UI issues:The select field for country styling looks like this: Also, on prefilling the card details in the browser, it looks like this: I tried overriding the css variables but no use. Is there any way to control this?
We are hoping to do a first release on app store with our subscription paywall, however, we want to allow our testflight users to continue to test for free. I want to check if app is downloaded via testflight environment and conditionally bypass the paywall. StoreKit has a Method called a thing called AppTransaction that has a environment field to it. There are StackOverflow post that resolved it using swift, but i am using expo. Is there something equivalent in revenueCat? What is the best way to approach this?
There is an issue with your configuration. Check the underlying error for more details. [Error: There is an issue with your configuration. Check the underlying error for more details.]{"nativeStackAndroid":[],"userInfo":{"underlyingErrorMessage":"There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store.\nMore information: https://rev.cat/why-are-offerings-empty","readableErrorCode":"ConfigurationError","readable_error_code":"ConfigurationError","message":"There is an issue with your configuration. Check the underlying error for more details.","code":23},"code":"23"}how to fix this issue? I have checked ids. they match. Moreover, I’m also able to import products from console to revenue cat? But when i use sdk it gives error. My app is in internal testing and is waiting for review. Do I wait until review? Moreover, I don’t think closed testing would be the issue? Otherwise I shouldn’t be able to add subscr
Hello. We’ve integrated webhooks (Django rest). Basically what the user sees on frontend once they click is a spinner. Meanwhile we fire purchasePackage which in no time upon finishing should fire a webhook to our backend.. on the backend we create a Payment object with the transaction id from the webhook. On frontend as the spinner is spinning, after the purchasePackage request goes through, we wanted to begin verifying whether the backend has synced already (aka created the payment object). We wanted to call in a loop payment/<payment_id>/state … but for that we need transaction_id that was send in the webhook which is what we assumed will be returned from purchasePackage as part of the response … but as we understood, we’re not going to receive the transaction ID in the response of purchasePackage at all? … so what is the best way with capacitor to proceed to get the correct transaction id? Or do we have to completely change this logic ..thank you
I’m looking for some guidance on handling a case where a user can’t restore purchases on an Apple TV with multiple users. The setup is:The user who purchased my annual subscription (let’s call them User A) can access all premium features throughout the app. They are not the default user on the Apple TV, but I’m not sure if that matters. The default user on the Apple TV (User B) is using my app without a subscription and is trying to restore purchases to unlock premium features. When they do that, they get a MissingReceiptFileError. My Apple TV app is configured to “Run as Current User”, so it manages separate data for each user on the device (I’m not sure if that’s important to RevenueCat or not).The user then tried to delete the app and reinstall it, this time using the default Apple TV user (User B). This is what happened:They get the “A family member has already bought this item” message when downloading the app, and confirm the download They open the app and try to subscribe to the
Hi,In my SwiftUI app, I manage the app state with enums, and the paywall only presents to the user when I set the value of uiState to .displayPaywall.When this happens, the following code runs: case .displayPaywall(let uuid): PaywallView { viewModel.retry() } .presentPaywallIfNeeded( requiredEntitlementIdentifier: "premium") { _ in viewModel.fetchLandmarkInfoIfAllowed() } }And this is the PaywallView. The idea being that if the user dismisses the Paywall by clicking the X button, I show a simple message and a button that should supposedly trigger the Paywall view again: struct PaywallView: View { let onRetry: () -> Void var body: some View { VStack { Text("Max free daily limit reached. Upgrade to Premium for unlimited use.") .multilineTextAlignment(.center) .padding() Button("Retry") {
I am currently implementing a payment system for a web platform using RevenueCat Billing and Stripe. I have successfully implemented the functionality to cancel an active subscription using the following API endpoint:https://www.revenuecat.com/docs/api-v2#tag/Subscription/operation/list-subscription-entitlements However, I was unable to find an API for reversing (undoing) a canceled subscription. Could you please let me know if such functionality exists and, if so, point me to the relevant documentation or endpoint? If this feature is not supported, any advice on possible alternatives would also be greatly appreciated.
The documentation on IOS Offers Codes states that Offer Codes were added in IOS 14 (2020) and there is a warning that in-app redemption is buggy/unstable. Is this still the case 3 years later - or are the docs outdated? Quoted from article:https://www.revenuecat.com/docs/ios-subscription-offers“Since launch, Apple's in-app Offer Code redemption sheet has proven to be extremely unstable. For example, the sheet may not connect, may not dismiss after a successful redemption, and may not accept valid codes. Additionally, sandbox and TestFlight behavior has been seen to be inconsistent.A workaround may be to instead redirect customers to the App Store app to redeem codes as described below.”
Hi,I just migrated to the latest RevenueCat SDK on iOS (from 3 → 4). I also setup SearchAds attribution, but I only want to use the standard attribution (I’m not showing ATT prompt). I am using the latest iOS SDK (4.11.0) via cocoa pods. I noticed that on all iOS versions except 14.5, my app loads. On 14.5, it hangs after calling -enableAdServicesAttributionTokenCollection:- (instancetype)init { self = [super init]; if (self) { _purchases = [RCPurchases configureWithAPIKey:@"[MY API KEY HERE]"];#ifdef DEBUG RCPurchases.logLevel = RCLogLevelError; //RCLogLevelDebug#endif if (@available(iOS 14.3, macOS 11.1, macCatalyst 14.3, *)) { [_purchases.attribution enableAdServicesAttributionTokenCollection]; } _purchases.delegate = self; } return self;}Any ideas why this might be happening? I’m importing iAd, AdServices, and RevenueCat. It works 100% when I comment out that function call.Thanks!
Even though I have successfully made a purchase in my app, a page opens for me to pay again. When I close this page, it opens again and again and enters a loop. I thought this only happened in the simulator and I didn't care. But I did it on a real device and the result is the same, the payment page opens many times.
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
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
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.
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!
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
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’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
Hi, PlatformException(2, There was a problem with the App Store., {code: 2, message: There was a problem with the App Store., readable_error_code: STORE_PROBLEM, userCancelled: false, underlyingErrorMessage: UNKNOWN_ERROR, readableErrorCode: STORE_PROBLEM}, null) I am getting such a problem, it is successful in developer mode, it works in the sandbox part, but when we download it from the store, it does not work. Is there a revenuecat engineer about the issueError Screeshot;but sandbox success developer mode;
We see more and more users getting STORE_PROBLEM (code:2) errors thrown like this one:PlatformException(2, There was a problem with the App Store., {readable_error_code: STORE_PROBLEM, underlyingErrorMessage: An unknown error occurred, code: 2, message: There was a problem with the App Store., readableErrorCode: STORE_PROBLEM, userCancelled: false}, null)The strange thing is that this is happening on Production for real users and not sandbox. We are randomly able to reproduce the issue on iOS 17.2 but not on iOS 16.When the error occurs the purchase call is loading multiple seconds and NOT showing the native buy modal of apple. Instead after multiple seconds this error is thrown. This currently happen in around 25% of all purchase calls. We did not upgrade revenuecat (version 5.6.2 of purchases_flutter) We had this error in the past sometimes but on iOS 17 it is occurring a lot. We have no idea where this error is suddenly coming from.
I am trying to integrate revenue cat with one of my amazon Fire TV Sticks app. I have followed the steps described in the docs and created the product and sku’s required for it and configured the same on the revenue cat. But when I am trying to fetch subscription from the amazon app store I am getting below error.Content metadata not available for package name: app_package_nameAbstractCommandTask: On Exception!!!!: com.amazon.a.a.n.a.a.a: AUTH_TOKEN_VERIFICATION_FAILURE: null: null
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.