Get help with anything related to RevenueCat.
Recently active
Hi RC community,my graphql server is not compatible with webhooks, so I need to handle renewals directly inside my app.Specifically, i need to make an action at the beginning of each subscribed month.Any idea of how I could achieve that?Thanks!
Hello, We developed a Web product and considering RevenueCat for charging a monthly subscription. Can we use RC Paywall for Web-based products? One more thing, what legal information I need to provide as a developer and product owner to use RC products? Thank you.
I have a question.I am considering introducing revenuecat to my in-house app.The existing specifications for my in-house app allow one user to have multiple accounts, but in that case, would it be best to use revenuecat's real-time API to prevent duplicate purchases of the same plan?Also, based on the above assumptions, I am considering multi-platform support for iOS, Android, and Web.When the same user with my in-house app account who has purchased a plan on an iOS device logs in on an Android device, I would like to treat them as a user who has purchased a plan and provide them with paid features. To achieve this, would I need to create a system that allows my in-house app API to make this determination using data based on Webhooks?
Calling /api/v1/subscriber/XXX for users who have had billing issues (for whom we receive the webhook just fine) always seems to show the “billing_issues_detected_at” attribute of the subscription as null. Is this a known issue or is there another call we should use to find out if their cancellation was for billing reasons?For example: below is a response for a call to one of our users who had a billing issue last year (2023). When I look this user up on the Customers section of the RevenueCat console, it shows that they had a billing issue last year. { "request_date" : "2024-07-06T22:12:15Z", "request_date_ms" : 1720303935745, "subscriber" : { "entitlements" : { "Subscription" : { "expires_date" : "2023-02-11T14:14:20Z", "grace_period_expires_date" : null, "product_identifier" : "SevenMonthly", "purchase_date" : "2023-01-11T14:14:20Z" } }, "first_seen" : "2023-01-04T14:13:33Z", "last_seen" : "2023
Hi there,I have setup a subscription in the App Store, with a free 7 day trial and also an initial active promo discount.I have been testing my paywall, and the promo discount never shows up on the paywall, just the original pricing. I’m not sure if that’s expected? I was wanting to see something like ‘15.99 for the first 3 months’ or words to that effect.Thanks!
Hi There, How do we create a full screen paywall that cannot be swiped down? I know we can hide the X button, but that does not make it a “hard paywall”. I need it so it cannot be swiped down/dismissed. I’m using react native. Thank you
Can RevenueCat currently handle CONSUMPTION_REQUEST on behalf of the developer to help reduce refund rates? Thank you. https://developer.apple.com/documentation/appstoreserverapi/consumptionrequest
Hello, I have a problem to implement one idea on my project. Brainstorm Please!I’ve added stripe products(wordpress memebership) to RevenueCat and added webhook that notifies to revenueCat for each payments, everything works fine.For now, I provided 100% discount coupon to customers and I don’t want to collect any information from them including bank info or credit info.So I just want to trigger subscription/one-time payment and notify to revenueCat. It says, stripe doesn’t provide any interface or API methods to simulate fake transaction.To simulate notification to revenueCat, I can’t get “fetch_token”. Best regards,Robert L
I can buy consumable products over and over again on iOS, but I can only buy them once on Android. Paywall is displayed, I select the product, but when I press the button, nothing works.I tried everything but it doesn't work,what can I do?
Hello,We are encountering an issue when attempting to grant an entitlement to users. The entitlement works as expected the first time, but when we revoke it and grant it again (as part of our test suite), the entitlement does not update correctly. Specifically, the old entitlement is still showing, and the expiry dates are incorrect. Could you please provide some guidance on this issue? As you can see below, the start and end dates do not match as expected. https://api.revenuecat.com/v1/subscribers/2SANDBOX768/entitlements/Referrals/promotional{ "start_time_ms":1731403098690, "end_time_ms":1731403598690}{ "request_date": "2024-11-12T09:11:30Z", "request_date_ms": 1731402690493, "subscriber": { "entitlements": { "Referrals": { "expires_date": "2024-11-12T08:56:32Z", "grace_period_expires_date": null, "product_identifier": "rc_promo_Referrals_custom", "purchase_date": "2024-11-12T08:48:35Z"
Hello there,Consider this very simple scenario, User Installs the app → Anonymous ID is generated by RevenueCat (this ID is searchable in the RevenueCat’s Dashboard) → User perform a sign in and newAppUserID is provided by us. Now, the newly provided app ID is an alias and the anonymous ID is the Original App User ID. Everything is good!Now → User reinstalls the app, a new Anonymous ID is generated by RevenueCat (this ID is also searchable in the RevenueCat’s Dashboard), User perform a log in → RevenueCat detects that one of the customer already has this alias (Our own App User ID) and merges. Now what about the customer that was created during the re-install of the app?
Hi, in appstore my subscription is valid until 11th of August, after which i have a trial period that will last until 11th of September. However, in the app I just see end date as 11th of August, and examining active entitlements and purchases logs, calling sync and restore doesnt change the end date and sync the purchase properly. Any help is welcome, thank you!On restore purchase I tried with both appstore restore function and revenue cats restore and sync, but no luck so far. func restorePurchases() { Task { do { try? await AppStore.sync() var customerInfo = try await PurchaseManager.restorePurchases() self.onAppear() AlertService.showSuccessAlert(message: "Purchases Restored") } catch { print("Error restoring purchases: \(error.localizedDescription)") AlertService.showGenericAlert() } } }I am initializing revenue cat in main like this and
We have 2 plans: Plan A at $5/month or $100/year, and Plan B at $10/month or $200/year.In Google Console, I set up 2 subscriptions for Plan A and Plan B. Each subscription has 2 base plans, one for the monthly duration and one for the yearly duration. Is this correct?Can we set up 2 replacement modes where upgrading from Plan A to Plan B applies the CHARGE_PRORATED_PRICE mode, and downgrading from Plan B to Plan A applies the DEFERRED mode? This rule is used by default when I set up in the Apple Store. Is it possible to have different replacement modes, or can we only apply one replacement mode?
I want to create Offerings that include discounted prices for specific Products. For example, let's say I added a promotion option within a Product in the Store Console to offer customers a discount on an existing subscription product. Then, I want to create Offerings in RevenueCat that include the discounted price rather than the base price, and link it to the Paywall. However, it currently appears that when creating an Offering, I can only set the Product itself and cannot choose which promotion within the Product to use. If there's a way to make this possible, please let me know.FYI: we use own paywalls.
I have a react-native app that uses "react-native-purchases": "^8.2.3". I have followed the steps in the docs but I still can’t get it to work.iOS and Google works fine. This is how I initialize IAP:Purchases.configure({ apiKey: <key>, useAmazon: true})when I callconst products = await Purchases.getProducts([Subscriptions.MONTHLY, Subscriptions.ANNUALY], PRODUCT_CATEGORY.SUBSCRIPTION)I always get `Timeout error trying to get Amazon user data`
I have three monthly subscription plans: Silver Trainer, Gold Trainer, and Diamond Trainer, all grouped under a single entitlement named ‘trainer.’ However, users can currently subscribe to more than one plan at the same time. I want to restrict each user to only one active subscription among these three. How can I enforce this restriction?
Hello, im using the “Transfer to new app user id” method. I don't want to use a auth system in my app. Im using the Webhook to grant users 10 free credits on INITIAL_PURCHASE and tracking the original_app_user_id and aliases in my backend. There is a problem though, when I reinstall the app on Android, the original_app_user_id changes and the old one is not included in the aliases array. So basically I use the same google account on my device but revenuecat references a different user after reinstall of my app and after cancellation of the subscription. My expected behavior is that the userid is bound to one google account and I don’t want that entitlements get transferred if user logs in with another google account. The user should be able to restore purchase if logged in with the same google account the purchase was made on and it should not be bound to the device.how to handle this without creating a auth system in my app?thanks in advance
Hi,Is there a way to edit the style of a Paywall beside the web editor? On an iPhone 7 we get a big blank space on the top of the screen and the feature section is really small. You can see a video of what it looks like in the attached file.
HelloLately, every 10 out of 10 new apps are being rejected with the reason: Guideline 2.1 - Performance - App Completeness. The reviewer does not see the submitted subscriptions in the first version of the app.After discussing with other teams, it turns out that this issue is not only affecting me but others as well, though it’s not widespread. The app settings are correct. We’ve built over 80+ apps, but this issue only started occurring a couple of months ago. Interestingly, if you resubmit the app around 10 times, it might eventually get approved, as somehow the reviewer begins to see the subscriptions.Recent observations suggest that the problem isn’t with RevenueCat or the programming language itself—other teams have faced the same issue. What are you doing about this? How are you solving it? It’s becoming impossible to work, as app reviews are taking 2-3 weeks to complete.From what we’ve noticed, this issue became particularly noticeable around 2-3 months ago.
Hi all,New to RC - in fact, new to front-end and app development altogether. I am developing an app using Expo and using RevenueCat for IAP and subscription which from I can see, works quite well.I see that there’s the meta data for each offering which I can configure and then download from the client side but I can’t see any examples on how I can impact RevenueCatUI.PaywallFooterContainerView / Paywall is rendered?Is it a supported feature or would I have to manually create a paywall component using the meta data? The documentation shows how to do this on Kotlin only https://www.revenuecat.com/docs/tools/offering-metadata/offering-metadata-examples Thanks in advance,Ray.
Hi everyone, when a user creates / restores a subscription in the application - how can I get his store account (mail)? or any other identifier associated with the store acount/subscrition id. which will be the same on another device. is it possible? I didn't find it in documentation/examples.
Hey there, good morning!I have this React Native app, and I have 2 separate environments for it: TEST and PROD. Naturally, both environments have separate DBs and users. My app is not live yet and I'll soon be integrating with RevenueCat, and I have a few questions on how do that, especially when I'm using the TEST env.Question 1Should I have separate RevenueCat projects for TEST and PROD? I believe it's best to try and avoid this, as it sounds it might get too confusing, handling multiple API keys, etc. This is an indie project, btw.Question 2Is it a good practice to upload TEST builds to the app store for testing? I'm assuming the best practice for sandbox testing is to always use PROD builds.Question 3Assuming I'll have a single RevCat PROD project and doing sandbox testing with PROD builds, that means that my TEST builds won't have any connection with RevCat/stores whatsoever. How to handle the RevCat-related code in my TEST env?I guess I'll need to check for the TEST env and bypas
Hi folks,I'm experiencing some issues with handling pending purchases in our app. Let me first outline the scenario:We have a consumable product that users can purchase repeatedly. Each time a user makes a purchase, we store tokens in Firestore collection associated with their Firebase Auth userId. We've also integrated RevenueCat with Firestore to log purchase events and we are using the same AppUserID in revenue cat as the Firebase Auth userId to keep data in sync.The issue arises when I test purchases using the “Slow test card (approved after a few minutes)” option. With this, the purchase initially goes into a "pending" state. I know that reopening the app later will register the purchase under the correct AppUserID in both the RevenueCat dashboard and our Firestore collection tracking RevenueCat events.I've read articles suggesting solutions, such as setting up a listener or periodically calling getCustomerInfo() to monitor for updates. The goal would be to automate this so that i
I am integrating RevenueCat into both my iOS and Android applications, and I've encountered an issue with how purchases are assigned to customer IDs across different logins: On iOS: When I log in with Account A, set the customer ID to A (with revenuecat’s login), and make a purchase (not subscription), the purchase is correctly associated with customer ID A in the RevenueCat dashboard. However, when I log out and log in with Account B (in my app), set the customer ID to B (with revenuecat’s login), and make another purchase, the new purchase still gets associated with customer ID A instead of B. On Android: After logging out of Account A and logging in with Account B, the new purchase correctly associates with customer ID B as expected. I've already set the “Restore Purchases Behavior” in RevenueCat to “Leave purchases on the original App User ID”.Expected Behavior: My expectation is that purchases made by customer A should only be associated with customer ID A, and purchases by cust
Hello, It’s unclear from your documentation what the recommended approach is when a company has two subscription levels (e.g. Basic and Pro). The Entitlements documentation clearly shows two separate subscription levels of “gold” and “platinum” in the images (below), but then the Offerings documentation only really explains what to do if you have a single subscription level (and then you choose the Monthly, Annual, etc identifiers). The recommendations on the forums seems to go from “use separate offerings” to “use a custom identifier”. Based on the example image you have on the entitlements documentation below, I’m assuming you’d recommend keeping both tiers in a single offering, but using customer identifiers instead of the default ones (e.g. gold_monthly, gold_annual, platinum_life, etc).I’d strongly encourage you to add this 2-tier setup to your Offerings documentation, since it’s a very common scenario, and it was really unclear to me what the best approach was. 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.