Discussion and help from anything related to RevenueCat.
Recently active
I'm building a web to app funnel that transitions users from my web app to my iOS app, and I'm running into a challenge with purchase synchronization. Currently, I have two separate RevenueCat projects:Web Purchases: Managed under RevenueCat Billing with its own API key. iOS App: Managed under RevenueCat iOS with a separate API key.When a user completes a purchase on the web, I want to ensure that once they transition to the iOS app, their entitlements (or purchase status) are correctly recognized and loaded.My Questions: Is it possible to connect or sync the purchase data between these two RevenueCat projects? If so, what’s the recommended approach to ensure that a web purchase reflects properly in the iOS app? Are there best practices or workarounds for handling separate API keys and project configurations when implementing a web-to-app purchase funnel? For example, can I share user identifiers or purchase tokens between the two projects? Has anyone implemented a similar setup? I
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.
Hey guys, it would be awesome to get a video background in paywalls v2, what do people think?
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
Hi everyone,We ran a promotion offering fixed-term subscription plans (4, 3, and 2 months). After the promo period ended, RevenueCat reports 100% churn, but we know some users continued as regular monthly subscribers—meaning they changed offer categories.What’s the best way to accurately track real churn and retention for this type of transition?Currently, we’re manually filtering customer lists by status, latest store, and latest offer, but is there a more direct way to analyze this in the charts?Appreciate any insights!Thanks!
Hi,I’m currently testing paywalls and noticed that on iPads, they appear very small and don’t occupy most of the screen. I've attached a screenshot for reference of how the paywall looks on iPad pro 13-inch.Is there a setting or adjustment I might be missing to make the paywalls display more prominently?Thanks,Sean
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. I keep getting this error when calling Purchases.getOfferings() but I am able to get result when calling getProducts([id]). my paid application agreement is active and i have my products inside the offerings.I am stuck for weeks. i need help. i dont know what am i missing
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!
When testing with release version of a react-native app, I continually get the sandbox subscription options when attempting to purchase. For ios, I have no sandbox account setup, but this happens on multiple devices.For Android, I removed my sandbox account and this happens. Everything shows up and the purchase completes OK, but is always in the sandbox.
Let’s say 1000 users start in November 2024 and 15 of them purchased an annual subscription at $50. Will the reported realized revenue for Month 0 (completed beginning of December) be 15*$50 = $750 or are annual subscriptions prorated and I would be getting $62.50 reported as realized revenue on Month 0?
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,
am new to revenue cat. am supposed to add play store financial report bucket id. i went to play to get it as described in the documentations but there is no transaction so i can’t the id. what do i do to get the id?
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.
Hey my app keeps crashing on some clients. Flutter:purchases_flutter: 8.2.1purchases_ui_flutter: 8.2.1User android version: Android 14 (SDK 34)Crash log: Exception java.lang.RuntimeException: at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4164) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4322) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:139) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:96) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2685) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:230) at android.os.Looper.loop (Looper.java:319) at android.app.ActivityThread.main (ActivityThread.java:8919) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit
I deleted an app because I had the wrong Identifier. I think I must have left the entitlement and the offering attached because when I go to offerings and look at the packages attached, it’s still there, kind of. It shows up in the list but it’s greyed out and not selectable. I think that somebody at the system level of RevenueCat needs to look at this.
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
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.