Discussion and help from anything related to RevenueCat.
Recently active
Hello all! Our team is developing a feature that will result on giving away around 50k+ users a free 30-60 days subscription on a monthly basis.We were wondering if we are going to find any technical limitations with the Grant a Promotional Entitlement API? or if grating that amount of subscriptions concerns RavenueCat in any way?Thank you!
I’m following the Magic Weather App, all working fine but I want to update customer’s record to indicate that they subscribed. According to the quick guide I need to have the following code but the sample code missing this bit of code. My question is how is working? Does Purchases.getCustomerInfo() does the actual purchase? Please advise.try { CustomerInfo customerInfo = await Purchases.purchasePackage(package); var isPro = customerInfo.entitlements.all["my_entitlement_identifier"].isActive; if (isPro) { // Unlock that great "pro" content }} on PlatformException catch (e) { var errorCode = PurchasesErrorHelper.getErrorCode(e); if (errorCode != PurchasesErrorCode.purchaseCancelledError) { showError(e); }}This is the code from the sample. void perfomMagic() async { setState(() { _isLoading = true; }); CustomerInfo customerInfo = await Purchases.getCustomerInfo(); if (customerInfo.entitlements.all[entitlementID] != null && custom
In order to use Revenuecat in our app. What do we have to do from a legal perspective?Do we need to display a consent? (Tracker?)Do we have to inform the user on app start that we are using cookies?Anything else?Thanks
I have struggled for TOO long trying to figure out why my RevenueCat could not find my Android subscriptions. It seems that RevenueCat’s documentation has not kept up with the Google Play changes. I realize you are struggling to support the new changes in Google Play. But, you need to support other new users that are dealing with the new Google Play subscription setup and how to integrate with RevenueCat.tldr; The secret seems to be: You must use the legacy method of defining subscriptions in Google Play Store.For each RevenueCat "Product" you must define ONE Google Play Subscription that has a SINGLE base plan. It is the Play Subscription "Product ID" that must match to the RevenueCat "Product" IdentifierThe RevenueCat provides a link in the error messages (https://rev.cat/why-are-offerings-empty) that after a redirect end up to the closed topic WITHOUT ANY MENTION of this issue! I hope this helps someone out there.
Hi there,I was testing webhooks for an endpoint, which I created on my server. But when I am testing the Webhooks at that time I am having a problem. When press the test button, I get this message - "It wasn't possible to connect, are you sure the URL is correct?"Webhook Endpoint - "https://goit.softuvo.click/users/revenue-cat/webhook-test/"I have done some R&D, it seems there maybe some problem in certificate.Following are the details of certificate I am using at server side:Common Name (CN) - R3Organisation (O) - Let's Encrypt
I am using real device for testing apk , the code directly goes inti catch and gives this error -There is an issue with your configuration. Check the underlying error for more details. The same code works fine with apple packages for ios .This issues occurs in android
The scenario is someone makes a purchase without an apple login so I see the subscription in the sandbox with an anonymous ID. Then they log in using sign in with apple. Since I now have the user ID I log in to RevenueCat with the new ID assuming it will be associated with the anonymous ID and the purchasing info returned will say the subscription is active. It doesn’t do the association and the entitlements are empty. func handle(_ authResult: Result<ASAuthorization, Error>) { print("Authorization HANDLE") switch authResult { case.success(let auth): Logger.su.info("Authorization successful: \(auth)") switch auth.credential { case let credential as ASAuthorizationAppleIDCredential: Logger.su.info("Authorization credential: \(credential) user:\(credential.user)") Purchases.shared.logIn(credential.user) { (purchaserInfo, created, error) in if let error = error {
Does anyone know what apples policy on split testing prices for the same in app purchase (non renewable)?I just submitted a new build with new in app purchase plans and they rejected it asking...1/ “Whats the differecne between 9.99 and 19.99 lifetime pro plans?” (theres nothing, im just split testing)2/ “How do we access your 9.99 lifetime plan, we can only see your 19.99 option“Not sure how to reply as Im not sure of the app store policy. Any pointers would be greatly appreciated.Thank you!
Hey all 👋 I'm currently making an app using RCs Flutter SDK and I'm excited to get integrated. I believe I've wrapped my head around entitlements, packages, and offerings and what input on my future offerings. My budgeting app will have 2 entitlements for standard and premium subscriptions. I also plan to sell monthly and yearly subscriptions on iOS and Android. So far, everything seems normal and similar to the products examples on the doc site. My twist is that service I offer will only allow users to connect to N financial institutions based on the subscription level a user chooses. I want to be able to offer the standard plan with a default entitlement of 3 linked institutions and the premium with a default of 7 institutions. I'm also planning to allow users to change their linked institutions limit manually (from 3 to 5 for example) and have their monthly/yearly subscription reflect that change in cost. My question is, will I have to make an entitlement for each amount of li
I might be misunderstanding how RevenueCat is supposed to work, but... We used to use SwiftyStoreKit to handle our pending transactions. RevenueCat states that:Remove the SwiftyStoreKit completeTransactions() method, and replace it with the Purchases SDK configure()method. Our workflow is: User makes a purchase, after the purchase is confirmed we call our backend to inform that this user has unlocked a product, then after a successful confirmation, we manually invoke the complete transaction, so that the user can be billed.If there were any transactions that were not successfully communicated to the backend, they would be retried in the background.Given the description above, provided by the documentation, it seems like there is no way to handle this.What are we missing here? How can we ensure that purchases are only finished once our backend is informed? Thank you
Hi! Simple question to understand the full scope of Block Restores, and what the support flow would require in this scenario. Say a user cannot login, maybe the user does not even remember what account used to sign up, so a user is only holding a Receipt. Based on the Receipt, we want to try to reset things. We can do that if we can somehow obtain the original User ID from our side, but to do so we need to store some field from the Receipt or from the Rev Cat Subscriber that we could use to link both. Question is, what field would you recommend to use? Should we try to find an original_transaction_id? The receipt itself as token?Thanks!
Hi, I have a problem am trying to test my in-app purchase using Revenue cat on flutter, there is a problem occurs when I try to subscribe again with an already subscribed apple id, and an error box appears from apple, said: You're currently subscribed to this ....., but Revenue cat server act like the purchase is made and hee give the new user the entitlements while he shouldn't
We’ve been using RevenueCat forever and recently updated to 4.13.1 and instrumented the app properly so this behaviour might have been present in the past but we wouldn’t have known it.About 20% of our users who attempt purchase fail due to RevenueCat returning a nil package. We’re not sure what could cause such a large percent of them to fail and if that’s normal (i.e. 20% of users are launching our app for the first time without Internet connectivity?). Has anyone else seen those failure rates that high?
Hi, I saw that for some costumers in Spent line the numbero is 0 and if I check costumer cronology it happens only for who use a promo code like “3 free trial days”(not everyone but only some costumer). In details there is “started a trial of ...” and after “converted from a trial to ...” but price is 0(null). Is it because they deleted the sub?(Also if Status is Active). Is it possible that someone continue the membership without paying?Thanks all!Daniel Sadun
I’ve properly installed RevenueCat in Flutter and connected Play Store and App Store properly in the dashboard. I’m still getting these error.D/[Purchases] - DEBUG( 6650): ℹ️ Debug logging enabledD/[Purchases] - DEBUG( 6650): ℹ️ SDK Version - 4.6.0D/[Purchases] - DEBUG( 6650): 👤 Initial App User ID - nullD/[Purchases] - DEBUG( 6650): 👤 Identifying App User ID: $RCAnonymousID:538da561a80b40f4a23aa08aa6709f83D/[Purchases] - DEBUG( 6650): ℹ️ Deleting old synced subscriber attributes that don't belong to $RCAnonymousID:538da561a80b40f4a23aa08aa6709f83D/[Purchases] - DEBUG( 6650): ℹ️ App foregroundedD/[Purchases] - DEBUG( 6650): ℹ️ PurchaserInfo cache is stale, updating from network in foreground.D/[Purchases] - DEBUG( 6650): ℹ️ Offerings cache is stale, updating from network in foregroundD/[Purchases] - DEBUG( 6650): 😻 Offerings updated from network.D/[Purchases] - DEBUG( 6650): ℹ️ Skipping updating pending purchase queue since BillingClient is not connected yet.D/[Purchases] - DEBUG( 6
my app working fine in ios and android but from yesterday i have a issue in ios failed to get offerings None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).This could be due to a timeout, or a problem in your configuration.my app is in production from many month . i didn’t change thing in revenuecat or apple Store .
Hello, I’m having some difficulties with Amazon IAP and I’m wondering if I could use Revenue Cat to fix my problems… Only thing is, I downloaded the amazon zip and i’m very confused about it lol. How do i use this? I was trying to make IAP on my Amazon Firestick app with Unity, but it’s not getting any callbacks. App Tester says “Purchased” in the transactions, but it never fulfills the purchase. Nor does it call the purchase failed callback… If someone could help me either get revenue cat working or if someone has any insight into what i might be doing wrong that’d be great. I’ve been wondering if maybe I’m just not debugging it correctly, maybe the IAP works and App Tester is messing up or something. I am running it in sandbox mode, but… This is my script if anyone can figure it out from just this lolhttps://pastebin.com/kzpQ8DhXThanks
Let’s say we have a 3 month offer in the App Store for a monthly subscription.From the documentation, it seems clear that the `offer_code` field will be present on the webhook that corresponds to the first purchase made where the offer code was redeemed (the first month in my example above).What is not clear is whether the following two renewal webhooks will have `offer_code` populated as well, since they would be discounted due to the redemption of the offer code.So to visualize it, I’m wondering if it would look like:Month 1 (offer code redeemed) - `offer_code` is presentMonth 2 (discounted renewal) - `offer_code` is presentMonth 3 (discounted renewal) - `offer_code` is presentMonth 4 (renewal at full price) - `offer_code` is not presentORMonth 1 (offer code redeemed) - `offer_code` is presentMonth 2 (discounted renewal) - `offer_code` is not presentMonth 3 (discounted renewal) - `offer_code` is not presentMonth 4 (renewal at full price) - `offer_code` is not presentCan anyone tell m
So I have everything connected and working and I just recieved a notice that my trial is ending with Google Cloud. I am assuming this is the cost associated with the service account that was linked to Revenue Cat? Trying to find more information about this to better explain to my client
We would like to receive App Store Transaction IDs when calling the REST API https://api.revenuecat.com/v1/subscribers/app_user_idI have seen other posts where developers request this, and the response from ReveneCat has been to use the Webhook.I am aware that the ID is provided in the Webhook and we are using this, however, this is not a completely satisfactory solution.Issue 1: Missed Webhook CallbacksIf for whatever reason our server does not receive/process the webhook callback then we will never know the transaction/order ID. We have logic in our app and on our backend servers that calls the RevenueCat API’s to refresh/sync user’s subscriptions. Without a transaction ID we cannot guarantee the uniqueness of a subscription.Issue 2: Legacy MigrationWe are migrating from native implementations of our app to Flutter. In that effort we identified RevenueCat as a great solution. However, we still have legacy customers and our backed depends on using the transaction Id’s from the App Sto
Hello, I am upgrading a pretty old project build on Ionic/Cordova/Angular with latest packages, and I am encourteing an issue on Android.I upgraded my project to ionic 6 and Angular 14. I also upgraded all plugins with @awesome-cordova-plugins. RevenueCat plugins are also updated.package.json:```"@awesome-cordova-plugins/purchases": "^6.2.0","cordova-plugin-purchases": "^3.3.3",``` Everything works fine on iOS. I ran into an issue when I try to build for Android I upgraded minSdk to 31, and installed JDK 11.Ionic documentation says we must use JDK 8, but I can’t build anything too because it needs sdk >= 31. config.xml:``` <preference name="android-minSdkVersion" value="22" /> <preference name="android-targetSdkVersion" value="31" /> <preference name="android-compileSdkVersion" value="31" />``` terminal:```[cordova] /Users/user/Sites/project/ionic/platforms/android/app/src/main/java/cc/fovea/PurchasePlugin.java:386: error: cannot find symbol[cordova]
Hiya! Our paywall screen has a “[currency]0.00” — free option, with the currency based on offering?.availablePackages.first?.product.priceFormatter?.locale. With StoreKit 1, this properly returns the expected, matching locale, like Optional(en_US@currency=INR (fixed))But now that we’re starting to test out StoreKit 2 support, we get back Optional(en_US (autoupdatingCurrent))...when using a .storekit file with the storefront changed via Editor > Default Storefront. We can also reproduce this on device. It’s unclear to me if this would be a RevenueCat or a StoreKit 2 bug?
Sorry I am new here, building an app with some questions needed help :)My app has a subscription monthly with 7 days trial, and you have to subcribe to register an account.I am a bit confusing between 3 kinds of IDs: The user ID we create in our database, the App User ID provided by RC and how to know which user has paid in transaction from App Store Server Notifications. For UserID and RCID, at the first load when I call Purchases.configure(), RC will create a new random ID. Then in paywall screen, after subscribe successfully, I will register a new account in backend, and store this RCID. Now I have a pair of RCID-UserID, when user login to my app by UserID, I will use RCID to login to RC by Purchases.logIn("RCID"), so I can get the right info of getCustomerInfo(). so question is: am I on the right way? :) On the next month when subscription need to be renewal, if purchasing is successful, Apple will send to backend a transaction via “App Store Server Notifications”, so how I know th
Hi there!I’m trying to update cordova-plugin-purchases to a version that uses Google Billing Library version 4, as I can no longer submit to Google Play with my current version.I removed 2.1.1 that I was using and tried to install 2.4.2 with the following result:src-cordova % cordova plugin add cordova-plugin-purchases@2.4.2Installing "cordova-plugin-purchases" for androidInstalling "cordova-annotated-plugin-android" for androidSubproject Path: CordovaLibSubproject Path: appSubproject Path: CordovaLibSubproject Path: appInstalling "cordova-plugin-purchases" for iosPlugin dependency "cordova-annotated-plugin-android@1.0.4" already fetched, using that version.Dependent plugin "cordova-annotated-plugin-android" already installed on ios.Running command: pod install --verboseFailed to install 'cordova-plugin-purchases': Error: pod: Command failed with exit code 31 at ChildProcess.whenDone (/Users/XXXXXX/quasar/tptk2/src-cordova/node_modules/cordova-common/src/superspawn.js:136:25) at
@ryan You mentioned in this thread : Some developers choose to create multiple RevenueCat apps for different environments of the same bundle ID as well.I just wanted to check - if we want to have a staging setup to go with our apps staging environment that means we can test new products/entitlements/ offerings etc without affecting our Production apps - given the above detail we could effectively just :- Create a new Project (and suffix it’s name with STAGING for example) - Define our apps again using the same bundleids/package names - Setup products/entitlements/ offerings etc and test them independently of our Prod apps because we would have a new unique API keyIs that a valid way to essentially duplicate what we have for a staging setup?Are there any settings we should not re-use from our Prod Project or can it essentially be duplicated?Hope that makes sense, if you need more detail please let me know
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.