Discussion and help from anything related to RevenueCat.
Recently active
I am hoping we can get some guidance on how to test billing errors in the sandbox. Specifically, we are never seeing billingIssueDetectedAt populated.As an example, we subscribe using a license tester on Android in our React Native app. The subscription goes through successfully, and afterwards, we set our payment source to “always decline” through Google Play. Because it’s a monthly subscription, we wait 5 min, and when the renewal charge is made, we get an email from Google saying the subscription was suspended because of a billing issue. However, there is no change on the customerInfo object when I call getPurchaserInfo().Fast forward another 5 min, and the subscription is cancelled. This time, if I call getPurchaserInfo(), I immediately see the purchase is no longer active. However, there is still no value for billingIssueDetectedAt, and the expirationDate has not changed either.I guess my questions are:should the above have generated a billingIssueDetected at value? I know the doc
Hey RevenueCat team,I’m reaching out to you because we currently have an issue with an amplitude events on our android project.We have set up an event that should be sent when a user starts a trial; unfortunately, it is not sent anymore on amplitude for a couple of weeks, where we have the correct data in our revenue cat dashboard. Could you help us figuring what’s wrong?Thanks a lot 🙏
Hello community,I am new to RevenueCat and to swift programming. I am trying to get my first app up and running on the store but am having trouble with making a test purchase. Wondering if someone can help by looking at the debug log.CN_235_Monthly2992022-05-29 18:24:59.214531+0300 CASAFlightData[56957:3007853] [Purchases] - DEBUG: ℹ️ No existing requests and products not cached, starting SKProducts request for: ["CN_235_Monthly299"]2022-05-29 18:24:59.253793+0300 CASAFlightData[56957:3007853] [Purchases] - DEBUG: 😻 SKProductsRequest did finish2022-05-29 18:24:59.253996+0300 CASAFlightData[56957:3008278] [Purchases] - DEBUG: 😻 SKProductsRequest request received responseThe code I’m running is here:class PurchaseService { static func purchase(productId: String?, successfulPurchase: @escaping () -> Void) { guard productId != nil else { return } print(productId!) //Perform purchase //Get the SKProduct Purchases.shar
What happens to an anonymous user’s ID if he buys a subscription on device A, then restores on device B.Will device A still be logged in?I found it in the documentation:Transfer - If a user buys a subscription with an anonymous ID ( account A) and then restores with an identified user (account B) as long as they are logged in with the same underlying store account the store receipt will transfer to account B and only account B will have access to the subscription. how to understand it for different devices?Will the subscription be available for deviceA and deviceB or only for deviceB?
We are going to publish our app with in-app purchases in Russia. Now we have a problem — Google Play is pausing it’s billing system for users in Russia. Can we publish our app with you SDK and solve the problem? Can users from Russia buy subscriptions this way?
Some of our iOS users have reported that nothing happens when when restoring purchases on iOS and I’ve been able to reproduce. From debugging my own account, I have an active subscription in App Store but when I restore purchase, I noticed my `PurchaserInfo` does not include active subscriptions when restoring. In case it’s relevant, the `appUserId` we pass in during initialization with `Purchases.setup()` can be a different id across installs (e.g., a fresh install creates a new user id).Any known issues or advice on how to debug this further? VersionsTested with the following and both had empty active subscription:Flutter v2.10.3 and purchases_flutter v3.8.0 Flutter v3.0.1 and purchases_flutter v3.10.0 Code: final PurchaserInfo restoredInfo = await Purchases.restoreTransactions(); The data in PurchaserInfo: My phone’s subscription on App Store:
My purchasing code seems to work fine for the majority of users, but I have a small portion of them who for whatever reason either have entitlements for a period of time and then lose them, or for whom the entitlements are seemingly never granted, even though the purchase was successful.When checking their customer info in the RC dashboard, it shows no entitlements.Any ideas for how to troubleshoot this? Here’s my code for completing a purchase:if let package = self.offering?.availablePackages[1] { Purchases.shared.purchase(package: package) { [self] (transaction, purchaserInfo, error, userCancelled) in if let error = error { self.present(errorAlert(message: error.localizedDescription), animated: true, completion: nil) } else { if purchaserInfo?.entitlements["Lifetime Access"]?.isActive == true { entitlementsGranted = true saveUserData
We have noticed that Android subscribers in certain states are being charged sales tax on their subscription. For example, our monthly set price is $6.99, but the subscriber is being charged $7.48 ($.49 in tax). Does anyone know if this is related to us setting up business/tax documents wrong, or if Android users need to pay sales tax based on their state laws? We are providing a basic subscription app service and not selling digital goods. I have tried editing the tax settings in Google Play, but some states are uneditable so Google’s preset is taking priority. Thanks for any assistance here!
I would like to run the Revenue Cat demo project on a 2013 Mac running Catalina but receive the error that the nimble package requires Swift tools 5.4.0 and the installed version for Xcode 12.3 (which is the highest version supportable on my hardware) is 5.3.0. XCode 12.5 includes Swift tools 5.4.0 but will not run on Catalina. Is there a workaround for my current hardware?
I have a requirement that I want to set a temporary entitlement for the user, (not through in-app purchase), like this cutomerInfo.entitlements[@"temp_access"].isActive = YES
Hi all, I want to find all purchases made by the user on IAP, in my app’s code. Actually due to some UX issues, some customers have bought both the lifetime and monthly subscription of the app. Now I want to identify such users while they run the app, and instruct them on how to claim refund for one of the purchase. What is the best way to do this, since I don’t have any email id identifier for the users, I was thinking of adding code to identify such users in the app itself, any pointers on what functions can I call from RevenueCat’s SDK for me to solve this issue. I am looking for iOS based solution 14.0+.
Have user A logged in Purchase a subscription Log out, log in as user B Purchase a consumable in-app purchaseExpected: no subscription for user B, subscription for user AActual: subscription for B, no subscription for AThis is extremely wrong, since user B is expecting to get a consumable in-app purchase effect, while they get an effect as if they bought a subscription. Subscriptions should only be transferred when explicitly asked by a user.
I have a use case at the moment where a user who is subscribed to an autorenewable subscription can invite a friend and receive a free month. On Google this is pretty straight forward to implement. The problem is on IOS. I saw we can use the promotional offers in order to implement this. The problem is that I offer that free plan on the server side and the promotional offers can be purchased only on the mobile app side. Is there any way to purchase a promotional offer on our server side?
I am developing an app that gives access to a certain database for information lookup.The idea is to charge $2.99 for the app in the app store which gives access to the current version of the database for life.Then, whenever a new version of the database is available (happens annually), offer a non-consumable in-app purchase to get lifetime access to the new version.My problemIf a user buys the app in 2022 and uninstalls it when the in-app offer to upgrade to 2023 comes up (not purchasing the upgrade) and then reinstalls it, How can I figure out what version of the database they are entitled to? How can I determine when they first bought the app?
I am writing an app with the choice to subscribe to premium features on a monthly or yearly basis. I’ve been wondering if I need to store webhook data that comes from revenuecat into my database. What would be the benefit of this? I thought that the revenuecat API (i.e. javascript API) lets us see if a user (i.e. alex@mywebsite.com) is subscribed to our iOS/Android/Stripe app. Maybe I’m missing the point somewhere here. If I did store the data in a SQL db, how would the schema be best designed? I see @ryan from RevenueCat replied to a similar post but I’m not 100% sure how to implement this best. I see the /subscriber endpoint docs mention a subscriber object, entitlement object, subscription object, non-subscription object, subscriber attribute object - would I want SQL tables for each of these?
I have an existing Objective-C project that is already using CocoaPods.After adding the pod 'Purchases' to my podfile my project no longer runs.It quits with the error messages:__abort_with_payloaddyld[15384]: Library not loaded: @rpath/libswiftCore.dyliblibswiftCore.dylib' (no such file)I am on Xcode 13.0I checked the solutions on this page https://stackoverflow.com/questions/26024100/dyld-library-not-loaded-rpath-libswiftcore-dylib, and based on that, have confirmed the following:For both my project and target:Build Settings > Build Options > Always Embed Swift Standard Libraries is set to YesFor my target:Build Settings > Linking > Runpath Search Paths is set to @executable_path/FrameworksI also Cleaned the project and deleted all Derived Data.What else do I need to do to resolve this error?
Hi, I received BILLING_ISSUE and CANCELLATION webhook event when I changed our subscription plan in the Manage Subscription page on iOS. (I changed my plan from monthly to yearly)‘cancel_reason’ in CANCELLATION webhook is ‘UNKNOWN’.I received a PRODUCT_CHANGE webhook 1 minute after CANCELLATION Why are these webhooks being sent? I'm testing in a sandbox environment.
We are migrating from application created in Account A to application created in Account B. So need to export data from application created in Account A and import it in Account B. Exporting customers data does not have all required fields as below:app_user_id receipt (the raw receipt file) product_id price introductory_price (if not a free trial) currencyWe need to do export data from Account A and need to import in Account B for one specific reason.In 2019, Apple introduced Mac catalyst but at that time no way to unlock app by purchasing in app purchase from iOS. So we integrated RevenueCat and it done really nice job. Both iOS and Mac app has different bundle id and both have different in app purchases. Purchasing on one platform will unlock features on another. As we migrating from one account to another account, it might be like if user don’t update on other platform it might lock user’s unlocked feature as it will not get chance to sync receipts to new account. So better is to im
Hi,We have received a GDPR request from a user for insight into their data, and as such we also need to provide them with the data sent to RevenueCat about them.What tool in RevenueCat will allow me to export all data about a user?GreetingsHans
In the overview panel I see a number of customer ( 398) that does not correspond to the one reported in panel customers (9) . Why there is such a difference? Thanks in advance to anyone that could provide support
I was build an appplication by Flutter, when I release it to Android it is run well, when I put it to TestFlight it also run well,but when I release it to appstore(iOS) it will load subscriptions list fail.what am I missed? help me! my Application name 「幸いな人」
When testing purchases on Sandbox with StoreKit config specifying a 30 second subscription interval I quite often get an entitlement that has equal latestPurchaseDate and expirationDate therefore rendering it invalid immediately and deadlocking my purchase flow. Logica::Store::update_state: entitlements: ["base_content_access": <EntitlementInfo: "identifier=base_content_access,isActive=false,willRenew=true,periodType=PeriodType(rawValue: 1),latestPurchaseDate=Optional(2022-05-21 13:58:39 +0000),originalPurchaseDate=Optional(2022-05-21 13:58:39 +0000),expirationDate=Optional(2022-05-21 13:58:39 +0000),store=Store(rawValue: 0),productIdentifier=fivesysdev.logica.renewable_subscription,isSandbox=true,unsubscribeDetectedAt=nil,billingIssueDetectedAt=nil,ownershipType=PurchaseOwnershipType(rawValue: 0)>]Sometimes happen for 5 minute intervals too, but significantly less often. I was fine with this but Apple rejected my app, most probably due to them testing my app on sandbox with low
Hi there,We have started seeing a really weird issue on our production app since about mid April where sometimes the offering data is returning 7 under the introPrice.periodNumberOfUnits value for ios. As far as I understand it is impossible to get a 7 for this value from the app store because Apple only offer certain distinct introductory offers as shown in the screenshot I sent. Currently for the product being displayed it should be a 1 week free trial and some of the time it is returning 1 as expected but sometimes it returns 7. This started happening after no changes on our side suddenly about in the middle of April (according to our data). I was wondering if your team has been making any changes around this as we just dispplay the value that we get from Revenuecat SDK, we don’t fiddle with it or hardcode any values.Thanks,Lyia
Steps:User A logged in with App User Id A. User A make purchase and a transaction created against user Id A on revenue cat. User A logged out from the app. User B logged in to the same app with the User Id B. User B make purchase and a transaction created against user Id B, But User A’s transaction app user Id updated to B.My issue is I want both the transactions with separate App User Id and to updated with latest one.Where and What I am missing here? Is there any configuration I need to do?
Hi, I'm testing in the Play Store sandbox environment.When I receive a BILLING_ISSUE webhook, its expires_date and grace_period_expires_date is 2 weeks later. (The grace period is set to 2 weeks on on the Play Store)However, I receive an EXPIRATION webhook 15 minutes after BILLING_ISSUE. Is this a sandbox specific issue? Or am I configured incorrectly?I want to receive the webhook after the end of the grace period. Thanks
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.