Discussion and help from anything related to RevenueCat.
Recently active
Hi,Please help us to solve a mystery.When we build our app and upload to testflight I can see that the app send request to sandbox.itunes.apple.com and it’s very slow. According to posts in forums and communities this is known issue that is not taking care of for years from Apple side.This request is taking a lot of time (I assume that this request source is from react-native-purchases library) and slows down our loading process of the app.Sometimes the requests are even timed out or I get message like:None of the products registered in the RevenueCat dashboard could be fetched from App Store Connectand the products are not loading I don’t see such requests from the production version that is downloaded from the app store.I do see requests to itunes.apple.com How can I make sure that this situation happens only on testlight. How can I build the app in a production mode to check this. I tried the ad hoc build and install .ipa on my device but same thing happened. Does anyone took a look
I added the OneSignal integration. All but one of the tags are coming through reliably. The ‘active_subscription’ tag (which for some reason was initially blank and I later filled in on the integration page with its default value of ‘active_subscription’) is present in some integration events, but not for others. I seem to get a `true` value for `TRIAL_STARTED` events, and a `false` value for `EXPIRATION` events. But nothing for example for `CANCELLATION`. Can someone clarify the intended behaviour here?
Hello, I’m going through the steps here: https://docs.revenuecat.com/docs/apple-app-store#ios-14-only-testing-on-the-simulatorAnd I’ve gone over it several times, and I think I’m doing everything right, but I keep getting [Purchases] - WARN: 🍎‼️ Invalid Product Identifiers - (I have the certificate in place. Double checked my identifiers are spelled right. And I get the products on the actual device, just haven’t gotten the StoreKit testing working on simulator.Thoughts?
We did RevenueCat Flutter SDK setup to start selling IAPs in our hybrid application, but we're having a lot of problems when testing the purchases in the iOS Simulators. We already read the discussions across this STORE_PROBLEM issue #1, #2, and many others, but we are trying to debug it deeper because we strongly believe that a misleading configuration exists, but we can't say if it's with RevenueCat Flutter's SDK or with Flutter itself. We found out that the error disappear when running the Flutter iOS app (ios/Runner.xcworkspace) directly through XCode, not through `flutter run ….` CLI. After the build is made through XCode, further builds made using `flutter run ...` work as expected. It seems that when trying to run using `flutter run` first, some files are not being copied or configuration is not being correctly made, which causes this `STORE_PROBLEM` error to happen. We couldn't find this difference between XCode and Flutter builds, but we're still investigating what can be pos
Hi there! I’m using an App Store sandbox user, auto-renewable subscriptions, and have enabled the “Interrupt Purchases for This Tester” option in App Store Connect.When forcing the interruption, the `purchasePackage:` method fails with the correct error description.I’ve set my delegate to call the method `didReceiveUpdatedPurchaserInfo:`. After the user agrees to the new terms, the App Store window closes and confirms the purchase but the delegate method `didReceiveUpdatedPurchaserInfo:` isn’t called. If I try to purchase the subscription again, I’m told I already own it.I would expect the `didReceiveUpdatedPurchaserInfo:`delegate method to be called in this case. I’ve set up Apple Server-to-Server Notifications via the link provided by RevenueCat with no luck. Anyone know what might be going on?
Apologies if this is a newbie question, but I’m struggling with implementing what I consider a rather simple auto-renewable subscription offering consisting of two packages on iOS with SwiftUI:Annual Individual Plan (family sharing disabled) Annual Family Plan (family sharing enabled)When I create the second package, RC refuses to create it, because the ‘Annual’ identifier is already taken.I solved it temporarily with a custom identifier (“Annual Family”), but RC does not automatically recognise the subscription length (annual) and throws WARN: ⚠️ Unknown subscription length for package:default, ignoring.Any advice on how to implement the above scenario (two annual packages) is much appreciated, thank you!
Hi all,EDIT - found this post very useful - it doesn’t entirely answer the question I have but certainly sheds a lot more light on it.Apologies for the second post in a short time. It’s on a related topic, but not identical.Can someone explain why the following is occurring please?RevenueCat initialised and anonymous App User ID is created We create our own App User ID and call the logIn() function, passing that ID in We make a purchase When our Webhook runs, we receive the new App User ID (created by us) in the app_user_id field, but we receive the old, anonymous App User Id (created by RC) in the original_app_user_id field.In theory this shouldn’t be a problem and we should be able to ignore the original_app_user_id field as irrelevant information, but we need to use Block Restores to ensure that purchases are assigned to one Apple ID and one only. We don’t want to move them between different Apple accounts.But when I read the docs, it says this: Block RestoresUse with caution Return
Hi there.I’ve read various similar threads and whilst they *almost* cover our situation, I can’t find a specific answer to the scenario we find ourselves in. Thanks in advance for any help anyone can offer and let me know if any clarification is needed on any points. Apologies for the length!!Our Setup:We have an app that will be used in schools where multiple devices may be used to sign in. Our app asks for account creation before it can be used. Once an account is created, the user can purchase a subscription to access content, either as part of that initial signup process, or by logging in at a later date and completing the process. We store no data to the device itself - all data is saved to our servers, so that a user can sign in on any device they have to hand once they have a subscription. A subscription buys you a login for a certain number of students and if the subscription expires, that login is revoked. We create our own unique ID during registration, that we pass to Revenu
Hi, which is the value to use in purchaserInfo!.entitlements[entilementName]! to get the number of renewals for the current subscription?purchaserInfo is from RevenueCat.Purchases.shared.getCustomerInfo { (purchaserInfo, error) inThank you.
Hey thanks for listening. I have been using Google play billing library since past 2 years and now switching to Revenue cat. I have few questions regarding migrating subscribers of my app. So there are two types of subscribers 1. monthly and 2. annual subscribers. I have saved their data in firebase realtime database and nowhere else.Your docs were really helpful in integrating the Purchase SDK of RevenueCat but what i am not able to understand is about migrating these active subscribers (around 20). Won’t the RevenueCat automatically be able to communicate with Google Play Servers and check if a user is premium user and active? If not and if i have to manually update the data (which is incomplete as i don’t know about the app_user_id) then what is the best possible way to handle this?
Hey all, I love the idea of RevenueCat being the single source of truth for payments, especially the subscription part.I am building an app that is cross platform(android, ios and web). I use Ionic capacitor, so the frontend is also fully cross platform. But I have quite a few different payment methods.I am adding both in app purchases and also stripe for web. But for web, I also support crypto(eth) payment. Now I know RevenueCat does not and most likely cannot support “all” payment methods. So I am not asking for Crypto payment method support, but it would be super nice if we could add a general customizable app in the project settings, where my backend can simply post new payment data created by some other 3rd party payment method(such as crypto) With this implemented, I can just check RevenueCat data to check if a user is subscribed to a specific plan, whereas now, I would have to check both RevenueCat and also check if a user is subscribed through Crypto, basically as soon as we ad
Hi!I have paywall in my app which provides different types of subscriptions. However there is an option for once time payment too.In AppStore I’ve configured this lifetime plan as non-consumable purchase and it works fine.In PlayMarket I’ve added the item to the “In-app products” section. “Allow users to purchase more than 1 of this product in a single transaction” option is OFF, tax is set as service. However on Android I get all my subscription-type offerings normally, but my “lifetime” offering returns as null.Of course both products, iOS identifier and Android identifier, are added to the dashboard and the proper “lifetime” offering item. What else I’m missing?Thank you in advance!
Why might I be seeing churn greater than 100% when I look at annual churn?
Hi!I’m integrating Adjust with Revenue cat. Could you please help to understand what event goes into the “Initial purchase event token” field? In my app, I have the following subscriptions and purchases:Trial → weekly subscription Monthly subscription without trial One-time purchaseAs far as I understand in my case the Monthly subscription should go to the “Initial purchase event token”. Is that right?
I’m trying to test the Amazon library, and get the following for Offerings back from RC…{“offerings”: {“all”:{}, “current”:null}}Notes:We only have one Offering Works on iOS and Play Using the correct new Amazon Public app-specific API key Checked “Use Amazon” in UnityAny insight into this issue?Thanks!
I’ve prepared my Amazon app to use RevenueCat for my app subscription and run into the following issue. (Details on the steps I’ve done are show below the description of the issue I am having) When trying to retrieve the offering in my app on an Kindle Fire Tablet, using Purchases.getSharedInstance().purchasePackage(SettingsSubscription.this,packageOffer1, new MakePurchaseListener() { @Override public void onCompleted(@NonNull Purchase purchase, @NonNull PurchaserInfo purchaserInfo) { } @Override public void onError(@NonNull PurchasesError error, boolean userCancelled) { // No purchase }});I receive the following error in the onError method.ERROR: Error fetching offerings - PurchasesError(code=PurchaseNotAllowedError, underlyingErrorMessage=Billing is not available in this device. DebugMessage: Billing service unavailable on device.. ErrorCode: BILLING_UNAVAILABLE., message='The device or user is not allo
Hi thereI can see charts for our Active Trials and would like to see a future projected revenue forecast based on when those trials are due to convert.Even better if it accounts for our trial conversion rate based on product, but no problem if I need to guesstimate that myself.How might I do this?Tobin
Is it possible to get the value of currency in initial_purchase web hook where period_type = TRIAL. Initial_purchase webhook return currency: null when trial is provided to the user. I need a currency value to create subscriptions in my system.
Flutter Channel stable, 2.10.4Dart SDK version: 2.16.2 (stable)purchases_flutter: ^3.10.0Serial request done: GET /subscribers/#######/offerings, 0 requests left in the queue[Purchases] - DEBUG: ℹ️ API request completed with status: GET /v1/subscribers/######/offerings 304
I just started trying out RevenueCat today and I want some clarification about not being able to use an SDK for the web, hence not able to get `getPurchaseInfo` of a user to check what subscription the user is on. What would be the best way to do this?I have a cross platform app built with capacitor for android, ios and also for web.I am working on adding app purchases and stripe for web.I realized that I cannot use the Ionic Capacitor sdk on the web. The error message says `cordova_not_available`, which makes sense. So would this “plan checking”, have to be done on my backend side, where my backend does an API request to RevenueCat backend and my backend sends this information to the web client? Then, why not do it this way on the mobile app?
We recently had a user who started their 14 day free trial on March 31.We got a webhook from revenueCat for this initial purchase with an expiration date of April 14 at 06:13GMT. We use this expiration date as the trial end date / next renewal date.The user’s customer profile lists that their trial converts on April 15th and we haven’t yet received another webhook for this user (which makes sense because it is not the 15th yet).Why is there a discrepency between the expiration date in the webhook and the trial conversion date?These types of errors end up with users who don’t have access to an app that they paid for and are very rightfully upset as a result.
We are testing the android side subscription and it is not working. We have managed to complete the iOS side configuration successfully, Subscribed from iOS and fetched from android as well. But,But, when we try to subscribe from android, subscription get's completed as well in the plays tore account. But It's going to the on error method of the revenuecat SDKs. And the error message prints below error2021-12-18 12:40:50.694 29887-30921/com.goviral.app D/[Purchases] - DEBUG: ℹ️ API request completed with status: POST /receipts 5032021-12-18 12:40:50.698 29887-30921/com.goviral.app E/[Purchases] - ERROR: 🤖‼️ There was a problem with the Play Store. Please guide us on why this is happening, Since playstore account is showing the subscription successfully. But revenue cat is not getting it and showing the above error and not reflecting in the users account.
Hi guys, I just added/configured RevenueCat in one of my apps and when I try to test in the simulator with the StoreKit Configuration File I’m getting some weird errors… Basically I was able to purchase the auto renewable subscription I’ve set up but now each time when I start the app, the SDK sends a request to the /v1/subscribers/{UUID} and when it tries to decode the response it throws an error with No value associated with key CodingKeys(stringValue: \"attributesErrorResponse\", intValue: nil) (\"attributesErrorResponse\"), converted to attributes_error_response. As far as I can tell from the debug console messages everything else seems to be fine, no errors happening… I’m using the latest version, 4.2.1 via SPM.Any ideas what I’m missing?Thank you!-------Later Edit. This is weird, but was caused by a misconfigured bundle id. My debug builds will append a .dev suffix to the bundle id so … this is was screwing up with RevenueCat SDK.
Hello,it’s possible to test Purchases with android emulator (google pay activated) , because Offerings.current is empty.2021-12-14 17:33:19.831 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ API request started: GET /subscribers/1/offerings2021-12-14 17:33:19.831 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ API request completed with status: GET /subscribers/1/offerings 3042021-12-14 17:33:19.831 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Requesting products from the store with identifiers: um.subscription.gold.monthly.kart2021-12-14 17:33:19.832 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Requesting products from the store with identifiers: um.subscription.gold.monthly.kart2021-12-14 17:33:19.832 11616-11920/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Querying purchases2021-12-14 17:33:19.841 11616-11929/io.umotorsports.kart D/[Purchases] - DEBUG: ℹ️ Products request finished for um.subscription.gold.monthly.kart2021-12-14 1
Hi, When filtering in the customer view, can we please add a filter for price in purchased currency. We’re trying to identify customers who have redeemed a promotional offer, and are currently using a range on total spent. This leads to lots of false positives in our reporting. Additionally if this field could also be sent as part of the Amplitude integration that would be super helpful for our reporting. Thanks
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.