Get help with anything related to RevenueCat.
Recently active
We want to stop offering a set of subscriptions in our app for our lower tier, but want to let existing users to continue to have access to the subscription. If we remove the subscriptions from sale, how do we let the users continue to get access to the features they paid for, and also be able to restore the purchases till their annual/monthly subscription expires?
I have an android app published to the google play store around 4 days ago and revenuecat is not working even though the products are active on the google play console. Everything is working on the dev build. Everything loads properly. But in production, with no settings changed, the revenucat part suddenly doesnt work anymore.I’ve tried doing some error checks and it seems that the code is not getting past the first line of purchases.configure (googleApiKey is defined, i have checked)await Purchases.configure({ apiKey: googleApiKey });const offerings = await Purchases.getOfferings();const customerInfo = await Purchases.getCustomerInfo();does anyone have any ideas?
What is the difference between “cancelled_trial” and “expired” statuses? In the lists of customers it’s showing me only the former - the latter are in a separate area, but I’m not sure how to count that. Would “cancelled_trial” eventually move to “expired”? Thanks!
My app has a multi-user login system. I’m offering ability to purchase individual subscriptions based on account. I need a way to pull current active device subscriptions so I can assign unique subscriptions to user accounts. Does revenue cat have a Swift SDK option to pull current active device subscriptions?
If a user is first identified with an anon ID, then logs in to my app and is signed in to revenuecat with a custom ID, does that custom ID always override as the app_user_id?The documentation explains how aliases are merged, but doesn’t say which ID is set as the main app_user_id (e.g. for webhook data). https://www.revenuecat.com/docs/user-ids#login-method-alias-behavior I’m using the Firebase RevenueCat extension, and I want to be sure that the app_user_id will always be my custom ID if one is set, because the extension syncs data to firestore via that id. If it uses the anon id, then the data will not be correctly synced. During testing it seems like this is the case, but I want to be sure. Will the custom ID always become the app_user_id?
Hello,we are trying to implement IAP in an iOS app and are running into weird behavior regarding transferred purchases.We are signed in on two different iOS devices with an apple sandbox account. On the two devices, we use different app user ids. Now, we first made a subscription purchase on one device and canceled it afterward again. Then, we made a second subscription purchase on the other device (different app user id, same apple sandbox account).Whenever the app is started, Purchases.shared.logIn is called with the app user id of that device. With that, each time in the revenue cat dashboard, the purchase of the second device is transferred to the app user id of the last device we started the app on.This does not seem to be the desired behavior here – at least not what we need. We would expect the purchase to always be associated with the app user id which was used to make the purchase. In this example, the two app user ids are not related to each other. The only connection is the
For example this is how I would fetch the info about a user. First I need to set the unique user id during the configuration:Purchases.configure(“PUBLIC_KEY”).appUserID(userId).build()) Then after a purchase I could simply obtain it:http get https://api.revenuecat.com/v1/subscribers/$USER_ID Authorization:"Bearer XXXX" Content-Type:"application/json" X-Platform:android accept:"application/json" The problem with userID is that they will get lost, if the user deletes the app and reinstalls it, and will no longer have access to the existing purchases. The only way would be creating an email signup in the flow, which I was hoping to avoid. The other way is to use anonymous users:Purchases.configure(“PUBLIC_KEY”).build())Now ReveneCat can create aliases and merge the ids upon reinstallation as long as it’s the same user in Google PlayStore that made the purchases. This solves the problem, but now I have no way to double check the entitlement from the server side through RevenueCat’s RestAP
I want to give my customers a limited period discount for the lifetime product in my app, and I want to show both the original price and the discount price for that product in the paywall so that my customers would know how much they could save if they purchase now. I have configured a price change on App Store connect for this IAP product, and I wonder how I can get the original price and the discount price? It seems that the `package.storeProduct.localizedPriceString` gives me the discount price and I didn’t find a way to get the original price.
I tried to purchase consumable products at Test Flight and Xcode. When I try to purchase a consumable product that I’ve just purchased, RevenueCat does automatically purchase the product but does not show the payment popup, and I’m not seeing this transaction at RevenueCat dashboard. I’m concerned that it’ll be same at production environment. Any help?
I’m a basic developer and have found an idea of which I would like to monetise with a monthly subscription. It’s a simple two page app - which the base has been written. However I would really like to now integrate RevenueCat into this to enable monthly subs. Is there a pool of developers that, with payment can help out with this as I’m going around in circles.
I am using cordova-plugin-purchases in my App. I’ve noticed many “Had their subscription of vetcalculators_monthly_android:vetcalculators-monthly-android cancelled due to a billing error” comments in my sandbox testing recently. (Also in iOS). I’ve not changed anything in my code and wondering why this is happening. Also, I am wondering if there is a way to access this particular revenuecat info from within the App using the SDK or API: { "app_id": "app2c0d07f6dd", "app_user_id": "$RCAnonymousID:420b573c1e75455aae4bc433fea3979f", "cancel_reason": "BILLING_ERROR", "country_code": "US", "currency": "USD", "entitlement_ids": [ "monthly" ], "environment": "SANDBOX", "event_timestamp_ms": 1681342243670, "expiration_at_ms": 1681342232285, "is_family_share": false, "offer_code": null, "period_type": "NORMAL", "price": 3.99, "price_in_purchased_currency": 3.99, "product_id": "vetcalculators_monthly_android:vetcalculators-monthly-android", "product_price_in_purchased_curren
When I upgade my plans from Starter to Pro, found this error: There was a problem updating your plan, please try again or visit our Help Center.
After looking at some posts, I saw that for iOS, if a user gets a refund through Apple, it is automatically detected. Does this mean that the entitlement is automatically removed? In the case of Flutter, can we directly check it using customerInfo.entitlements.all['pro']?.isActive?
I’m wondering what happens in the scenario when subscription auto-renew is enabled and an RC account has been deleted. For instance: Member deletes account from app RC account is deleted through REST API Subscription is not cancelled in App store and auto-renew is enabled Auto-renew date is due…At this point is a new random RC account created? Does auto-renew still work when an account has been deleted?
Hi team,I’ve been working on integrating RevenueCat into my iOS app. The app itself is super simple but it comes with some app extensions. The extensions themselves don’t have access to internet (yes, that’s a restriction). Therefore, I’m using a group user defaults to share the subscription states between the app and the extensions.Now, the app itself mostly won’t be opened by the user often, which has caused an issue as follow:The user opens the app and subscribes to be a Pro. The app shared the Pro status via user defaults with the extensions. Every time the extension is running, it checks the user default value and decide what entitlement the user has. After a while, the user cancels the subscription in the App Store subscription management screen. The subscription ends soon after that. The extensions still think the user has the Pro subscription because the user hasn’t opened the app since then.How do I make sure the subscription state is updated in a timely manner when the app it
In The Case of a Change/ Changes in Custom UserID,what happens to the Older userID(s)?does the older custom user ID still old subscription privilege ? I am trying to cap the number of devices that can be signed in with a subscription with My logic, in the case where a user intentionally try to outsmart the system by signing in the same email they used in purchasing a subscription to many device in pursuance of premium access for multiple devices with a different Sign In with Apple or google sign in, my Logic create a new custom User ID for the original subscription account ,each an every time its been used with a new Auth, with the hope that each and every previous custom userID would be redundant , hence limiting number of account that is allowed for one subscription account . So please, tell me what will happen to the previous custom IDs that were created before the the account was assigned a new one .. thanks
Can I use Google Play Developer API and App Store Server API (e.g. cancel, defer, extend) if needed? Will it affect subscription management of RevenueCat if I use those original APIs rather than RevenueCat REST API?
I’m using revenueCat in my flutter project, when building my app in Xcode it throw this exception:RevenueCat requires Xcode 13.2 with Swift 5.5.2 to compile. installed Xcode version: Version 14.2 (14C18)swift --version:swift-driver version: 1.62.15 Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)Target: x86_64-apple-macosx12.0any help?
I am testing a tvOS app that has a subscription and two consumable product IAP. The consumable product IAP works properly when running the tvOS app via Xcode. However, when running the same app via Test Flight, the consumable IAP does not allow the purchase of a second exact consumable and instead provides this message: “The In-app purchase has already been bought. It will be restored for free”. Again this is a consumable purchase so there should be no restoration and the user should be able to purchase it as often as they want. This again does NOT happen when running via Xcode. The consumable IAP is set as consumable on App Store Connect and is not associated with any entitlement here on RevenueCat. I am obviously concerned that if it’s happening on TF that it will happen in production as well. Why is this occurring? Thanks.
Hi folks!Google has updated their policy with the following text, marked my highligts in red:To give users more control over their data, we're introducing a new account deletion requirement under our User Data policy. If your app allows users to create an account, then it must also allow users to request for their account to be deleted in the app and through a web resource. All developers must also update their Data safety form in Play Console, where some information may be displayed on your app's Data safety section on Google Play. Learn more in our Help Center and blog.I have used RevenueCat 100% as my “userhandler” so I all requests regarding deletion has been done manually on e-mail from end user.In the future it will require a webpage to actually do so, is this a feature that maybe RevenueCat would provide? Or do I need to actually create a webpage to actually do this.
In the case if the purchase history has to be automatically paginated (if user has alot of purchase history), will it still give us the most recent purchase via nonSubscriptionTransactions.len - 1 ?
Hello there!We’re prototyping an integration with RevenueCat but initial tests are failing on Android with the following error:{ "nativeStackAndroid":[ ], "userInfo":{ "underlyingErrorMessage":"Error when fetching products. DebugMessage: An internal error occurred.. ErrorCode: SERVICE_UNAVAILABLE.", "readableErrorCode":"StoreProblemError", "readable_error_code":"StoreProblemError", "message":"There was a problem with the store.", "code":2 }, "message":"There was a problem with the store.", "code":"2"} We’re using the latest version of `react-native-purchases`. The billing permission is also set in our AndroidManifest:<uses-permission android:name="com.android.vending.BILLING"/> Also, both the Android project and the products on RevenuCat don’t report any error/issue. The products (subscriptions) have been imported using the automatic import tool on RevenueCat. Thank you in advance for your help.
I had an initial functioning setup to get offerings and make a purchase. It worked : I could make a test purchase.The code was in a ‘shop’ page, and I decided to move the RevenueCat initialisation to main.dart as initial entry point. But maybe this wrong because it screwed everything up, and the app crashed on loading (error below). So I put it back to what it was.The app now loads and all screens function EXCEPT I am now getting the same error when I open the shop page. Even though it was working before.*** Assertion failure in +[RCPurchases sharedPurchases](), RCPurchases.m:160*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There is no singleton instance. Make sure you configure Purchases before trying to get the default instance. More info here: https://errors.rev.cat/configuring-sdk'*** First throw call stack:(0x183586754 0x19804d7a8 0x1834883f8 0x1848afa6c 0x1009762f4 0x1009f2d34 0x100cb7bc0 0x100cb5b04 0x10109ea60 0x100dafd7c 0x1010b
Hi, I used RevenueCat to set my in-app subscription. While developing everything was working correctly. Apple team approved the app and I released it. I downloaded the app, but the offerings wasn't fetching and I was unable to make a purchase.I found information that I should wait for 24 hours before release, so I made some small changes in my app, sent it to review, waited 24 hours and released it. Unfortunately the problem still exists.Does anyone have any idea why is that?Thanks in advance
Hello,I have a question about restoring purchases. I have an app using anonymous user ids. App starts with an intro slider, the last slider page is a pre-paywall view where the user can choose to either restore purchase or goto subscriptions ( hence the paywall). Restore purchase works as intended if the user has an ongoing subscription. I also saw that if a user with an ongoing subscription by misstake continued to the paywall view and tried to buy another subscription this was detected by the call to Purchases.shared.purchase… and a relevant alert in Swedish was presented, perfect!But my question is there a way to programatically check if a user is eligible to restore a purchase when the user has made a new installation of the app? Then I could disable the goto subscription button on the pre-paywall view. Best Regards, Tomas
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.