Discussion and help from anything related to RevenueCat.
Recently active
We just created a Customer List Export. But after decompressing the file all time stamps and other numbers were converted into E+12 numbers. Unfortunately this help article (Viewing Customer Lists Exports | RevenueCat Community) does not help . It seems that the time stamps are already converted to E+12 before extracting the file.I am using Windows & Excel.How can this issue be solved?
Hello - I’m trying to track down an inconsistency and hopefully someone here can help. I’ve noticed in the past week that when I look at the Conversions data, it shows that all trial conversions are zero: there are trials started, but all are labeled as Pending, even though the trial period has ended. When I look at individual days and users, I can indeed see users that converted from trial to subscriptions, but the charts that are supposed to aggregate this data don’t seem to reflect the data that I see by looking at individual users. Any help is appreciated!
Hello RevenueCat teamWe are using RevenueCat and we have some questions regarding webhooks.There is a new type EXPIRATION. The relevant subscription is terminated with this request. This means that all subscriptions that are no longer renewed will also be terminated by RevenueCat at the end of the subscription. As a result, we no longer have to worry about the termination on the backend side, regardless of the reported digital end date (“expiration_at_ms”). Is this assumption correct for iOS and Android? We have a relatively large number of requests PRODUCT_CHANGE that do not result in a subscription extension, not even in RevenueCat. Several such requests can come in succession without anything happening. What exactly is the purpose of the PRODUCT_CHANGE request? We are also facing the issue that PRODUCT_CHANGE and RENEWAL webhooks are not always sent in the same order to our backend system. Is this an issue on your side or is this possible to happen and we need to take care of it?Tha
Getting the following error on Play Console. We've detected this app uses an unsupported version of Play billing. Please upgrade to Billing Library version 3 or newer to publish this app. I am using the latest revenuecat library implementation 'com.revenuecat.purchases:purchases:4.3.1' FYI, we are using Dexguard .How to fix the error ?
Hi there,Just like many others, our team’s communication mainly rely on Slack and we love the RC messages so far. For now, only “Product” and “Revenue” will be displayed which is quite limited. I’d suggest:Display the offering id too if it’s not default. ( I think many people would love to monitor the special offering ) Display the country ( It’s currently displayed on a very high level on RC’s Customer Profile, I believe you guys agree it’s one of the key info to show )It’s been a while since this message feature has updated. Customization seems a perfect solution but before that, how about a little enhancement? It will greatly reduce the number of times we click on the user’s ID to find out the info.
Hi,I am using a web hook to track user subscription status on my server. The new EXPIRATION event seems like a good way to tell if the user should be downgraded or not. This raises a couple of questions though:If a grace period is defined in the App Store for billing issues, when does the EXPIRATION event get fired (assuming the billing issue is not resolved): before the grace period or after?Another question we have is: if a subscription is paused (possible only on Google Play), is this event (EXPIRATION) fired?Thanks!Yariv from the Bizillion team
Hello;I have implemented nine android apps without a problem but I had a problem on my tenth one. I believe I followed the same steps. I have read the article; but everything is correct according to it. I am testing on emulator. My closed test relase is approved about an hour ago. But I haven’t created a new app, I have updated an existing one. In my previous implemetations I even tested transactions when the closed track wasn’t approved. Here is the output;D/[Purchases] - DEBUG(28193): ℹ️ Debug logging enabledD/[Purchases] - DEBUG(28193): ℹ️ SDK Version - 4.3.3D/[Purchases] - DEBUG(28193): 👤 Initial App User ID - nullD/[Purchases] - DEBUG(28193): 👤 Identifying App User ID: $RCAnonymousID:8830d25f03024192be28a9d2c439fef8D/[Purchases] - DEBUG(28193): ℹ️ Deleting old synced subscriber attributes that don't belong to $RCAnonymousID:8830d25f03024192be28a9d2c439fef8D/[Purchases] - DEBUG(28193): ℹ️ App foregroundedD/[Purchases] - DEBUG(28193): ℹ️ PurchaserInfo cache is stale, updating from
Hi we rejected many times for this reason.I installed last version 3.12.8 Guideline 1.3 - Safety - Kids CategoryWe noticed that your Kids Category app includes analytics, advertising and collects, transmits, or has the ability to share personal information or device information with third parties. Specifically:- Your app includes third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, IDFA. We found that your app references the ASIdentifierManager API, which provides access to a user's IDFA, in the following location(s) in your binary:• /System/Library/Frameworks/AdSupport.framework/AdSupport• VodlyIt would be appropriate to remove all instances of “ASIdentifierManager” from your app, even if they are not utilized in your app's functionality.Next StepsTo resolve this issue, please remove this functionality or revise your app so that no personally identifiable information or device information is s
I get this warning in the console: “The value for FacebookAdvertiserIDCollectionEnabled is currently set to FALSE so you're sending app events without collecting Advertiser ID. This can affect the quality of your advertising and analytics results.” I believe I’m following the instructions for setting this stuff. On app load: await Purchases.setDebugLogsEnabled(true); await Purchases.setup(JumpspeakConfig.revenueCatApiKey); await Purchases.collectDeviceIdentifiers(); final facebookAppEvents = FacebookAppEvents(); await facebookAppEvents.setAutoLogAppEventsEnabled(false); final facebookAnonymousId = await facebookAppEvents.getAnonymousId(); if (facebookAnonymousId == null) { logError('Could not get anonymous Facebook ID'); } else { await Purchases.setFBAnonymousID(facebookAnonymousId); }FacebookAppEvents is a 3rd party library but I confirmed it gives me an anonymous ID (that error log does not get reached) I also confirmed the values we should see for the customer if thi
Hey there, we’ve been integration RC in our Flutter app the last couple of days. Until now everything worked fine and as expected. But suddenly I cannot perform purchases on iOS anymore. (Subscriptions) In fact the iOS Payment sheet is no longer showing up and sometimes I get an error of ‼️ The receipt is not valid.in the debug console. Sometimes this error doesn’t occur and it seems as if the purchased was successful. It doesn’t show up in the RC dashboard anyways in that case. (sanbox data is enabled) I did already try: Logout and Login in with the sandbox tester in iOS settings. Create a new sandbox tester Go back to a earlier git commit (to make sure, that the problem is not related to code changes on our side)Do you have any idea what I might do next? Best Raphael
I have a cross-platform app in both the iOS and Mac App Stores.The Mac and iOS versions have separate Bundle IDs and pre-date Universal purchases. The Mac app is an AppKit-based app.Is there a way to use RevenueCat to manage cross-platform purchases in this scenario?
PurchaserInfo{ entitlements: EntitlementInfos{ all: { 10People: EntitlementInfo{ identifier: 10People, isActive: false, willRenew: false, periodType: PeriodType.normal, latestPurchaseDate: 2021-11-05T18: 47: 21.000Z, originalPurchaseDate: 2021-11-05T18: 47: 21.000Z, expirationDate: 2021-11-05T19: 17: 18.000Z, store: Store.playStore, productIdentifier: 10_annual, isSandbox: true, unsubscribeDetectedAt: 2021-11-05T19: 07: 07.000Z, billingIssueDetectedAt: null }, 20People: EntitlementInfo{ identifier: 20People, isActive: true, willRenew: true, periodType: PeriodType.normal, latestPurchaseDate: 2021-11-07T22: 48: 18.000Z, originalPurchaseDate: 2021-11-07T22: 16: 23.000Z, expirationDate: 2021-11-07T23: 18: 18.000Z, store: Store.playStore, productIdentifier: 20_annual, isSandbox: true, unsubscribeDetectedAt: null,
The following is the console log after running a Purchase! [Purchases] - DEBUG: makePurchase[Purchases] - DEBUG: Purchasing product from package - 20_Annual in Offering Default[Purchases] - DEBUG: PaymentQueue updatedTransaction: 20_Annual 1000000905494521 ((null)) 1000000900724181 - 18.8.0 - [Firebase/Analytics][I-ACS023141] Purchase is a duplicate and will not be reported. Product ID: 20_Annual[Purchases] - DEBUG: Loaded receipt from url file:///private/var/mobile/Containers/Data/Application/394FDF88-2AA3-4C58-A311-3F9B84500545/StoreKit/sandboxReceipt[Purchases] - DEBUG: Found 0 unsynced attributes for App User ID: tu7gcKSaiUN7GmjYdbOSa94pPKs2[Purchases] - DEBUG: There are no requests currently running, starting request POST /receipts[Purchases] - DEBUG: API request started: POST /v1/receipts[Purchases] - DEBUG: API request completed with status: POST /v1/receipts 200[Purchases] - DEBUG: Serial request done: POST /receipts, 0 requests left in the queue[Purchases] - DEBUG:
hey!I have a hard coded text in my app (“One week trial”) now i want to change my introductory offer to 3 days how can I get this period in Revenuecat so I can set up its text dynamically ?
Hi as some users might have already posted, since upgrading one of my device to iOS 15, GetPurchaserInfo returns null. Rebooting the phone and running the app again will work but on renewal it will once again return null. All is well on iOS 14. Still using code from demo app https://github.com/RevenueCat/purchases-flutter/blob/master/example/lib/main.dart. Any idea of a fix.. ? Thanks ! ✓] Flutter (Channel stable, 2.5.1, on macOS 11.4 20F71 darwin-x64, locale en-GB)[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)[✓] Xcode - develop for iOS and macOS[✓] Chrome - develop for the web[✓] Android Studio (version 4.2)[✓] VS Code (version 1.60.1)[✓] Connected device (2 available) Pubspec: purchases_flutter: ^3.4.5Phone: iPhoneX (iOS 15.0)
Everything works just fine when testing locally and using testflight, but Apple keeps rejecting our App because their purchases fail with “INVALID_RECEIPT” according to our application monitoring.Any clue what could cause this issue?
I am receiving entitlement.isActive == true when expiration date is already long passed.Here’s my code:Purchases.shared.purchaserInfo { (purchaserInfo, error) in if let error = error { complete(.failure(error)) return } if let entitlement = purchaserInfo?.entitlements.all[Self.entitleId] { if entitlement.isActive { UserDefaults.subscriptionCache = SubscriptionCache(isSubscribe: true, lastCheckedDate: Date()) } complete(.success(entitlement.isActive)) } else { complete(.failure(IAPError.noPurchasedItem)) } }Here’s my result: The current time is 10/23 0:00 UTC Please help me with this issue.
Hi, I want to use my own UserIDs that I have migrated from MYSQL Server via API. I read the documentation but got confused at one point.I use the following to get the id of the logged in user in the application:response.data!.mainUser!.userId!So, during the installation of RevenueCat, am I use it like this to define my own user ids?await Purchases.setup("public_sdk_key", appUserId: response.data!.mainUser!.userId!);Thanks a lot…
Hi,I’m trying to clean up unnecessary entitlements on our RevenueCat account because it wasn’t setup correctly when it was done initially and was wondering if it’s possible to move a product to another entitlement and delete the incorrect entitlement without affecting the end user?So the situation is the following:There’s 2 entitlements (A and B), both unlock the same functionalities in the app. Most of our different product price subscriptions were added to entitlement A. There are 2 product subscriptions added to entitlement B and it was supposed to be just a product price test, so it’s still just unlocking the same functionalities as entitlement A, but entitlement B was created as a mistake that we didn’t realize at the time. I want to move the 2 subscriptions in entitlement B to entitlement A and then delete entitlement B. The app doesn’t explicitly check for entitlement A or B currently when it unlocks the functionalities in the app. Based on that info, would moving the product s
So we are facing a weird edge case in the app.Two months ago I created an entitlement "monthlysub" and assigned two products "monthlysub" from apple and "monthysub" from google play store (I know the naming convention is not ideal).So a user purchased the subscription "monthlysub" and cancelled it later on.Now we decided to create a new product for specific users with 30 days trial. We decided to name the new product "amplimontlysub" on both apple and google platforms.Next, I decided to add these products under the already exiting "monthlysub" entitlement. So now " monthlysub" entitlement has a total of four products.”Now when an old user who purchased two months ago but cancelled it decide to subscribe to "amplimontlysub" product and the transactions from the apple side go thru, the transaction is done I see a pop from apple "you are all set" then I get an error from revenuecat that "there is already another active subscriber using the same receipt".How do I handle this? we want to
I have several offerings setup and my code looks similar to the example for react native although there is an extra error handle as not all cases are handled in the doc example (please see below)What is happening is that I make the purchase, I get a pop up saying “You’re all set - your purchase was successful” but then the code checks typeof purchaserInfo.entitlements.active[this.props.sku] !== 'undefined' and its undefined. So for some reason the purchase is happening but I’m not getting it added to my active entitlements. This error only happens around 50% of the time, so the fact it works sometimes has made it impossible to debug. try { const { purchaserInfo, productIdentifier } = await Purchases.purchasePackage(this.state.package); if (typeof purchaserInfo.entitlements.active[this.props.sku] !== 'undefined') { this.completePurchase(this.props.sku); //Add to our database } else { Alert.alert('Oops!', 'We ran into an issue... please try again later.')
I have integrated RevenueCat into my Unity project version 2021.1.17. It worked fine on iOS but I can’t get it to work on Android. At first, I tried installing it alongside Unity IAP but it did not work. Then I tried removing Unity IAP but still cannot get RevenueCat to work. After launching my app, I get the following series of errors that show up on Android Logcat: First, this error from UnityAds (I need RevenueCat and UnityAds to work together): Error UnityAds com.unity3d.services.store.StoreBilling.asInterface() (line:7) :: Billing service stub not found: com.android.vending.billing.IInAppBillingService$Stub: Didn't find class "com.android.vending.billing.IInAppBillingService$Stub" on path: DexPathList[[zip file... Next, this error from RevenueCat: Error Purchases {"purchaserInfo":{"entitlements":{"all":{},"active":{}},"activeSubscriptions":[],"allPurchasedProductIdentifiers":[]…Finally, when I try to purchase something, this error from RevenueCat: Error Purchases {"error":{"code":
We want to append following attribution details to our users in RevenueCat:$mediaSource, $campaign, $adGroup, $ad, $keyword, $creative. We have found out how to map data from AppsFlyer for $mediaSource, $campaign, $ad from the following link:https://support.appsflyer.com/hc/en-us/articles/208387843-Raw-data-field-dictionary-V5-#field-availability-by-reporting-tool Even after contacting their support we’re not sure what data should we use for $adGroup, $keyword, $creative. Can you please help us?
Hello there,I've created Google API 2 times and I'm still getting this error even though I've waited 48 hours, can you help?
Hi I already tanfered my App to another Google play account… I updated the new credentials on the RevenueCat app settings page as well, and new purchased are working well but when people try to restore old purchases it does not work…. any idea how to solve it?
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.