Get help with anything related to RevenueCat.
Recently active
I checked a couple of articles including this one about how to sync between mobile app & web app. However, I am curious if there’s a preferred user flow when opening the mobile app for the first time if signed up on web. My concern is too much stuff to wade through just to get to the app content.Today, I currently display a Paywall immediately when opening. After subscription is successful, we make them login - Google or Apple oAuth options only. At this time we call the RevenueCat `login` method so the email is linked to our backend auth `userId`. At this point - on mobile - the user & our DB is in sync. On Web, all the user would have to do is login and then we check the RevenueCat SDK customer info to see if they were a mobile user. However, if the user signs up on web & then opens on Mobile, is the solution to have an intermediate screen that offers “existing user login” or “continue for free” option which triggers the paywall? I don’t know that I like the sound
Hello,I am testing an app as external tester and I managed to subscribe to a monthly subscription. Now, I want to test the user subscription deletion and re-subscription. I see that in Sandbox environment it shows me that subscription will be renewed or expired in 1 day, not 5 minutes.Even if I delete the customer from RevenueCat and restart an app, after first paywall page, my iPhone shows me that I have a valid subscription and I can continue it, but I am unable to restart a full subscription cycle again.Could you please help me? When I was testing subscription as internal tester, the expiration time was 5 minutes so I was able to restart the process, is it connected with the fact I am not internal tester but external? Thanks!
Our user journey may allow users to experience multiple trials of our subscription product. We are using the RevenueCat API to grant users an entitlement for a custom time frame. Unfortunately after one successful request, subsequent requests no longer create a new entitlement for the user. Instead it returns successfully with the old entitlement that was granted. Request 1 that grants the initial enitlement const resp = await fetch( `https://api.revenuecat.com/v1/subscribers/${userId}/entitlements/premium/promotional`, { method: 'POST', headers: { Authorization: `Bearer ${REVENUECAT_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ end_time_ms: Date.now() + 1000 * 60 * 60 * 24, }), } );Returns { "entitlements": {"premium": { "expires_date":"2025-02-01T04:57:50Z", "grace_period_expires_date":null, "product_identif
How do I activate the sandbox? I've already logged in with Revenue and Google, but out of 10 sales on the 6th, I got an error. I contacted Google but was unsuccessful.Has anyone else experienced this?
Upgrade from a 1-month to a 6-month subscriptionWe want to offer users who have already subscribed an upgrade from a 1-month plan to a 6-month plan. When we show them our custom (React Native) paywall, no Offering or Product is displayed. let offerings = await Purchases.getOfferings();What is the best way to set this up?- Do we need to set up a new Offering with RevenueCat?- Do we need a new Targeting to show this new Offering only to subscribed customers?- Or should we just choose and display the offering oursleves like so offerings.all['my_six_month']Thanks in advanceKai
Hi,trying to make use of RevenueCat but I won’t get it to work on Android but only iOS.I am getting when trying to purchase a product on a simulator and on my Android device with:try { await Purchases.purchaseProduct('test_4weeks_4_extend'); } catch (e) { print(e); }D/[Purchases] - DEBUG(11123): ℹ️ Requesting products from the store with identifiers: test_4weeks_4_extendD/[Purchases] - DEBUG(11123): ℹ️ Products request finished for test_4weeks_4_extendI/flutter (11123): PlatformException(5, The product is not available for purchase., {code: 5, message: The product is not available for purchase., readableErrorCode: ProductNotAvailableForPurchaseError, readable_error_code: ProductNotAvailableForPurchaseError, underlyingErrorMessage: Couldn't find product.}, null)I have followed the complete setup and created the keys and they are successfully on the platform and also connection to Google is working for Developer Connection.The identifiers are matching the same on P
Due to an error on your side, an issue has simultaneously occurred within our service.We request compensation for any revenue-related losses caused by this issue.
Our app was rejected by apple because of a bad payment experience with the paywall pageWhen a user taps on the CTA button on the Paywall It loads the IOS payment sheet. User enters the password to confirm the purchase on the first one, a second IOS payment sheet is shown almost immediately. User re-enters the password a second time Payment successful. Note: The paywall is NOT what is been shown twice, its the IOS payment sheet that prompts the user to make a payment. In another thread, the solution was This is actually an Apple sandbox quirk. Other developers and myself have also experienced seeing the payment sheet twice (sometimes even more) when performing a test purchase. Nothing to worry about here! The production environment once you ship your app is much more stable.This was not helpful and doesn't solve the problem because our app was rejected. We can ship it to the Appstore.If this is an expected behaviour in the sandbox environment, how do we convince apple to pass the approv
I have a question about the TRANSFER event flow. I see this in the docs -For example, if UserA buys a subscription, then UserB logs into your app on the same device and restores transactions, UserB would now have access to the subscription and it would be revoked from UserA.Currently I’m implementing the handling of the TRANSFER event, so right now when trying to transfer our handler is returning a 500 because it’s not checking for the ids in the right place, which is fine, I can fix that. But even with the 500 response I see that UserB now has the entitlement but it has not being revoked for UserA. Is fixing this minor error so we now return 200 if the ids are valid enough to trigger UserA’s entitlement being revoked?We have some tracking of entitlements our side that we’ll be updating since I understand that the TRANSFER event doesn’t trigger any follow up webhooks but just wanted to clarify this point.Thanks!
Hi, We noticed that some users are missing in the export file we have on our S3.The user exists on RC dashboard when we look in the Customers tab.Do you know how is it possible?Just in case it has an impact, we didn’t select the option “Receive new and updated transactions only” so we receive everything each time. Thank you for your help,
I’m facing an issue with a white screen that pops up intermittently while testing RevenueCat integration in my app, especially when updating subscription status or making API calls. It only happens after these actions, and I’ve already tried clearing cache and reinstalling the app.I’ve double-checked the SDK setup and the subscription flow, but the problem persists. Anyone else dealt with this? Any tips on how to debug or fix it?
I’m testing my iOS app (designed for iPhone/iPad) on Apple Silicon, and when trying to purchase a subscription I get the next error:ERROR: 💰 Product purchase for 'pro_plan_subscription' failed with error: PurchasesError(error: There was an unknown backend error., userInfo: ["NSLocalizedDescription": "There was an unknown backend error. The API key is not intended for the Platform. (7810)", "NSUnderlyingError": Error Domain=RevenueCat.BackendErrorCode Code=-1 "The API key is not intended for the Platform. (7810)" UserInfo={rc_backend_error_code=7810, NSLocalizedDescription=The API key is not intended for the Platform. (7810)}, "rc_backend_error_code": 7810, "readable_error_code": "UNKNOWN_BACKEND_ERROR", "source_file": "RevenueCat/HTTPClient.swift:886", "rc_response_status_code": 403, "source_function": "parseUnsuccessfulResponse()"]) I’ve checked the RevenueCat admin dashboard and ensured there’s no separate option for Mac App Store. There’s only one unified AppStore option for iOS, m
What happens when I delete subscriptions in App Store Connect?Does `customerInfo.entitlements[“pro”]?.isActive` continue to return `true`?I want to stop renewing subscriptions, but still provide service to paid users during their validity period.
I’m setting up RevenueCat for the first time and have come across a handful of documentation bugs that I’d like to report. What’s the best place to report them?
Hi.I have used the Revenuecat extension for firebase for a while, but have not found the use of it as I cant see custom claims in the idTokenResult.I want to use custom claims to only allow users with subscription to upload files and then use this custom claims on firestore rules instead of only checking permission inside the application.I have configured the extension in revenuecat and enabled custom claims in the extension:Should custom claims be set in Firebase Auth with the user's active entitlements? DescriptionENABLEDBut when i fetch the entitlements in application, i only get theese:user?.getIdTokenResult(true).then((value) => print(value));{ "firebase":{ "identities":{ "email":[ "x" ] }, "sign_in_provider":"password" }, "user_id":"x", "aud":"x-app", "exp":"x", "iat":"x", "iss":"x", "sub":"x", "email":"x", "email_verified":true, "auth_time":"x"}Any suggestions, or cant revenuecat set custom claims that i can use
I am developing an application in Kotlin with Jetpack Compose and implementing the code to retrieve subscription offers, which include three different plans.I have uploaded the app to Google Play Store in production to test its functionality on a real device. However, when trying to fetch the products, an error occurs, even though the configuration appears to be correct.@HiltViewModelclass PurchasesViewModel @Inject constructor() : ViewModel() { var informationState: InformationUiState by mutableStateOf(InformationUiState.Hidden()) private set var offeringState: Offering? by mutableStateOf(null) private set var selectedPackageState: Package? by mutableStateOf(null) private set init { loadOfferings() } private fun loadOfferings() { Purchases.sharedInstance.getOfferingsWith( onSuccess = { offerings -> val offering: Offering? = offerings.current offeringState = offering selected
How to set up the free trial offer in Flutter and Google Play? In my Google Play Store Console, I have setup the base plan. I have then setup a trial 7 day offer. The offer is now separate from the base ID. When I use the base ID for my product offerings, it doesn’t automatically grab the Google Play offer. How do you implement this, is there a partial example to follow?From previous post: I don’t have a full example, but sharing some parts of the code to see if it helps (let me know if it doesn’t).The flutter repository has a sample app called magic weather with a paywall → https://github.com/RevenueCat/purchases-flutter/blob/main/revenuecat_examples/MagicWeather/lib/src/views/paywall.dartIt gets the store product from the available offering and uses it to render the paywall → https://github.com/RevenueCat/purchases-flutter/blob/main/revenuecat_examples/MagicWeather/lib/src/views/paywall.dart#L67-L79You can use `final freeOffer = storeProduct.subscriptionOptions?.firstWhere((option) =
Is revenuecat like 1% additional commission from the stripe credit card commission rate? Just curious with the system
Is the following still required in my AndroidManifest.xml?<uses-permission android:name="com.android.vending.BILLING"/>the Flutter installation guide doesn’t mention it but I’m following a video which explicitly recommends it.It’s mentioned a couple of times in relation to react native.
I recently implemented RevenueCat in an existing app.I noticed that when a user makes any purchase through the RevenueCat SDK, the "Customer Profile" screen on the dashboard shows the purchase history (including consumable items) prior to the introduction of RevenueCat.How is this accomplished?In StoreKit 2, you cannot get the purchase history of consumable items by `Transaction.all` (for iOS 17 and below).Also, is there a way to retrieve past purchase history, including consumable items, for users who have not yet purchased anything after introducing RevenueCat?It appears that `Purchases.shared.customerInfo().nonSubscriptions` does not return a history of past purchases of consumable items for users who have not yet purchased anything after introducing RevenueCat.
Hey!I wanted to make sure I understand the recommended approach of handling in-app purchases.Let’s assume my app has only one app store in-app purchase that charges on per-month basis.The app itself will run on IOS and is written in swift.My current authentication flow is as follows:the user opens the app and can log in or register via firebase with: Apple Account, Google Account, regular email + password account.What I don’t really understand is:Should I set the revenue cat userID to the firebase user ID in this case?When I set the userID to firebase user ID will the subscription only be active for this single account that was used to log in? Is there already some implementation that returns or informs the app when user is signed in but his purchase (membership) expired? How can you implement a 7-day trial in this case? The purchase is made by an apple ID account, but the beneficiary is the actual account that was used to log in in this case? Is there some event that can notify the fi
Hi,I have just gotten rejection from Apple because the IOS pop up sheet showed up once to subscribe and after subscription, the IOS payment pop up sheet showed up again which is twice. I have been able to replicate this in testflight and sandbox but I dont know how to solve this and go ahead.Can someone help please- It is so frustrating as it is Revenue cat prompting the sheet twice.
Hi, so i set up paywall of catrevenue to make things easier, but nothing easy for now. First, when i create the paywall i put an image on top. But i cant define what of the image should be shown, Its cropped and zoomed (for me) very randomly. The other issues im running into is that the Paywall is showing up when i Test it on my Iphone. On my Android Emulator it works
Hi, I cannot fetch offerings in Xcode, I set a NON Consumable IAP, and on product → store status there is a message: could not check Connection issue.Make sure the App Store Connect API credentials are configured properly.How can I handle this?
The dashboard only shows data from the last 28 days. I’ve applied the following filter, but the results don’t seem consistent. Is there another way to achieve this?
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.