Discussion and help from anything related to RevenueCat.
Recently active
If an entitlement is unlocked by multiple products at the same time, how do you see all of the products that unlocked the Entitlement? The EntitlementInfo class has a productIdentifier field on it that is a string but that only seems to show the last product that unlocked the entitlement, not all the products. https://revenuecat.github.io/purchases-ios-docs/5.43.0/documentation/revenuecat/entitlementinfo/productidentifier Thanks
Flutter, purchases_flutter: ^9.8.0purchases_ui_flutter: ^9.8.0 The paywall shows monthly and yearly SKUs in different currencies.Yearly - eur (expected, as I’m looking at it from Europe)Monthly - USD (default currency) - is not localized this is both on iOS and Android. Any ideas where to check for it?
Using RC’s V2 paywalls, my app is crashing every time I open the paywall in my React Native Android app with the exception:java.lang.IllegalStateException: Software rendering doesn't support hardware bitmapsThis is continuing the conversation on a past issue, as it was never really solved but @db888 found out that if he removed `expo-blur` the issue goes away. I’m encountering the same problem now but we have a requirement for blur views in the design so it’s not as simple as just removing this.Is there any plans to getting an actual fix out for this in Paywalls? I believe this is a hint at a potential solution: https://stackoverflow.com/a/58315279 Edit: I’m using `@sbaiahmed1/react-native-blur` and not `expo-blur`. It seems to not be an issue with `expo-blur`. Maybe they changed the library or something, I don’t think they use native blur views on Android.Referenced Issue:
Hi All,Did anyone of you had this problem with Paywall? One of our users reported that he can’t proceed due to a fact that the paywall is broken and doesn’t contain any action (purchase/proceed) button. We have asked for a print screen ant it look horrible indeed. User was: Samsung Galaxy m23 5G/ Android 14/ One UI 6.1 (probably on a large screen view). Broken View:Normal view:
Hello,My app uses Firebase Anonymous Authentication exclusively. When a user with an active subscription restores their purchase on a new device, they get a new anonymous user ID.Currently, RevenueCat transfers the entitlement to the new anonymous ID, deactivating it on the original device.My goal: I want the subscription to be shared so that the entitlement remains active on both the original device and the new device (and any future devices). How can I achieve this subscription sharing model with anonymous users?Thanks,Florin
Hi All, Can someone confirm what the process is to allow full testing for App Store/Play Store reviews when using anonymous Ids with Paywalls? The App Store mentions providing a sign in user id and password, but this isn’t applicable when using anonymous ids… Any help appreciated - thank you!
Hi. I am running into problem initializing RevenueCat for my Expo react-native app. I spent a lot of time debugging the issue and finally narrowed to the Purchases.configure() call. First of all I had everything working fine in a “development” build (a native build with “developmentClient=true”. It is not an Expo Go build.). I am using a RevenueCat “Test Store” because I haven’t set up anything on App Store or Play Store. It worked fine on both iOS and Android. Then I tried to make internal “preview” builds (with “developmentClient=false”) and it started having problem. On iOS the app immediately crashed and disappeared once the Purchases.configure() is called. On Android the app became a blank screen right after the configure() call, but it does seem like different symptoms of the same problem. I set up the “Purchases.configure()” call within a button onPress() event to help the debugging, and hardcoded the Test Store API key in codes to rule out the possible environment variable iss
Hi, everyone,I just implemented RevenueCat to my app with version 9.10.0, but when user renew or trial to paid. not any event in_app_purchase has been recorded. I linked firebase with google play store and revenue cat with GA4Someone can help me about this.Thanks!
I’ve set up my app store IAP and set up the various RC things needed for it. But in App Store Connect, my IAP entry says “Missing Metadata.” I have verified that all agreements/forms/etc are done under “Business” and all say “Active.” I’ve added the price for the IAP as well as the localization entry and image. However, the localization and image say “Prepare for Submission” not “Ready to Submit” so I don’t understand what I’m supposed to do.The only thing that I haven’t added is a screenshot, because I don’t understand how I’m supposed to offer a screenshot of the app if I can’t actually get the IAP from the SDK yet?? Like, show an empty screen where the IAPs are supposed to appear?? I can’t find ANY guidance on this aspect. The help popover just says “We’ll only use the screenshot for our review — it won’t be displayed on the App Store.” The help page says “A screenshot of the in-app purchase that clearly shows the item or service being offered.”So how on earth are you supposed to do
Hey everyone,I’m running into an odd issue while testing subscriptions. I’ve gone through all the usual setup steps, and the offerings fetch seems okay, but the purchase sheet never appears. What I have so far App built with Vue 3 + Capacitor. Integrated the RevenueCat SDK (capacitor-purchases). Offerings are fetched successfully from RevenueCat, so configuration seems correct. Testing on a physical device via Xcode, not TestFlight. Device is signed in with my personal Apple ID, while the sandbox ID is logged into developer settings On the manual subscription test (developer settings), the Apple sandbox pay sheet showed up, I subscribed, and in my app I can see the purchase reflected in customerInfo. ✅ The issueWhen I try to purchase the package (the code executes correctly and uses the correct package data), I don’t get nothing. No xcode logs, no freezes, no pay sheets. It’s like I’m not pressing the button. The function is being called and the logs stop right before.await
This looks like the exact same problem from this thread: Everything I put look very correct.Thanks in advance
Stack: Flutter, purchases_flutter 9.7.0, iOS target 14, RC sandbox Web Billing, same RC project for App Store + Web Billing.Entitlement: premium (Web product appname_weekly_web attached).App User ID: e.g., YuSUDJGSSUQqYkeJqu0xoH2 (logged in via Purchases.logIn(uid)). WPL (identified):https://pay.rev.cat/sandbox/<TOKEN>/<APP_USER_ID>?package_id=$rc_weekly Server says it’s active:REST /v1/subscribers/<APP_USER_ID> shows premium entitlement active (store: rc_billing, is_sandbox: true). WPL revisits show “Success” (already subscribed). Client says it’s not:On app resume:await Purchases.invalidateCustomerInfoCache(); final info = await Purchases.getCustomerInfo(); print(info.entitlements.active.keys); // => () I have tried polling every 2 seconds and the entitlement never gets updated. What does work:If I build the WPL with originalAppUserId (or anonymous flow) and tap the Redeem Purchase deep link:final r = await Purchases.parseAsWebPurchaseRedemption(url); if (r != n
Hey everyone,I recently added a free trial to one of my subscription products on App Store Connect (Noor – Quran Companion).This is my first ever app; I managed to get someone signing onto a 3-day trial for one of my subscriptions.The trial period expired as expected, but the user was not charged, and no “Opted-out of renewal” or “Cancellation” event appeared in RevenueCat — only an “Expiration” event. (I’ve attached a screenshot of this).I want to know what happened here? Could it be that my code or my subscription on app store connect is set up incorrectly?Any help is greatly appreciated.
Inconsistent behavior with the documentationIn your documentation you claim that if a subscription has lapsed (for same product or a different one), I will get a new Original Transaction ID (OTID). On short, every new subscription should have a new OTID during the life of that subscription. This should be true for both Google and Apple stores.I found this to be false in case of Apple – at least on the Sandbox environment (I do not know yet on Production, but I expect Sandbox to mimic exactly). Same OTID was generated for same Product subscription expiring and repurchase and for purchasing a different product after the subscription expired.Same OTID maintained between subscriptions of same productSame OTIP maintained between subscriptions of same and different products Original Transaction ID (OTID) needed in the API V2 Subscription objectI saw that I am not the only one requesting this. I need OTID to be present in the API V2 Subscription object (https://api.revenuecat.com/v2/projects/
My app requires login, so when i call Purchases.configure(new PurchasesConfiguration.Builder(mActivity, apiKey).appUserID(customUserId).build());i always pass a customUserId, that i expect to receive on the webhooks to track user purchases on my backend.I also never call logout. On RC backend i have these options activated:Tracking new purchases from server to server notifications.Keep with original App User ID I understand that the server to server event might sometimes arrive before the SDK one, thus an anonymousUserId is created and the corresponding webhook does not provide usefull user information (customUserId). My question is once the SDK updated information arrives to RC backend, is a new webhook created with the updated info? Or do i need to listen for a diferent kind of webhook when the alias with my customUserId is created on a later time? I don’t want to be polling RC backend to detect these changes.I could disable server-to-server event, and probably will, but i worry tha
Hi guys, can you PLEASE extend your api v2 with a sort - parameter for the list views?We have users that have more than 100 transactions and we have to build complicated pagination features and check hundreds of transactions since the “customer purchases list” returns a chaotic JSON array of transactions with no sorting whatsoever. At least sort it by id or purchase_date by default!
Hi guys!There is an issue with Flutter SDK (on the latest 9.5.0 as well) for Android with multiple placements.In my app I have multiple placements with different offerings. Then I set up targeting in the Dashboard without specifying any placements, only the default offering. I would expect that all placements in my app would show that default offering. This is actually the case in iOS. But in Android no paywalls is shown at all.Many times I forget to list all the placements when targeting and my Android app won’t show paywalls in missed placements. Recently I run an experiment without specifying placements in the experiment settings and after 3 days I figured that the Android app wasn’t showing any paywalls at all because of this issue :(You can find more information in this GitHub issue:https://github.com/RevenueCat/purchases-flutter/issues/1225
I added my IAP products in App Store Connect, configured them, and they appear correctly in RevenueCat. However, the products don’t show up in local testing; they only appear when I use a .storekit configuration file, which doesn’t work in TestFlight or for the reviewer. Reviewers need the products to be approved to see them, but during review the products aren’t visible, causing the app to get rejected. Even when I submit a build, the products remain in Waiting for Review and aren’t approved. In this situation, what should I do to ensure the reviewer can see the IAPs and approve the app without it being rejected? WARN: ⚠️ RevenueCat SDK is configured correctly, but contains some issues you might want to address Warnings: • Your products are configured in RevenueCat but aren't approved in App Store Connect yet. This prevents users from making purchases in production. Please ensure all products are approved and available for sale in App Store Connect. • The offerings 'default' have co
When running the SDK using Unity 2022.3.51f1 and built for Android 15, I get the following error in ADB log. What can I do about it? 10-16 14:52:13.767 19513 19557 E Unity : AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/auth/blockstore/Blockstore;10-16 14:52:13.767 19513 19557 E Unity : java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/auth/blockstore/Blockstore;10-16 14:52:13.767 19513 19557 E Unity : at com.revenuecat.purchases.blockstore.BlockstoreHelper.<init>(BlockstoreHelper.kt:29)10-16 14:52:13.767 19513 19557 E Unity : at com.revenuecat.purchases.PurchasesOrchestrator.<init>(PurchasesOrchestrator.kt:146)10-16 14:52:13.767 19513 19557 E Unity : at com.revenuecat.purchases.PurchasesFactory.createPurchases(PurchasesFactory.kt:357)10-16 14:52:13.767 19513 19557 E Unity : at com.revenuecat.purchases.PurchasesFactory.createPurchases$default(PurchasesFactory.kt:68)10-16 14:52:13.
HiFor the past weeks i have been having a serious with trying to purchase my app's subscription that i set with RevenueCat. I have followed all the documentation steps required to set up subscription in my app, but i still get get an error saying purchase failed due to configuration error and also saying i should contact customer support. My product ID from google play console is correct that i put in RevenueCat and everything in Google play consoleThe problem happens with my android app when i test it in internal testing using google play console. Please do note that it is an app i created using expo react-native.. I would really like help A.S.A.P.
I am using Ionic + Capacitor + RevenueCatUI to present Paywalls for my app’s subscriptions. I want to add event listeners so I can handle cases such as:Restore Purchases with no Active Subscriptions DEBUG: Restored purchases successfully with no subscriptions Purchase Error due to Restore Behavior = ‘Keep with original App User ID’ ERROR: 😿‼️ There is already another active subscriber using the same receipt. However, I see that RevenueCatUI only allows listeners for paywallDisplayed and paywallDismissed.I am using:"@revenuecat/purchases-capacitor": "^10.4.0","@revenuecat/purchases-capacitor-ui": "^10.4.0",Is there any way I can handle the cases described above?
For some reason today I am unable to complete any purchases in the Simulator. Offerings are retrieved successfully from RevenueCat - as can be seen in the screenshot. However when purchase() is called I get the following popup.I am using a Storekit configuration file, and this worked just fine previously. My app was rejected yesterday due to 2.1.0 Performance: App Completeness - as they couldn’t even load this screen in the review (maybe because the subscriptions are still in review?)All my agreements are active, everything looks good on RevenueCat side but this just wont work. I can’t test using a real device because I don’t have an iPhone so thats not possible. Releasing Google Play was such a painless experience, this in comparison is a nightmare.I am not sure what to do here? Do I wait for the subscription review to pass before trying again?
hello,Im integrating web purchases with redemption links for a web to app funnelIm seeing that once i redeem the web link, the entitlement goes to the annonimous user Id assigned on the web, rather than to the appUserID in my mobile app SDK here is my full pipelineuser lands on my web funnel and is redirected to revenuecat web checkout Revenuecat web checkout assigns an anonymous appUserID, eg $RCAnonymousID:01 User downloads my app user taps a deeplink, which launches my app. Deeplink example: rc-0000000://redeem_web_purchase?redemption_token=abc ---app launches and runs Purchases.configure--- Purchases.configure assigns an anonymous appUserID eg $RCAnonymousID:02 User gets automatically loged in to Firebase, fiirebase returns an ID eg. abc123 Purchases.login(firebaseID) runs, abc123 becomes an alias for $RCAnonymousID:02. Firebase and RC have matching IDs at this point. ---Web purchase redemption begins--- Validate link received in step 4 and redeem it Entitlement assigned to user w
For the first time I am releasing app into AppStore (with subscription feature). I have setup RevenueCat using .p8 file I have seen that “Valid Credentials” And during testing I could be able to sanbox-purchases. But right now apple confirmed my release with following email:We're pleased to let you know that your app, ..., has been approved for distribution.Please note that it can take up to 24 hours for apps to become available on the App Store after release.If your contracts are not yet in effect, your app cannot be distributed. Check the status of your contracts in the Agreements, Tax, and Banking module in App Store Connect. However when i download the app and trying the load the offerings. RevenueCat returns following error (both in testing and prod): ⚡️ [error] - {"code":"23","errorMessage":"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
Hi everyone,I'm getting a persistent warning in my console logs and my app was rejected by Apple Review with Error 23 (Configuration Issue). I believe it's related to subscription metadata, but I need help understanding what I'm missing.**Issue:**- Console shows: `WARN: Empty Product titles are not supported. Found in product with identifier: iradepremiumtest1`- Apple Review rejection: Error 23 - Configuration Issue- Products are loading correctly with prices (₺249.99, ₺899.99)- Both products are in state: IN_REVIEW in App Store Connect**What I've Done:**1. Created subscriptions in App Store Connect (iradepremiumtest1, iradeyillik1)2. Added App Store Localizations (Turkish and English) with Subscription Display Names filled3. Saved all changes in App Store Connect4. Products are configured correctly in RevenueCat Dashboard5. Offerings are loading successfully6. Prices are showing correctly**Current Console Output:**✅ Offerings loaded successfully 📦 Available packages: 2 💰 Product ID:
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.