Discussion and help from anything related to RevenueCat.
Recently active
If you’re here, it’s probably because you’ve encountered an active issue related to Apple’s receipt verification.RevenueCat relies upon Apple’s `verifyReceipt` endpoint which is currently facing an outage: https://developer.apple.com/system-status/This seems to be affecting sandbox and TestFlight purchases only at this time, although Apple’s status page doesn’t mention it explicitly.Encountering this issue? Post below ⬇️ RevenueCat isn’t able to resolve this at this time from our end, but it may help bring awareness and ease to other developers facing the same issue.Update 2/8/23 19:20 UTC:Customers (and me 😃) reporting things are working as expected again - post below if you’re still having trouble, seems like a slow rollout of a fix from Apple.Update 2/8/23 17:40 UTC:Apple’s reporting the issue is fixed, but we’re still encountering errors. Will provide another update as soon as possible.
Expo Go doesn’t build native modules, so you may run into this error while trying to run your app with react-native-purchases in Expo Go. In order to use RevenueCat with Expo, you will have to create Development Builds, which can be done either by using EAS, or by making builds that are compatible with Xcode and Android Studio. There are detailed instructions for doing either one in this page:https://docs.expo.dev/development/build/ Easiest way to be able to debug is to just run either of the following:npx expo run:android -dnpx expo run:ios -d We also have a blog post that goes step-by-step into how to make an app with Expo and RevenueCat using EAS: https://www.revenuecat.com/blog/in-app-puchase-expo-managed-workflow/ Let us know if you run into any issues!
Hi! 👋🏻 We’re in the final stages of our testing of some StoreKit 2 features before fully calling it ready for production, and we’d love your help! Context: Starting with v4.0.0, our SDK already uses StoreKit 2 by default on compatible devices for some features where the StoreKit 1 functionality was problematic, buggy or unreliable, and StoreKit 2 is essentially guaranteed to be an improvement (like checkTrialOrIntroDiscountEligibility). For devices that aren’t compatible with StoreKit 2, it defaults to a StoreKit 1 implementation. However, we haven’t enabled StoreKit 2 by default for making actual purchases. We’ve tested it extensively in Sandbox and StoreKit Test (see our blog post on how we test our SDKs) but we need to see how well StoreKit2 behaves in production before calling it ready. How to help: Our SDK includes an optional flag in the configure method, called useStoreKit2IfAvailable. In order to help, all you need to do is to set that flag to true! With this flag set,
Hi,Apple have rejected my use of an auto renewing subscription under:“Guideline 3.1.2 - Business - Payments - Subscriptions – Your app uses auto-renewing subscriptions, but it is not an appropriate use of the service. Specifically, the in-app purchase products only unlock features.”I am appealing this on the grounds that dozens of other similar apps in the same category also use auto renewing subscriptions. However, I don’t expect the appeal to succeed, and I will have to use a non renewing subscription.Non renewing subscriptions seem to have far less support in app store connect. They don’t even allow configuration of a time period – the developer has to handle this.The revenu-cat SDK also seem to have very little support for non renewing subscriptions. They aren’t supported in an entitlement, so again – the developer needs to handle this.Does revenue cat have example code to show how I can do this? I assume I need to somehow get non renewing subscriptions that the user has bought and
Hi,We tried to simulate a communication failure with our webhook endpoint and we noticed that failed events are no longer resent.How can we handle this case correctly? Is there a way to manually send a failed event?Also we not found in the documentation if there is an api rest that allows us to recover failed events. There isn't, is that correct? Thanks
Hello guys when I try to use eas build i always got this error. :/ does anyone could help me
Hi guys, I am new here:)I am working in expo managed workflow, building an ios app.I installed the react-native-purchases through yarn (version 8.5.1). I try to do my eas build in development (works in the past).after a few seconds, I get this error that prevents the build? what am I doing wrong? “Package "react-native-purchases" does not contain a valid config plugin.”Thank you!!M (P.s. I tried multiple versions but nothing works)
Hi guys. I make test purchases in the simulator in my application. for this, although I change the storefront value in xcode and select different countries, the prices are not localised. for example, my membership, which is 20 dollars for the US, is 20 yen for Japan. that is, while the currencies are localised, the price always remains 20 units without changing at all. i wonder if this problem is caused by testing in the simulator or I missed a place in the revenucat configuration.
Hi all, First post here, so apologies if it is a dumb question! I am using RevCat for my Thunkable (No Code) app. I have connected my Stripe account with RevCat and created an app. (Img below)When following documentation provided by RevCat/Thunkable (In-App Purchase Blocks (with RevenueCat) | Thunkable Docs), it says I should have an IOS and Android API key. However, I seem to only have one API key for the app, seen in the image. Why is this? Do i need an IOS/Android API key? How can I get one? Many thanks, :)
I just finished my implementation of RevenueCat in my Flutter app. People can buy premium version to turn off ads. They pay once and then they will never see the ads.I just tried it with the test card. And the purchase shows up under Customers in the Play Console - but not in RevenueCat. I tried refunding in Play Console and clicked the revoke entitlement box. But seems like no mate what I do, I still have the entitlement in the app. I purchase like this: final customerInfo = await Purchases.purchaseStoreProduct(widget.storeProduct); final adsFreeEntitlement = customerInfo.entitlements.all['remove_ads']; if (adsFreeEntitlement != null && adsFreeEntitlement.isActive) { await _checkPremiumStatus(); }And I have a provider that checks the premium status like this:Future<void> checkPremiumStatus() async { try { final customerInfo = await Purchases.getCustomerInfo(); final entitlements = customerInfo.entitlements.active.values; _hasPremium
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
When a user first enters our app, they are setup as an anonymous user and get RevCat’s anonymous ID. This happens via using `Purchases.configure(revcat key)`. Later should they login with a named account from our system, we use `Purchases.shared.logIn(customID)` to update the RevCat user with our customer identifier. The issue is that after doing this and checking `Purchases.shared.customerInfo()` for the ID, the initial anonymous ID is returned rather than the custom ID supplied at login. Should the login method not change the user’s ID when checking their `customerInfo`?
I'm using Flutter to develop my application, but I ran into a problem when I tried to incorporate a revenue cat subscription feature into my Android app. This problem is specific to Android, not iOS, so the error message I'm seeing in the debug log is “Error loading offerings info: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Error when fetching products. DebugMessage: Billing Unavailable. ErrorCode: BILLING_UNAVAILABLE.}, null)”I have followed all the instructions they have given me, and I have made sure to do so, but I'm still having trouble. If someone could assist me, I would be very grateful.
Hope someone can help.In my Android app (which I’m still developing, so in test / sandbox mode etc), RevenueCat purchases seem to work okay. However, after a purchase, in onCompleted, I’m trying to get EntitlementInfo from provided CustomerInfo, and it’s (EntitlementInfo) always null.I’ve also attempted to get EntitlementInfo from CustomerInfo using the RecieveCustomerInfoCallback, a few moments after the purchase completed (so, not immediately after), and EntitlementInfo is still null.Also, just to add, it’s a non-consumable product.Any suggestions?
I’m trying to understand the new refund request functionality that RevenueCat provides, as announced here: https://revenuecat.releasenotes.io/release/yTKyk-we-now-handle-apple-refund-requests-automatically. My question is around the reporting of consumption. The article states:The degree to which a customer consumed an in-app purchase (for example, someone six months into an annual subscription would have consumed that for 50%) Is this the only mechanism RevenueCat implements for reporting consumption to Apple — calculating the fraction of a subscription that has elapsed? It seems that Apple would already trivially be able to calculate that from their records given the time of the refund request? My app delivers user credit for both consumable IAPs, and over time for auto-renewing subscriptions. Usage of these credits costs me real money, so I’m certainly concerned about how much has been consumed at the time of a refund. Does RevenueCat have any solution for reporting metered usage s
I added the Paywall (RevenueCatUI.presentPaywall()).I did everything from this guide:Google Play Store | In-App Subscriptions Made Easy – RevenueCatDownloaded from closed beta, add my google account to testers, but the app try to charge my card.Meanwhile in iOS everything working good and payment not charging
Currently the firebase integration sends both trial conversions and renewals as the same event to firebase (purchase), and this is a problem when it comes to running google ads. In google ads, we wish to see how many trials converted from a campaign, but since this isn’t a separate event, renewals and trial conversions are combined and its not possible to see the number of new paying subscribers that we obtained by a google ads campaign. Can RevenueCat please add the ability to also send the the trial converted event as rc_trial_converted ? This would be a great help. Below is the current Firebase event mapping. Currently trial conversions are mapped to ‘purchase’.
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