Get help with your SDK implementation.
Recently active
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
Hi @joan-cardona, @Haley Pace I am facing an issue with the configuration of appUserId and API key while using the RevenueCat SDK for subscriptions. Currently, I am configuring appUserId and API key multiple screens to ensure that the SDK receives the correct data at the time of subscribing.I have integrated Sentry logs for the purchases.getCustomerInfo() call and am logging this information within the onPurchaseStarted event on the RevenueCat paywall. From the logs, I can confirm that the originalAppUserId is being set correctly and as intended.However, on the webhook, the app_user_id appears as an anonymous user ID instead of the configured appUserId. This discrepancy is breaking our subscription flow, leading to a poor user experience and dissatisfaction among our users.Could you please help identify the root cause of this issue? Additionally, I would appreciate any suggestions or best practices for ensuring that the correct appUserId is passed consistently through the webhook.We
This page implies that win back offers are supported:Through Your App From a StoreKit Message Requires iOS SDK version 5.6.0+ However, I notice that the SDK is currently at version 5.14. I couldn’t find a roadmap for the SDK.What is the ETA for supporting win back offers? Or am I missing something?
I’ve seen the below answer given by Antonio 8 months ago. The beta access link is dead now.There’s no information about whether Apple and Google billing is supported in v2.Is it supported? If not is there a way to get access to that?And please add this to the documentation 🙏> This endpoint is publicly available only for RC Billing subscriptions, as stated in the docs. We also offer support for Apple, Google, and Stripe, but it’s currently in Beta. If you’d like to join the beta, you can request access here
We recently changed our auth provider and our users now have different IDs. Is it okay to call `login()` again with another user id and call `syncPurchases()` afterwards, grant the user acces to his purchses again? Or should I set an alias? Kind regards,Marius
I’m using RevenueCat and logging into RevenueCat on each device with their Firebase Auth UID. The subscriptions work, and it transfers premium features without having to restore purchases. When I use the Customer Center though, it says I don’t have any subscriptions, restoring does nothing, and refunds/changing plans don’t work.
I have an issue with my iOS app I just got it approved by Apple but something is wrong . When you download the app it’s asking for you to pay for the subscription but when you download that and load the app the paywall comes again and ask for payment again
getting empty response from api
I’m trying to use StoreKit testing to test purchase of a promotional offer on a subscription product. I can purchase the initial subscription, but when I come to purchase the promotional offer I see the following error: [Purchases] - DEBUG: PaymentQueue updatedTransaction: redacted (null) (Error Domain=SKErrorDomain Code=12 "(null)" UserInfo={NSUnderlyingError=0x600001f34390 {Error Domain=ASDServerErrorDomain Code=3903 "The server encountered an error" UserInfo={NSLocalizedDescription=The server encountered an error}}}) (null) - 2 From what I can see, code 12 is a problem with the signature generated for the `SKPaymentDiscount`. Since generation of the signature is handled by the RevenueCat SDK, what are the options for me to fix the problem? I have uploaded the public certificate to my RevenueCat dashboard. Maybe related: there is “Subscription Offers Key” also in Xcode that isn’t used in any way. Perhaps there is some missing configuration in RevenueCat for promotional offers and St
The Customer Center feature, using RevenueCat SDK 5.9.0, is frequently showing “No subscriptions found”. This gives the options to ‘Restore purchases’, which works (presumably, anyway - I didn’t actually have a problem with purchases!), but when I open the Customer Center again, I get the same message. Not seeing anything relevant in the logs - entitlements are being loaded properly, and I am able to use my purchase-only features without issue
I’m Facing this error when trying to get my offerings with const offerings = await Purchases.getOfferings() :[Error: There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. 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).More information: https://rev.cat/why-are-offerings-empty]i already signed all the documents on app store and my subscriptions are in “Pending for submission” state .Here some screenshot of my configurations : Please help , i’m about to going bald with this issue !!! (thanks :) )
TL:DR - Purchases.setMockWebResults({ shouldMockWebResults: true }) - is not working.Since RevenueCat only works on a real device or an emulator - it is a real pain in the ass to test functionality and run Android Studio, it is lagging so much.If RevenueCat was at least “mocking” data in the browser - that would be so cool and useful to quickly iterate on the tasks related to it. And after reading documentation - I found that this method exists - but it literally does nothing, it still logs “Web is not supported”. Calling that method before or after “await Purchases.configure()” - is to no avail.Apparently nobody on the team knows how to fix or wants to fix it, since previous topics were ignored or evaded:firstsecond So either remove it entirely from the API, or fix it - because I consider that functionality is CRUCIAL.
Hi, unfortunately I didn't find the answer to my problem in other questions or in the docs.My app works like this: Users are always logged in and there are no anonymous ids ever, so I always have customIds Each user has credits and balances in a given period, and it's tracked in a third-party database The subscription gives credits each new period I'm using react-native-purchases, developing from android and ios So, to implement a restore purchase in the app, I need to do in two steps:RevenuCat: call ‘restorePurchases’ and identify the user that had the active subscription Third-party online database: transfer the credits and balances from the old user to the new userIf I don't do this tranfer, the bussiness logic is broken. I would just need to get the old user ID of revenue cat (transfered from) to do this, but that's where the problem is.In short'’’Revenuecat: Purchases.restorePurchases() Get old owner idThird party database: Transfer balances from old owner to new owne
I have implemented a monthly and annual subscription in my applications. In recent days, subscribed users have begun to complain en masse that their subscription is not active. If the user re-authorizes, it will work again, then in a week the situation is the same. After authorizations, I call the methods Purchases.logIn(vm.user!.uid);Purchases.syncPurchases();
Hi. I’m BE developer and I see that prev dev used logic “first by platform” for user to determine subscription should be updated. It causes problems when user has 2 subscriptions.Can I use “original_transaction_id” to determine subscription in webhook event handler? Can it cause some problems? Is it ok if in some cases mobile users have 2 subscriptions? Like when they switch from plan to plan.
Hello,I’m trying to check if a user is eligible for an introductory price on Android to display the correct information, but I’m encountering issues. I’ve implemented the following code to check the introductory and free trial prices: val introProductPrice = product.subscriptionOptions?.introOffer?.introPhase?.price?.amountMicros ?: 0 val freeTrialPrice = product.subscriptionOptions?.freeTrial?.freePhase?.price?.amountMicros ?: 0However, I’m only getting the discounted price. When attempting to purchase the subscription, Google Play displays an text saying that I am not eligible for free trial and instead shows the regular price.Could you please clarify the correct way to check for introductory price eligibility, or if there is another method I should be using?Here’s what I have done:I created two subscriptions, let’s call them sub1 and sub2, both with introductory offers. When I attempt to purchase sub1, I correctly see the introductory offer. However, when I try to change my su
I am testing purchases in sandbox. I have purchased a subscription before, and it has expired.When I go in to purchase again, `Purchases.purchasePackage` prints purchase successful immediately and returns nothing and stalls.
We’re distributing our apps on common Android devices with Play Store, but also on devices without any Play Services. We’d like to offer a custom paywall that redirects to Stripe on these latter devices.Are there any API’s available through RevenueCat that help in this case? Even figuring out whether RevenueCat can connect to the Play Store would help.
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.