Get help with your SDK implementation.
Recently active
Howdy!My iOS app previously had a single “Unlock Pro” non-consumable iap (not using RevenueCat), and now I’ve setup and implemented subscription plans using RevenueCat.It works great, except migrating the old legacy non-consumable purchase is not working. On the latest version of the iOS SDK, I hit this line when I call syncPurchases.Is it a bug that that code ignores non-consumable purchases? It was introduced by this PR, in December. I downgraded to iOS SDK 4.15.5 (before the release with that code) and syncing the legacy non-consumable purchase seems to have worked as expected.Would love some advice on this. Would you recommend releasing with the 4.15.5 version of the sdk?(also, THANK YOU for making the iOS sdk open source ❤️)
IGNORE: Was issue with simulator needing to be restarted.Im using flutter and just upgrade from flutter_purchase 4.11.1 → 5.5.0 and I’m getting aPlatformException(2, There was a problem with the store., {code: 2, message: There was a problem with the store., readableErrorCode: StoreProblemError, readable_error_code: StoreProblemError, underlyingErrorMessage: Error when fetching products. DebugMessage: An internal error occurred.. ErrorCode: SERVICE_UNAVAILABLE.}, null)When I call:await Purchases.getOfferings()Was working perfectly fine until I upgraded. I only have 1 time purchases configured no subscriptions so as I understand it the google migration stuff doesn’t apply to me. Do I need to add some new config setting in in androidmanifest.xml or build.gradle need something new to support billiing 5.0?Currently in my AndroidManifest.xml I have this:<uses-permission android:name="com.android.vending.BILLING" />
I'm testing in a sandbox environment using Flutter (Android).I purchased a non-subscription and then refunded it.Then, when I perform a restore, an error handling with the following content is returned:CodePurchases.restoreTransactions();LogI/flutter (12532): PlatformException(16, There was an unknown backend error., {code: 16, message: There was an unknown backend error., readableErrorCode: UnknownBackendError, readable_error_code: UnknownBackendError, underlyingErrorMessage: Backend Code: 7651 - The payment for this non-subscription product is not complete.}, null)W/BillingClient(12532): Error consuming purchase with token. Response code: 8E/[Purchases] - ERROR(12532): 🤖‼️ Error consuming purchase. Will retry next queryPurchases. DebugMessage: Item is not owned by the user.. ErrorCode: ITEM_NOT_OWNED.I know this error is on Google's side, but is there anything I can do on RevenueCat's side or my code implementation? Is there a way to resolve the error?
Hi!I’m trying to test restoring Purchases in sandbox mode. My app does not identify users, and, by not having a login screen, every one of them has an anonymous App User ID.I purchased a consumable item inside the app, and, as this grants a “benefactor” entitlement, tried to restore the entitlement after uninstalling the app. This did not work.How can I ensure that an anonymous user can restore entitlements that are granted via consumable products? Thanks !Renato
Hello all, I am struggling with the edge cases related to user identification. I am using unique ID created for every user of our app as an identifier. This works for most use cases but there is situations where this is not enough: User deletes his/her-account and creates new account later:→ The original unique identifier connected to revenuecat is lost since the account creation always creates a new item into the Database.→ We can not login to revenuecat since the original ID is lost Why this is problematic→ We offer introductory offer to our users, and we need to determine if user has previously had subscription (so is still eligible for introductory offer or no). This way we can determine if we should show the discounted price UI or normal price UI. On Android only way to determine this is to see if user had subscriptions before and that can be done querying the purchaserInfo.entitlements.all from revenuecat-SDK and that is not working if we can not identify first. Email would pro
Hello,I came back to a Flutter project that was working fine few months ago. I’ve updated the purchases_flutter package and now I can’t fetch the offerings on iOS but works fine on Android.After reading the Why are offerings or products empty? post I’ve noticed that I had a new Paid Applications Agreement so I’ve accepted but after 2 I still getting the error.I’ve checked all the possibles causes mentioned in the post but I don’t understand what the solution 3 means: If you're trying to fetch products from the App Store, ensure you're not using a StoreKit Configuration file I don’t know where is the problem. Any suggestions? Thanks in advance! These are the errors I’m receiving:ERROR: 🍎‼️ Error fetching offerings - No se ha podido completar la operación. (Error de RevenueCat.OfferingsManager.Error 1.)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 Rev
Using Flutter SDK in an app. SDK is operating and can pull getCustomerInfo() and getOfferings() on an IOS app.From getCustomerInfo(), the managementUrl is null. Why is this? How can I get a valid managementUrl?In yesterday’s testing, the managementUrl was valid.
I have very strange build errors when trying to build android with revenue cat + unity iAP. Please, help, it’s urgent. Exception 1: Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 - Pastebin.com Exception 2: CommandInvokationFailure: Gradle build failed. D:\Soft\Unity\Editors\2021.3.27 - Pastebin.com Unity iAP version is 4.9.4.Revenue cat version is 5.0.0-alpha01
I have a non-consumable in app purchase that I no longer offer in the app, so it would be great if I could remove it from the store listing, but I don’t want to remove anything for the users that have already purchased this iAP.Can I safe uncheck “Cleared for Sale” in AppStore Connect? Is it still included in the AppReceipts? If I have the legacy purchase in my entitlements, will the features still be unlocked for these users? Can they still restore purchases?
I’m using the iOS SDK 4.25.2, for some reason when I ran the code today the localizedPriceString returned from the package object has the dollar currency symbol after the price instead of before like it has always been, so my UI is showing “4.99 $” instead of “$4.99” Anybody else having this issue or know what might be causing it, maybe a phone setting? ThanksMark.
On Android, I’m getting the following error when trying to load the subscription products:“There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from the Play Store.”I have followed the instructions here.RevenueCat React Native version: 6.6.0 Android Studio targeting SDK 33 All the products are in an “active” status in the Google Play Console. Testing on a real Android device, with a local build. (release builds also seem to have the same issue) The product were imported from Android using the Revenue Cat importer (I did not change the product IDs) The Android package ID is correct.I’m migrating off of react-native-iap, and can confirm that it is able to load the product details without any issue.What else can I do to troubleshoot this error?
I am using RevenueCat for inline purchase and I would like to be able to show the data in the attached image. In particular, I need to show following subscription data:subscription name: Was able to get entitlementInfo.identifier but I need entitlementInfo.description. I could not get that.purchase value: Can't get that from entitlementInfo.subscription period: Can't get that from entitlement info.expirationDate: was able to get it from entitlementInfo.expirationDateIn the entitlementInfo there is a property called productIdentifier which can help me get some of the data I want. But I will need to map productIdentifier to the correct package. Does anyone knows how to do that?
Hey, I'm using RevenueCat’s SDK on my Flutter app. I want to enable purchases in my app for a physical service. The user can order service, but I want to charge only after an employee of my company accepts the order. If my employee rejects the order, then I don't want to charge the user. Otherwise, I can charge the user upon ordering, but then if my employee rejects it, I'll cancel the purchase and give the user his money back.Are any of the options available? I cannot find it in the docs. I want to charge the user using the App Store and Google Play.
RevenueCat is pitched as being a good solution for kid-focused apps on the App Store.In my experience, when submitting an app to the App Store Kids category, App Review seems to immediately reject the app ask the following questions about third party analytics and advertising.• Does your app include third-party analytics? If so, please provide details about what data is collected for this purpose.• Does your app include third-party advertising? If so, please provide a link to the ad network's publicly-documented practices and policies for kids apps.• Will the data be shared with any third parties? If so, for what purposes and where will this information be stored?• Is your app collecting any user or device data for purposes beyond third-party analytics or third-party advertising? If so, please provide a complete and clear explanation of all planned uses of this data. Assuming RevenueCat is the only third party framework in the app, what is the best way to describe how RevenueCat works?
I'm operating an app that provides annual subscription products developed using Flutter. I'm currently working on addressing the Google Play Billing Library 4 version deprecation in this app. As a result, I have upgraded the version of the `purchases_flutter` library from 4.10.2 to 5.6.0. I haven't made any changes to the subscription product settings on Google Play.The issue I'm encountering is that the information for the free trial period of the product (introductoryPrice) is being received as null.The `storeProduct` information received for each version is as follows:Version 4.10.2:```storeProduct => StoreProduct(identifier: us.beentogether.ad.premium, description: , title: Subscription for premium features. (Been Together (Ad)), price: 19000.0, priceString: ₩19,000, currencyCode: KRW, introductoryPrice: IntroductoryPrice(price: 0.0, priceString: ₩0, period: P1W, cycles: 1, periodUnit: PeriodUnit.day, periodNumberOfUnits: 7), discounts: null, subscriptionPeriod: P1Y)```Version 5
Why the localizedPriceString shows “$9.99” in development, but shows “US$9.99” in production? Is there any way to remove the currency symbols?
Hi,I'm looking to integrate IAPs some user generated content.Similar question was already answered in context of subscriptions, but how about expireable content? Can I have generic Google & Apple in app products, like product_19, product_39, and have it link to a few different $39 products in app that users can buy, and the access to it lasts for 30 days. Would RevenueCat be able to handle that and distinguish between products? Thank you,Marin
How to get receipt \ signature for transaction on Android using Unity3d SDK?
I use com.android.billingclient:billing:4.0.0 on my application and purchases_flutter 3.10.0 for the revenuecat subscriptions.From May 2022, users can't see the free trial or intro price options. Then, I messaged the GooglePlay and they replied as below:Hello Google Play Developer, Due to a bug in our system, since May 3, 2022, you may be experiencing incorrect or missing subscription information in the results from the Google Play Billing library’s deprecated querySkuDetailsAsync() function. During this time the Google Play Billing library may not have returned information to your apps about free trial and intro price offers for one or more of your subscriptions, even if the user was eligible for these offers. In these cases, users only saw the subscription base plan in the purchase cart, without any free trials or intro prices.Action RequiredWe recommend that you review all of your subscriptions with free trial and intro price offers in the Play Console, and ensure that the correct o
The documentation is clear about what not to use for the Custom App User ID. What is recommended to create a Custom App User ID? My app is written in Flutter/Dart.Thanks,
Hi I get this error after enable 3day trial subscription in iOS appPlatformException(2, There was a problem with the App Store., {message: There was a problem with the App Store., code: 2, readableErrorCode: STORE_PROBLEM, readable_error_code: STORE_PROBLEM, userCancelled: false, underlyingErrorMessage: An unknown error occurred} It’s the first time that i enable trials on iOS, I’m not sure if I’m doing something wrong. I’ve just set up 3 day trial in Introductory Offers. Have I to do something else?
Can I be confident that the transaction ID sent to the webhook will always be the same for the lifetime of a subscription, or do I need to use the original_transaction_id value?Since I’ll be creating a record in my DB for each new subscription, I want to make sure that I’m not creating duplicate records if a new transaction ID is created for existing subscriptions For example when it renews, or if the same Android user logs in as another user in my app. In the second case, I’d like to be able to reassociate that subscription to the current user.I’m migrating to RevenueCat from an existing system that integrated directly with Apple/Google stores. Both Apple and Google require you to keep a reference to the original (or previous) transaction/token since these will change over the lifetime of the subscription. I’m hoping that RevenueCat takes care of that headache so I can just use a single ID for the lifetime of a subscription.
I am currently using Flutter with real android device. I recently switched to using “Google Subscription Model v2”. I followed RevenueCat instructions over here When I upload my Flutter app to Google play store internal testing, then download the app from play store to my real Android device, I am able to make subscriptions without any problem. On the hand, if I run my Flutter app through the command line using “flutter run”, then when I try to make subscription, I get this error: “The item you requested is not available for purchase.”. Here is a screen shot. I am able to see the subscriptions with no problem on my screen. I only can’t make purchase.I don’t want to deploy my app to internal testing in play store to test my code as this is so slow. Is there a better solution. Thanks
CollectionReference<Map<String, dynamic>> usersRef =FirebaseFirestore.instance.collection("data");Future<void> purchaseGoldPackage(Package package) async { try { await Purchases.purchasePackage(package).then((customerInfo) async { await Purchases.syncPurchases(); usersRef .doc( userID, ) .update({ 'status': 'gold', }); }); } catch (e) {}} The code above is how i set a listener for a new customer subscription, then calling firestore to update a fieldValue “status” from ‘free’ to ‘gold’, which is how multiple devices get notified a purchase was made and the subscription is active.This works 5 out of 10 times, which means i maybe half way there, The issue is firestore update method dont get called half the time, leaving user with multiple devices hanging. which means the listener i set up for firestore which updates the UI of user devices wont get triggered, forcing users to restart app to see subscription c
Hi: I’m trying to use the example exposed on the documentation:const sdk = require('api')('@revenuecat/v4.0#1yz2c0m2sl5v5md8q');sdk.auth('Bearer REVENUECAT_API_KEY');sdk.grantAPromotionalEntitlement({duration: 'weekly'}, { app_user_id: 'app_user_id', entitlement_identifier: 'entitlement_identifier'}).then(res => console.log(res)) .catch(err => console.error(err));UnhandledPromiseRejectionWarning: Error: Sorry, `grantAPromotionalEntitlement` does not appear to be a valid operation on this API.at Proxy.<anonymous> (/path/to/index.js)at processTicksAndRejections (internal/process/task_queues.js:95:5) But I can’t do it. Please, someone that could give me a way to keep going.
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.