Discussion and help from anything related to RevenueCat.
Recently active
I want to give a couple of people (testers) free access to the paid subscription features of my app. I see that I can do this with Promotionals, granting an entitlement to an existing customer. However, there are no non-customers listed in my app (which seems reasonable) so I’m supposing I have to get my testers to buy a one month subscription (for example), to get them into revenue cat, then grant them the promotional entitlement. Seems a bit backward but fine if that’s the best way to do it.
When I submit my iOS app for App Review, they are able to verify a purchase, but when they want to verify an expired purchase, it keeps failing with an error. In return they keep sending me a message about including the in-App Purchase API which I haven’t included in the version they are testing. I was thinking about adding it to a new version but I’m unsure about something. The user makes the initial purchase via RevenueCat and it’s successful. Later on the user wants to check on that purchase because either it’s expired or they want to cancel it, but using the code below, there is an error. Instead of showing an error, I present the in-App Purchase API(example below), and the user cancels/updates a purchase through there, will RevenueCat be notified via the Apple Server to Server notification settings I use the following to get an offering and present the system actionSheet:let productID = “...”Purchases.shared.getOfferings { [weak self](offerings, error) in if let error = error a
I have two subscriptions and two RevenueCat paywalls are attached for each subscription. Now i want to show the paywall for each product in my .sheet () modifier passing the entitlement and offerings in SwiftUI.can i do achieve through this.presentPaywallIfNeeded(requiredEntitlementIdentifier: "", offering: Offering(identifier: "", serverDescription: "", availablePackages: []))
Hello! While testing my RC integration in React Native, I noticed that my call to Purchases.getCustomerInfo is retrieving different data for customerInfo.entitlements.all for the same user across my iOS and Android emulators. I do know that Android has some emulator issues but the call isn’t failing or anything.Initially I thought maybe getCustomerInfo is specific to the platform it’s being called on, but I’m actually seeing the same Stripe entitlements in customerInfo?.entitlements?.all on both platforms. It’s really just on Android that I’m not seeing the iOS entitlements that I see on iOS. I confirmed that both responses have the same originalAppUserId. This is introducing issues in my backend because I’m setting subscriptions as inactive in my database if they’re not present when sending this entitlements response to my backend which I’m using as the source of truth. i.e., in this case, my Android response isn’t seeing the iOS entitlements so I’m setting them as inactive. But then
Hi team,I am a developer, and I use APIs to build the Lite connectors that transfer the data from the source to the data warehouse. Currently, we are unable to build a lite connector for a client of RevenueCat due to an incomplete list of endpoint use cases in the V2 version. Can you give an ETA on when you can finish the complete documentation update? When can you sunset the V1 version and its use cases?It will help us to plan our project.FIY: I am also interested in testing your beta releases. Please let me know if I can help you test your beta features.TIA!
Sorry for my english first.Hello,Im making an android/ios application.It has only consumable(Non-subscriptable) items like 100 gems, 500 gemsAnd i would record it on db, to check user’s in-game item purchasement.But, i cant find a way to validate revenuecat transcation_id in server-side.I’m now sending transaction_id after restore via REST API to my server.But If, the endpoint might be exposed, Hackers can send any id via API and server can’t validate it.Can i know the solution of it.
I have been able to identify previous paid users in the iOS version of my Capacitor App using AppTransaction.shared in a Capacitor plugin I wrote. It works well. I able to keep my previous paid users free and offer subscriptions to new users only.In Android, I understand one can query past purchases using BillingClient.queryPurchases()? Is it possible using the Revenucat Capacitor Purchase Plugin to access this value with Revenuecat? Currently I identify new users using Firebase Remote Config and “first_user” date, but this is not always accurate when a user updates their device or deletes the App.
Can we expect a release for the Unity SDK near the iOS/Android release, or will it come later?
I’m developing an app with a feature (that involves a request to the backend) that I would like to allow all new users 10 free uses of. After those 10 uses are used, the user would need to subscribe to a monthly subscription that confers unlimited usage. I’ve tried implementing this by keeping track of this on the backend based on the app user id, but it appears that while I can validate whether a given app user id has subscribed to a paid plan, there is no way to prevent the client from faking an app user id (i.e. by reinstalling the app or by directly talking to the backend API with randomly generated app user ids) to seem like a new user and replenishing their 10 uses. Is there a way to get a stable (anonymized?) app store ID that persists across re-installs?Another approach I’ve considered is making the 10 uses opt-in by requiring the user to start a free trial--but from my research it appears that on the App Store trials can only be time-limited? I’m not sure how I’d implement 10
Hello RevenueCat Community,I'm reaching out for assistance with an issue we're encountering in the integration of RevenueCat and Firebase within our Cordova app, which operates on both iOS and Android platforms.We have set up accounts on Firebase, Google Analytics, and RevenueCat. The integration process has been initiated in RevenueCat, and we have successfully installed the Firebase Cordova plugin as well as the RevenueCat Firebase extension. Despite this, we're facing a challenge: purchase events tracked by RevenueCat are not appearing in our Firebase analytics.Has anyone else encountered a similar issue? Any insights or guidance on how to ensure that these purchase events are properly communicated and logged in Firebase would be greatly appreciated. We are looking for any advice or best practices to troubleshoot this problem.Thank you in advance for your help!
Hello,We are currently utilizing RevenueCat for payment processing within our Flutter application, and overall, it has been operating smoothly. We've referred to the documentation available at https://www.revenuecat.com/docs/making-purchases for the implementation of the purchase process.However, we have encountered an issue where some iOS users, despite successfully purchasing a subscription, experience a discrepancy in the subscription status. Immediately after the purchase process, the isActive property in entitlements is returned as true, indicating that the billing process has been completed successfully. However, upon restarting the app, we are unable to retrieve the purchase status, and the Customer History only displays "First seen using the app" and "Last opened the app."We suspect that there may be a misalignment in the subscription status between the app's environment and RevenueCat, specifically for iOS users. This issue is occurring in the production environment, not the S
If you are receiving ProductNotAvailableForPurchaseError even after the subscriptions are active in Google Play and RevenueCat, try to create new subscriptions which are in format [subsription]:[base-plan], import these products to RevenueCat and update the product codes in your app.This solved my issue after migration to the new RevenueCat SDK.
Hello, I’m new to using RevenueCat. I’m trying to use Paywalls Footer. How to change the background color of the Footer? I mean the “white” color that displayed over the whole footer. I can’t find option for it!
Looking to integrate paywalls in React Native SDK: https://www.revenuecat.com/docs/paywalls#react-native-beta-installation Am I wrong or is the docs missing for react native displaying the paywall using the SDK?
I want to build a subscription management page in my flutter application, where users can see their current plan and can choose to upgrade or downgrade the subscription.What i do not understand is the following scenario:User with id x, logs into my app for this first time and purchases a subscription. On my backend server he will be marked with a subscription with the help of webhooks. Then he logs into another store account(google/apple) then the one used to make the purchase and he logs into the app with the same user x which currently has a sub on my server. He goes to the subscription management page and sees his current plan as active and wants to upgrade to a higher tier plan. From my understanding he will have no problem upgrading to a higher tier plan, but this will not be an upgrade it will be a purchase with the new account. So he will have a subscription active on the first store account for which he still pays and another active on the new store account for which he pays al
This is on iOS only. I had a version of my app that only had one-time purchases for the “pro” features access. I made some major updates and transitioned to subscriptions, but decided to honor any previous lifetime purchases in the new version, while no longer offering that particular product for future users. In RC I’m achieving this by using the same entitlement but my current offering no longer includes the old product.The problem is that occasionally I see a new transaction in RC dashboard where the customer info shows they made a previous purchase of the old pro product, followed by them making a purchase of the current product and an entry that says a new alias for them was created. My assumption is that the user is either re-installing or maybe using a new device? In my app, ideally I’d like to avoid this by checking if a user has the old product entitlement already, even if they’ve deleted and reinstalled or switched to a different device. I do have a “Restore” button on my pay
I'm new to RevenueCat. I've successfully integrated the SDK for our app's in-app subscription. We have added offers to the subscription, but in the subscription options, we are only seeing the base plan and not the offers. Can you please assist with this?
I am experiencing this error when I initialize products. in flutter using Revenuecat. i don’t know how to resolve it it. W/BillingClient( 4521): getBillingConfig() failed. Response code: 2E/[Purchases] - ERROR( 4521): 🤖‼️ Billing is unavailable. App is in foreground. Won't retry.E/[Purchases] - ERROR( 4521): 🤖‼️ Error getting billing config - DebugMessage: An internal error occurred.. ErrorCode: SERVICE_UNAVAILABLE.2E/[Purchases] - ERROR( 4521): 🤖‼️ PurchasesError(code=StoreProblemError, underlyingErrorMessage=Error getting billing config - DebugMessage: An internal error occurred.. ErrorCode: SERVICE_UNAVAILABLE., message='There was a problem with the store.')E/[Purchases] - ERROR( 4521): 😿‼️ Error fetching offerings - PurchasesError(code=ConfigurationError, underlyingErrorMessage=There are no products registered in the RevenueCat dashboard for your offerings. If you don't want to use the offerings system, you can safely ignore this message. To configure offerings and their pro
In my app I have a button for managing sunscription. When this button is clicked the management url is taken from the customer info object and if the user is on the same platform(ios or android) as the subscription, then the app store or google play is opened. If the user is on ios, and the subscription was purchased on android, then the google play subscriptions page is opened in vebview.The problem is when the user is on android and the subscription was made on ios, the vebiew that opens takes the user to an itunes page where it says download apple music. I have 2 questions:Is there a way for a user to manage his subscription that was purchased from an ios device, on an android device? (the management url does not work) If it is not possible what would be the best way to manage this scenario?
Hi there!Have somebody experienced this? Is there a way around it?What happens is: user is presented with a paywall (through an experiment) user go the iOS settings/subscriptions and then change their subscription, effectively choosing the cheapest option (since they can see all in app purchases there)Is this normal? Is there a way around it, to prevent the user from changing their originally presented offer through the A/B experiment?Thanks!
Thanks for developing and operating a great product. Syncing Subscription StatusWebhooks are commonly used to sync a customer's subscription status across multiple systems. Because different webhook events contain unique information, we recommend calling the GET /subscribers REST API endpoint after receiving any webhook. That way, the customer's information is always in the same format and is easily synced to your database. This approach is simpler than writing custom logic to handle each webhook event, and has the added benefit of making your system more robust and scalable. The webhook documentation recommends calling the REST API after receiving a webhook.The reason for this is to avoid having to create custom logic, etc. However, when we want to receive only the common fields of the webhook event and synchronize it with our own DB, we think that the REST API processing is unnecessary. This is because the json data received by the webhook is sufficient. Even if we only plan to use t
Thanks for operating the best product. It has really helped me a lot. Syncing Subscription StatusWebhooks are commonly used to sync a customer's subscription status across multiple systems. Because different webhook events contain unique information, we recommend calling the GET /subscribers REST API endpoint after receiving any webhook. That way, the customer's information is always in the same format and is easily synced to your database. This approach is simpler than writing custom logic to handle each webhook event, and has the added benefit of making your system more robust and scalable. It is recommended to call the REST API after receiving the webhook. If you follow the recommendation and refer to the latest REST API v2 documentation, the `GET/subscribers` entry is not present. The v1 documentation had a `GET/subscribers` entry. Does this mean that v2 cannot retrieve customer information based on user ID? If I want to get customer information based on user ID, do I have to use v
Hi everyone,I am integrating Paywall in an iOS app. Looking for suggestions/recommendations. My use case is that I want to show users of the app a paywall and then create and update related records in my backend database throughout the subscription lifecycle. I want to do this so that I can check subscription/consumption status from the database when API calls are made to the backend. Below are my questions: How do I create these records in my backend service? This (very detailed and awesome blog) https://www.revenuecat.com/blog/engineering/ios-in-app-subscription-tutorial-with-storekit-2-and-swift/ gives an example of making an API call to the backend on successful purchase. Is there a way to do something like this when using Paywall? I am thinking to create the first subscription record this way and then manage updates by exposing a webhook Are webhooks reliable and real-time? Is there any recommendation to use them (or not) as compared to forwarding apple’s server notifications from
My paywall has three options:1. Weekly subscription, auto renew2. Monthly subscription, auto renew3. 24 hour “battlepass” (pro features for only 24 hours), one time consumableIn Apple and Google I’ve modeled the battlepass as in app consumables because there is no way to create a 1 day non-renewing subscription (iirc Apple just didn’t provide that as an option).So, my question is, what is the cleanest way to implement this? Right now I’m planning on just having a second “battlepass” entitlement. Then, clientside, I check if the user has the entitlement, and, if so, how much time has elapsed since the purchase time.
Hello, I was wondering if RevenueCat has the Paywall feature’s React Native SDK? I couldn’t see it on the documentation.
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.