Discussion and help from anything related to RevenueCat.
Recently active
Info: Whole Backend = Firebase.That includes, Auth system, DB, Functions, Extensions etc.In the app, I have let's say an account with User 'X' with userId 'xid'. X makes a purchase through the RevenueCat SDK and it sends out webhooks that writes database entries in Firebase with the necessary User details, purchases and entitlements.I read these entitlements entries in the DB and unlock features within the App. Here in lies the dilemma.Let's say User 'X' has purchased a monthly subscription. Webhooks and Firebase Integration will give me the DB entries I need to do my unlocking features.All good so far. Now user 'X' has decided to delete their account having the userId 'xid' from the App. All good so far. Bear in mind that subscription is still active in Playstore/Appstore.Now user 'X' decides to create a new account again in the App. User 'X' now ends up with a new UserId of 'yid'. User 'X' now presses the 'Restore Purchases' button which calls "Purchases.restorePurchases()" function
At the request of the user, we have refunded his payment through the payment system “Stripe”: As a result, when we try to find this user in revenuecat - there is no such user: If we try to go by direct URL to his account - an error is also displayed: What are we doing wrong? Why was the account deleted?
Hello everyone, First of all thanks for a very well thought out product, entitlement, offering setup.It is indeed well thought. I have an educational app. The app has react-native expo as front-end and Python FastAPI as backend.My app has a monthly and yearly subscription options. I am pretty sure that it will stay that way. Meaning… It is very unlikely for me to add consumable goods, one-shot purchases, extra packages etc..I am able to get subscriptions working for anonymous users. However, it is suggested that I use Purchases.login for more defined customer tracking. Fine :) I tried it but I was not really successful.Or, … it is successful but I did not get it. I have my own authentication and backend for my app.So, I wanted to base subscriptions on user login info which is email as username and a password.Once the user logs in, I would save the user email and also do Purchases.login() with email.Once I get the subscription info after Purchases.login() I would check for activeSubscri
I call Purchases. Restoring Purchases takes about 7-10 seconds on both Android and iOS. I call it on the Splash screen, but it dramatically annoys the user. Can you give me an idea of how to get rid of it?
Let’s say customers can pay for our product via the following methods:D2C Mobile apps - customer pays via Apple/Google, RC entitlement Web app - customer pays via Stripe, RC entitlement External Ecom Upsell Customer adds our product as an upsell on a different platform — customer pays via other platform, RC entitlement For the External Econ Upsell group, we would be able to see the grant of entitlement, cool, but is there a way to assign a dollar value to those customers so they can be seen in the charts?
I have an urgent production issues, where all users have access to PRO features since migrated to RevenueCat due to the following,I have an issue where customerInfo.entitlements.active.isEmpty is always returns a value when user is not subscribed. The customerInfo.activeSubscriptions always returns the product identifier for users who have subscribed but cancelled their subscription.I have added print("ENTITLEMENTS \(customerInfo.entitlements)") print("ACTIVE SUBS \(customerInfo.activeSubscriptions)")This returns ENTITLEMENTS <RCEntitlementInfos: self.all=[pro:],self.active=[:],self.verification=VerificationResult.notRequested>ACTIVE SUBS [“com.appname.com.promonthly", “com.appname.com.proyearly”]I have also tried removing cached info with Purchases.shared.invalidateCustomerInfoCache() Also when opening Debug > StoreKit, not transactions are show. func verifyIAPReceipt() { Purchases.shared.invalida
The doc says:To address this with RevenueCat Paywalls, consider using sub_offer_price and sub_offer_duration in either your package details or your CTA to ensure that the introductory offer is clearly disclosed. In the paywall editor:Variable "sub_offer_duration" is not allowed in this field.This seems an odd and unecessary restriction.So I’m not sure where to put this information. The “Call to action for an introductory offer” does not display in the preview so how are you supposed to do this generically? Where do you put the cancel anytime? Where do you inform people of the free trial?
Hey,On the RC dashboard, there is a card labeled 'New Customers' and it has a figure in it, this figure changes from day to day but I would like to see how this number changes over time on a chart. I cannot see anywhere in the charts section that will show me this?Cheers,Will
Can we set the test-subscription life cycle anywhere?Can we set it up so monthly subscription expires in a day and yearly expires in 3 days or free introductory offer lasts longer?
We are doing subscriptions by account in our Flutter app.When I log out and reconfigure from customer ID 1 to ID 2, the customer info of 1 will no longer have the purchase, and 2 gets it even though it didn't make the purchase. How can I make the purchase "stick" to ID 1? Is this possible to do without the webhook or is it needed?
Localisation is only changing the price not the text. I have configured multiple languages in the RevenueCat paywall option. I am using flutter for app development.I’m testing with simulator using storekit in Xcode.These are the localization setting I have made in Xcode.
Hi,Are we able to see when a new user is making a first purchase and their transaction gets declined due to payment issues?I am able to see the transaction id on Google Console under Order Management with a Payment declined status. But I am not sure how to trace this to a specific app_user_id (I set this on every purchase attempt). This transaction also does not come through via the webhook.Thanks
I have a discrepancy between AppsFlyer and Revenucat, and the S2S event seems to have sent correctly. On RC, a particular conversion is listed as ASA sourced, but on Appsflyer it is not.On AppsFlyer, the default look back window for attributing from ASA is 7 days - so I’m wondering if this is the cause of the discrepancy. If RC’s look back window is longer than this, that could be why.Please could you provide info on the ASA look back window?
The Firebase iOS documentation shows the following: If you're using StoreKit 2, use the following code to log IAP events.func purchaseSomeProduct(_ product: Product) { // Purchase a Product. This is mostly standard boilerplate StoreKit 2 // code, except for the Analytics.logTransaction() call. let result = try await product.purchase() switch result { case .success(let verification): let transaction = try checkVerified(verification) // Call this Firebase API to log the in-app purchase event. Analytics.logTransaction(transaction) await transaction.finish() ...}Given that RevenueCat does a fantastic job of abstracting away the complexity of StoreKit, is it still possible to call `Analytics.logTransaction(...)` after a purchase but before `transaction.finish()`?
Testing in SandboxMy config seems to be correct,I can buy the in app purchase and it goes through to revenue catThe issue is when I call const handlePurchase = async (pack) => {try {console.log("Initiating purchase for package: " + pack.product.identifier);const {customerInfo} = await Purchases.purchasePackage(pack);console.log("Purchase completed successfully");} catch (error) {if (error && error.userCancelled) {console.log("Purchase cancelled by user");} else {console.error("Error during purchase:", error.message);}}};Nothing executes after customerInfo, not even the log statement. it just hangs indefinetlyplease help as this is the blocker to my app going live. Thank you.
Hello, I've tried to transfer a subscription made through the Google Play Store, but after a few hours, the sub (for the second account) wasn't active, and the first one was still "keeping" the sub in our system, even though it was transferred on RevenueCat. What could've gone wrong? On the same (or not) subject, I was wondering if there's a way of granting subscriptions through RC if the user ID isn't displayed (it's "anonymous").
Hi I would like to have 3 different monthly package, early bird at $49, $99 and $149 how can I do that ?
If a deleted customer's subscription in RevenueCat is actually active, and the renewal occurs on the subscription renewal date, can RevenueCat detect the subscription in store?
Hello, I use revenue cat paywall package in my iOS app. Apple rejected my build with “- Your auto-renewable subscription promotes the free trial or introductory period for your subscription more clearly and conspicuously than the billed amount.”My Package details for an introductory offer:“{{ sub_offer_duration }} free trial, then **{{ price_per_period }}**”My Call to action:“Continue with free trial 🔓”My previous app got approved with texts for package details for an introductory offer and call to action. I have made my price_per_period bold to make it more clear. How should I modify my paywall content in order to get approved?Whole rejection text:Guideline 3.1.2 - Business - Payments - SubscriptionsWe noticed that one or more of your auto-renewable subscriptions is marketed in the purchase flow in a manner that may mislead or confuse users about the subscription terms or pricing. Specifically:- Your auto-renewable subscription promotes the free trial or introductory period for you
Even though my app went live today (7-8 hours ago), my products are still under review. This is likely the reason why I am unable to fetch the products on my app at the production level, and why users are unable to see the products in the live environment (it works on TestFlight). I am getting the error : There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect Could this be the reason I am getting this error?
Is there any Roku developer? Has anybody integrated with Roku pay?I’d like to hear from your experience
Based on the TRANSFER flow here, we know that a TRANSFER event is triggered when user1 signs in, makes a purchase, signs out, then user2 signs in and restores purchases. Will EXPIRATION and RENEWAL events also be triggered for the respective users to indicate that user1 no longer has entitlements and user2 has entitlements?We have been relying on the INITIAL_PURCHASE and RENEWAL events to determine when a user has started or is continuing a subscription. Likewise, we use the EXPIRATION and SUBSCRIPTION_PAUSED events to determine when a user has stopped a subscription.However, we’re not sure if there are additional events that are triggered after a TRANSFER.
I am currently using the premium-monthly subscription plan for my app. However, I want to switch to using a new subscription plan called new-premium-monthly through RevenueCat. I have two main concerns: 1. How will this change affect existing subscribers who are currently on the premium-monthly plan? Will they be automatically transferred to the new plan, or will they remain on the old one?2. Given that querySkuDetailsAsync() is deprecated in the Google Play Billing Library, how can I ensure that the transition to new-premium-monthly is seamless for both new and existing users? Any guidance on how to handle this transition smoothly would be greatly appreciated Let me translate it 이전 버전과 호환되는 기본 요금제는 Google Play 결제 라이브러리의 지원 중단된 메서드 querySkuDetailsAsync()에서 반환됩니다.English: “In the subscriptions section of the Google Play Console, the benefits that are compatible with previous versions are returned by the deprecated method querySkuDetailsAsync() of the Google Play Billing Library.”
Couldn’t see the dropdown of connected account even if i can see them connected.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.