Get help with anything related to RevenueCat.
Recently active
anyone has similar issues today? tested in both simulator and sandbox. I'm new to Revenucat. My question is: is this issue on my end or theirs? it seems paywall works fine for me yesterday,
Hi. I’m doing some development in the sandbox to add auto-renewing subscriptions to my app. I already have some consumable in-app purchases in production, and I have a webhook set up for “non-renewing purchase” to hear about those. I’ve noticed that when I use Xcode/StoreKit to test the purchase of my new auto-renewable subscription, the “non-renewing purchase” webhook is being called. Why is that?In Xcode StoreKit config I’ve checked that the subscription I’m purchasing in set up as an “auto-renewable subscription”. In RevenueCat the product is set up as a “subscription” (not a “not-renewing subscription”).Thanks
Why can't I use an offering on more than one paywall? What's the reason for this?
When I call Get List of Customers endpoint I get only 6 fields of information for every customer. The documentation shows that should be more fields.URL: https://api.revenuecat.com/v2/projects/proj_id/customersYour API v2 response (just for Item object):{ "experiment": null, "first_seen_at": 1744314095343, "id": "123456789", "last_seen_at": 1744314095367, "object": "customer", "project_id": "proj_id"}The documentation show that i should get this:{ "object": "list", "items": [ { "object": "customer", "id": "19b8de26-77c1-49f1-aa18-019a391603e2", "project_id": "proj1ab2c3d4", "first_seen_at": 1658399423658, "last_seen_at": 1658399423658, "active_entitlements": { "object": "list", "items": [ { "object": "customer.active_entitlement", "entitlement_id": "entla1b2c3d4e5", "expires_at": 1658399423658 } ], "next_page": "/v2/projects/proj1ab2c3d4/customers/19b8de26-77c1-49f1-a
If an expired iOS customer redeems a custom offer code (e.g. one month free), would the RevenueCat webhook send an event? If so, which event should we listen to (e.g. Renewal?) We have a backend that listens to the RevenueCat webhook to track some customer data, and are thinking of implementing offer codes (so we’d also want to listen for that)
Hi there,We have been using RevenueCat for our subscriptions since November last year, and have several internal users on lifetime memberships.Just this morning, several of our lifetime users (but not all) have been having issues. Their active entitlements are returning as existing, which is correct, but for some reason it is returning some as a trial period type (I think) because in the app it is detecting their trial as being expired, which is only does if the entitlement is period type trial and the expiry date is passed. This only happened since this morning, and it only happens for some users. Is there perhaps an issue going on with such entitlements? As soon as I revoke and re-add the lifetime membership for these users it works for them as expected.Thanks in advance for any help!
I’m trying to test my app before sending it out for beta in TestFlight. I need to make sure the paywall works properly, but there seems to be an issue.I built my app in Flutterflow. The way I have things set up:A user can add one project and do whatever they want with that project If they try to add more than one project (numProjects !=0), I trigger the Revenuecat “Paywall” action, providing the entitlement ID I then have forking logic that checks if the user has that entitlement If the user has the entitlement, they should be able to move forward and add a project without interruption If the user doesn’t have the entitlement, they should see the paywall component I builtBut I’m testing in my local environment (on my iPhone via XCode) with a Sandbox user, and the paywall component displays every single time, even though I can see in Revenuecat that this user has the entitlement. The first time I went through the flow, I was able to make the purchase with the Sandbox user, and I see the
Apple has appealed, but for the moment out-of-app purchases seem to be allowed in the US. From the updated App Store terms:3.1.3 Other Purchase Methods: The following apps may use purchase methods other than in-app purchase. Apps in this section cannot, within the app, encourage users to use a purchasing method other than in-app purchase, except for apps on the United States storefront … Fantastic news, at least on the surface. I’m holding off until we see how using external payments affect search placement. My app is new and I need user numbers more than $$, so I’m going to stick with App Store payments for the moment.WDYT? Are you considering switching your iOS app over to web payments? Let us know how it goes!And if the RevCat team has any guidance here, I’d love to see another blog post like this one about the earlier ruling. (Thanks!)
Hi, is there a way to not show text depending on if introductory offer is selected?In my purchase button when introductory offer is selected I’m showing a stack of two text elements, and when no introductory offer is selected I want to show only one text element.Currently I can only set the second text element to be empty with font size of 1, but it still occupies space, and the ‘continue’ element is not centered. When I set the font size to 0, it takes even more space. introductory offerno introductory offer (in prod, continue is not centered)purchase buttonbottom text element
Hi!We see that on iOS 18.4 was increased error rate. This problem is on StoreKit 2 and StoreKit 1.Description of the error on iOS 18.4 is “The operation couldn’t be completed. (StoreKit.InvalidRequestError error 1.)” I found this error in new API: https://developer.apple.com/documentation/storekit/invalidrequesterrorDo you have the same problem? How you handle it or maybe you added any fix?Thank you!
I'm building a Flutter mobile app that uses RevenueCat with anonymous user IDs — there is no authentication or login system.On first app launch, I store the user's anonymous appUserID securely. If the user makes a purchase, I save their credit balance and subscription status in Firebase, keyed by this RevenueCat ID. I also call setAttributes to store this ID (e.g. firebase_user_id) as a RevenueCat customer attribute.Now, my question is:If the user uninstalls the app or switches to a new device (but uses the same Apple ID or Google Play account), and then taps restorePurchases() (which creates a new anonymous App User ID), will the customer attributes from the original App User ID be automatically synced and transferred to the new user?I would like to rely on that attribute (e.g. firebase_user_id) to reconnect the user with their Firebase data — without requiring login or using a custom App User ID.Alternatively:Is there any way to access the original App User ID (i.e. the ID that Reven
Hi,when I look at the charts I have a “Proceeds” and “Transactions” row for every product. If I divide proceeds by transactions I get a per-unit proceeds value of 11 up to almost 17 USD. (for an in-app purchase for 22 USD) Why is that? Should that not be consistent?Of course there can be some currency variations but they can’t be so big that 14.28 € (proceeds from Apple for a purchase of 19.99 € in Germany / small business) is 11.50 USD, which would amount to more than 4 € difference.I checked very thoroughly and could not find any proceeds number per unit that would come close to the 14,28 € from Apple. I assume the numbers I get from the charts are correct and they seem to match what we get from Apple & Google, I just need to understand why this seems to vary so much every day. Thanks!
Hello, this is a follow up on a problem we have on iPhone 7 that is still unresolved: It’s been over 4 months that the issue has been escalated to the engineering team and the issue still persists. Can-we have a status update?
When I tried to set the Google Developer Notifications Topic ID, I noticed that the project shown in the selector below was incorrect.I suspect this happened because I accidentally uploaded the wrong Service Account Credentials JSON.As a result, the project path displayed in the dropdown menu is clearly different from the GCP project I intended to use.I have already re-downloaded the correct Credentials JSON and uploaded it to RevenueCat,but the Google Developer Notification Topic below still shows the wrong project path.How can I resolve this? (The new JSON uploaded and approved) The path projects/devsparkslab3... is pointing to the previously uploaded incorrect Credentials JSON, not the expected one.
Hello,We’re looking at the behavior of RevenueCat when using promo-code in the device store (Google Play, Apple Store) and would like the community to confirm or correct these statements:When a promo-code is entered in the device store, our app isn’t active and thus can’t look in our code for the App User Id. RevenueCat save some attribute (IP Address? MAC Address?) from the transaction to recognize the user. If only one existing App User Id has this attribute, it link the promo-code to this id. If several existing App User Id have this attribute, it link the promo-code to the latest active id. If no App User Id has this attribute, RevenueCat create a new App User Id with the promo-code If the promo-code has been assigned to App User Id X but the user log in with App User Id Y, they’ll not get paid access and will see the paywall. In this case, the user can click on Restore purchase in the paywall to get access without login with App User Id X. This however will take 1-2 minutes before
when i want to save my offerings, nothing is happening.if i save android product to offer, it’s okay.but when i wanna try with apple product, nothing happening.this console logs shown when i press save6sense JS Hit MAX_ITERATIONS in getNameOfClosestParentindex-BldvizOr.js:436 6sense JS Form Element: <fieldset aria-hidden="true" class="MuiOutlinedInput-notchedOutline css-1gocwb">…</fieldset> cannot have a name determined from parents, skippingindex-BldvizOr.js:436 6sense JS Hit MAX_ITERATIONS in getNameOfClosestParentindex-BldvizOr.js:436 6sense JS Form Element: <button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary MuiButton-disableElevation MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary MuiButton-disableElevation css-12rgzh1" tabindex="0" type="button">…</button>flex cannot h
Hello everyone,I hope you're all doing well. I'm currently working on a Flutter application that integrates Firebase for authentication and utilizes Riverpod and GoRouter for state management and navigation. While I've successfully implemented RevenueCat in previous projects, I'm encountering challenges with this particular setup.Current Setup: Flutter Firebase Authentication Riverpod GoRouter RevenueCat with Firebase integration Issues Faced: Paywall v2 Not Detected: In my previous applications, Paywall v1 functioned without issues. However, after transitioning to Paywall v2, the paywall isn't being detected or displayed as expected. I've reviewed the documentation but haven't found a solution. User Management and Exception Handling: I'm uncertain about the best practices for managing users and handling exceptions post-purchase. Specifically, I'm looking for guidance on: Ensuring that once a user completes a purchase, their entitlements are correctly recognized and mainta
I have a Standard and Premium plan. If a user is sub’d to the Standard plan, how can I show the Standard plan as active and current without the purchase button? I want the user to see all plans, including their current plan. I’m trying to avoid hard-coding a current plan screen in the app.
First time submitting an app to the app store.. so i got it rejected to due RevenueCat paywall not working properly only displaying a white loading screen. Ive tested it on testflight and i get the same results, a white loading screen.my question is, did i mess up on the code, or is a white loading screen normal till they approve my “subscription” products? ORIs the paywall suppose to load without products till they approve them? im only pushing it to IOS store for now, so i havnt tested anything on GOOGLE. Ive attached an image of what i see when i reach the “paywall”
Environment: iOS app using the latest RevenueCat SDK Subscriptions set up in a single Subscription Group in App Store Connect Monthly subscription (Level 2) and Annual subscription (Level 1) In Sandbox Steps to Reproduce: User purchases the Monthly subscription. Before the Monthly period expires, the user purchases the Annual subscription. RevenueCat webhooks are received in this order: PRODUCT_CHANGE RENEWAL CANCELLATION (with product_id corresponding to the Annual subscription) Observed Behavior: After upgrading, the CANCELLATION webhook references the Annual subscription, causing our backend logic to treat it as if the new subscription itself was canceled. When the Annual subscription naturally reaches its expiration date, it does not auto-renew, confirming that the annual plan’s renewal has indeed been disabled. Expected Behavior:CANCELLATION should reference the Monthly product (old plan). Annual subscription should continue auto-renewing at each billing
Followed the instructions on setting up for google play store, Created a closed release, with one active subscription, and added a testerIAM, service accounts, got all three validations(Note, when I tried to redo the steps with a different json, I couldn't get a single validation). But from Google Play Store “Test notification couldn't be sentMake sure that you've entered the topic name in the correct format, Google Cloud is set up correctly and that you have the required permissions”
I'm getting rejected from the App Store for my kids app that's using the latest revenue cat API version 5.21.2 due to the inclusion of the AppTrackingTransparency framework. my app 100% does not import this framework, the only place that does is the RevenueCat package. here is the comments from apple: - Your app implements the App Tracking Transparency framework, which is used when apps collect data about users and share it with third-parties for tracking purposes. Since Kids Category apps are not allowed to collect, transmit or share identifiable information with third-parties, you should not implement App Tracking Transparency in your app. Next Steps To resolve this issue, please remove this functionality or revise your app so that no personally identifiable information or device information is sent to third parties.
I'm using RevenueCat in a Flutter app to manage in-app subscriptions. On iOS, the subscription products load and display correctly when running in debug mode on a real device. However, when I upload the app to TestFlight, the products fail to load — I get an empty list or no products shown at all.
I want to show paywall conditionally based on some app logic, how to do it? Thanks.
I want to offer two options: lifetime and monthly. As far as I understand, the lifetime option has to be a non-consumable in-app purchase. Is it possible to enable introductory offers to this type of product? I would like to offer a free trial for both options. Or are there any other ways to offer a lifetime unlock with a free trial? Thank you
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.