Get help with anything related to RevenueCat.
Recently active
Currently, the restore functionality works correctly in the Sandbox environment, but issues arise in TestFlight.In TestFlight, when a user who has not made a purchase presses the Restore button, it incorrectly shows the purchase as restored. In Sandbox, when a user who has not made a purchase presses the Restore button, it does not show the purchase as restored, which is the expected behavior.I’m unsure why this issue only occurs in TestFlight. What solutions are available to address this discrepancy?
I’m using the iOS SDK, all products can not be loaded in China Mainland unless using a VPN.Any solutions for that? It’s a fatal situcation.
It goes something like this:1 - Sign into RC with appID12 - Purchase subscription.3 - Sign out and back in again using appID24 - RC says no subscription active for appID2 and so we present offerings.5 - Purchase fails because (presumably) Play Store thinks we already have an active sub because appID1 bought one using the common PlayStore sign in.I’d like to prohibit sub sharing across different accounts.In order for appID2 to be able to purchase a subscription, another Play Store account needs to be used.What’s the general best practice for dealing with this scenario?Many thanks.
Hello,iOS users changed subscription plan but it seems the new subscription does not immediately affect their account.Customer profile shows user successfully changed their renewal preference to higher subscription plan but user’s current Entitlement has not been changed. I think the user's Entitlement will be changed on the next subscription renewal.What I want is crossgrade, users should upgrade and use new plan immediately.All of our subscription plans are in the same subscription group and subscription duration are same. It should be Crossgrading with Same Duration but I have no idea what is the problem.Please help me to solve the problem.
DEBUG: ℹ️ API request failed: GET '/v1/subscribers/$RCAnonymousID%3A4d4f3f826e1d447abbffa71973d3eedd' (<>): The request timed out. WARN: ⚠️ Attempt to update CustomerInfo from network failed.The operation couldn’t be completed. (RevenueCat.BackendError error 0.)Underlying error: The request timed out.
Hello,I have a question regarding the V2 API.When I make a single API call(`/subscriptions`), the value of RevenueCat-Rate-Limit-Current-Usage in the response headers appears something weird. For instance, I receive values like 686 or 602 for a few calls, while RevenueCat-Rate-Limit-Current-Limit is set to 480.The Current-Usage value is higher than the Current-Limit, yet no rate limiting is applied.Could you explain the logic behind how these values are determined?Or is trial and error until the rate limit is triggered the best approach to understand this?
Currently have an iOS app with a subscription group, Basic & Plus. In Revenue Cat I have 2 entitlements containing the respective “product (subscription)” from the app store. Then in my offerings I have 1 group called default, which contains the packages tied to a single product. How can I make sure that my Plus plan is prioritized? I want to make it so that if a user has Basic and buys Plus auto cancel the basic and go to the Plus.
Hello,I’m currently developing a Flutter-based fitness app, and we’re integrating the payments feature using RevenueCat (not live in production yet). The app offers three types of subscriptions: 1 month, 6 months, and 12 months.Here’s the functionality I would like to implement: Monthly Subscriptions: If a user with a 1-month subscription burns a certain calorie threshold for the month (determined by my backend), they should receive a 50% discount on their next month’s subscription. And then if the user doesn’t burn enough calories on month 2, they get back to full price. Long-Term Subscriptions (6 or 12 months): My backend tracks whether the user burns enough calories each month. For each successful month, a value (e.g., 50% of that month’s fee) is added to a virtual piggy bank. At the end of their subscription, the total amount in the piggy bank will be used as a discount for their next subscription. I also would like to get the possibility to keep that value somewhere instead, s
I am planning influencer campaigns on would like to come back to them with credentials so they can login & use the app for free Currently there is either no login, either login with email. How can I “whitelist” their email address so they can skip paywall upon onboarding?
I've implemented a listener for subscription status changes in my Flutter app like this: void listenToCustomerInfoUpdates(Function(CustomerInfo) listener) { Purchases.addCustomerInfoUpdateListener((customerInfo) { // Called whenever subscription status changes listener(customerInfo); });}I want to confirm: If a user cancels their subscription through the system subscription settings (App Store), will this listener automatically detect the change?My implementation:I've set up the listener in my service layerUsing it with BLoC pattern to update UI stateThe listener is registered when the app initializesIs this the correct approach for handling real-time subscription status updates? Will it catch all subscription state changes including cancellations through the system settings?Thanks in advance for any clarification!
Hi, I’m developing iOS 18+ app with RevenueCat 5.12.1.I found SubscriptionStoreView is almost perfect for me to make a paywall.My earlier code without SubscriptionStoreView used a custom purchase button like this. var buttonToPurchase: some View { let packages = offering?.availablePackages ?? [] let package = packages.first ?? nil Button { guard let currentPackage = package else { return } Purchases.shared.purchase(package: currentPackage) { (transaction, info, error, userCancelled) in if info?.entitlements[Constants.entitlementID]?.isActive == true { navigationViewModel.path.removeAll() } else if let error = error { self.error = error as NSError self.displayError = true } } } label: { Text("Continue") } } I don’t know how to apply Purchase.shared.purchase(package:) into SubscriptionStoreView.I know Su
This is P0 issue , My users have started to push me hard, and it's almost the weekend. in china guangdong
Hi everyone..I am successfully running React Naive on an İOS only React Native Expo project.Now payments are handled by Apple App Store.I want to port this Expo project to web but then how will I handle payments for Non-Apple users?Do I need to open a stripe account and handle payments that way?If I do that, will the subscription and purchases be recognized by Revenue Cat once the client gets an iOS device?Thanks..
I received this email from Google Play titled Introducing a new way to re-engage your users [Opt-out link below] ..Do we know how this affects purchases via revenue cat?
Hello allI've just got a message from a user saying that the price of their weekly subscription was $60. I thought it was a mistake on my end, but it turns out that in some countries like Taiwan and Mexico, Apple doesn't show a specific currency symbol, but uses the generic $. In that user case, it should be NT$60 = $1.85 (USD).I already submitted a ticket to Apple, but I don't have high expectations that they'll do anything. I'm wondering if RevenueCat could add a new variable to the paywall, like {currency_code}, to make it clear that the price is in the local currency. Does anyone have any other ideas on how to work around this problem?
I have a question regarding Testflight and beta testing. Previously, before submitting it to Testflight I could successfully subscribe and cancel subscriptions with the sandbox account that I created on App Store Connect. However now when I am testing with a real Apple account I manage to subscribe to a subscription, but I cannot cancel that subscription in the App Store settings by using the managementURL from RevenueCat. On the “Confirm Cancellation” screen when pressing confirm I get the following message: “Your request is temporarily unable to be processed, please try again later”. Have some of you experienced the same thing with beta testing on Testflight?
Hi, I have a very similar issue to However, my issue is with Stripe, not Apple, so I created a new post. This user https://app.revenuecat.com/activity/4f1862c1/event/3f78f0bd-5bed-4de8-8772-8e4be182707d had a billing issue and cancellation on 2/1. While on Stripe, they had several more events and no cancellation event.payment failed on 2/1. This matches with revcat payment failed again on 2/8. Not found in revcat payment succeeded on 2/12. Not found in revcatNo cancellation event is found in Stripe. Can you clarify if there was an error on Revcat’s side, or if this is intended behavior? If it’s intended, what’s the recommended way to handle this scenario?
Hello together,What would be your recommendation on managing the following product setup: Many non-consumable products (e.g. books) of thee price classes: low, medium, high?1) Enter each book with price in Google/ Apple and create package in RC from each of the entries?2) Enter each price class in Google / Apple and linkt that to a book specific package in RC?3) Enter each price class in Google / Apple and link that to a book specific offering in RC?4) Other?Is RC actually fit for this purpose? Alternatives?Kind regardsBP
Hi, I’m implementing one-time purchases using RevenueCat.I’ve set up a webhook to receive data when a user successfully completes a purchase. However, for security reasons, I don’t fully trust the data received via the webhook and want to verify the purchase using RevenueCat's REST API (v2).I’ve gone through the documentation but couldn’t find a clear endpoint to validate one-time purchases. Could you help me with the following questions?Which endpoint should I use to validate a one-time purchase? What parameters should I include in the request? For example, should I use id, transaction_id, or app_user_id from the webhook data? Can the /v2/projects/{project_id}/purchases/{purchase_id} endpoint be used for this purpose? If so, what value should be passed as {purchase_id}?
Dear community, I'm currently trying to get my app in the app store, but it has been rejected twice for the following reason: We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, When attempting to purchaise the subscription, the app loaded indefinitly. Please review the details and resources below and complete the next steps. Review device details: - Device type: iPad Air (5th generation)- OS version: iOS 18.1 Next Steps When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead. I really don't understand what the issue is, everything works fine in testflight modes fo
I am trying show paywall screen in kotlin, and when ı open the fragment paywall shown with gray status bar. How can ı switch full screen (transpaant statusbar or without statusbar like revenuecat paywall preview)
Is it normal that purchases made in TestFlight don't show up in RevenueCat's chart? Are there any other ways to simulate/test real purchases? I want to experience it as if it were a real purchase. IOSThank you!
The documentation suggests Purchases.configure() is async because of the await in the Configuration docs. However, the React Native TypeScript definition says (args: PurchasesConfiguration) => void, so no promise. Which is it?I am using "react-native-purchases": "^7.1.0".
Our app has multiple types of events (trial, trial converted, trial cancelled, yearly subscription...)We added adjust integration and all the data being sent to adjust are matching all events except one: the trial converted one.we see almost double the numbers on adjust.how can we investigate this?
Our service is an iOS app using RevenueCatSDK. And the iOS app uses our WebApi backend with RevenueCatAPI.The service user can have multiple service Accounts, multiple AppleIDs and multiple Apple Devices. The service want to have following behavior:User has multiple service Accounts, AppleIDs and Apple Devices. service Accounts: (e.g. Account_A, Account_B) AppleIDs: (e.g. AppleID_A, AppleID_B) Apple Devices: (e.g. iPhone_A, iPhone_B) User can change combination of Account, AppleID and iPhone. Account has unique UserID and sets the UserID to AppUserID(RevenueCat). We don't use anonymous AppUserID. Role is managed by our WebApi If a user makes a subscription with the combination (iPhone_A, AppleID_A, Account_A), the user Role is changed and the Role is managed by the our WebApi. Whether the combination is (iPhone_A, AppleID_B, Account_A) or (iPhone_B, AppleID_A, Account_A), Account_A can use our service in a Role managed by our WebApi. Until subscription expiration, AppleID_A can re
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.