Discussion and help from anything related to RevenueCat.
Recently active
I integrated Revenuecat successfully in my Flutter App. When I make a test purchase from the app it gives the following terminal error: D/[Purchases] - DEBUG(18782): 💰 kw_100_1y_1 - SkuDetails: {"productId":"kw_100_1y_1",etc...}D/AudioTrack(18782): correcting timestamp time for pause, currentTimeNanos: 4563963963773 < limitNs: 4573594802304 < mStartNs: 4573694802304D/[Purchases] - DEBUG(18782): ℹ️ Found 0 unsynced attributes for App User ID: 3oTDvlvRsiuuuuuuuuuuuuI/System.out(18782): (HTTPLog)-Static: isSBSettingEnabled falseI/System.out(18782): (HTTPLog)-Static: isSBSettingEnabled falseD/AudioTrack(18782): correcting timestamp time for pause, currentTimeNanos: 4563963963773 < limitNs: 4573594802304 < mStartNs: 4573694802304W/AudioTrack(18782): getTimestamp() location moved from kernel to serverW/[Purchases] - WARN(18782): ⚠️ Unable to start a network connection due to a network configuration issue: https://api.revenuecat.com/v1/receiptsD/[Purchases] - DEBUG(18782): ℹ️ API
If I have an existing billing system and I import my user data (all iOS receipts) via the /receipts RevenueCat API how will that affect the months MTR? I’m assuming that RevenueCat calculate MTR based only on events that happen in the current month e.g. non-consumable purchases, subscription renewals etc and not things that have happened in the past before I opened my RevenueCat account. Just want to double check I don’t run up a bill somehow by importing existing transactions :)
I'm testing on a physical android device, and have behavior I can not explain:I purchase a subscription The subscription is automatically stopped after 5 minutes I then try to purchase it again but I get errorcode ITEM_ALREADY_OWNEDI can close the app and try again, but still get the error codeIf I refresh with the login method, the problem is still present, I am no longer entitledIs there some kind of server - timing issue going on here?After some (?) time I am able to purchase a subscription again, unsure when things are matching up again.Or maybe there is there a problem with me checking the validity? C# code:ExpirationDate = ToDateTime(entitlement.ExpirationDate);private DateTime ToDateTime(Java.Util.Date date) { var baseValue = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); return baseValue.AddMilliseconds(date.Time); }
Not having receipts is a valid situation (If I use a blank account / device)To me it seems like this situation should not throw an exception. The fact that RC throws this error caught me a little off guard becausethe getting started code samples do not handle this error as I was testing on a physical device that had previously been used for testing (and thus did not throw this error) and did not see this error until later.
Following the docs and starter project for iOS-SwiftUI its fairly straightforward in implementing purchases in apps.However in StoreKit v1 you are able to switch on the SKPaymentTransaction to get the transactionState:case .purchasing: case .purchased: case .restored: case .failed: case .deferred:This is great as for each product we can get the status when a user is attempting to buy a product.When I was using StoreKit v1, I was able to add an animation to the product when it was in the purchasing state (like the App Store spinner), and then once it had been purchased I was able to disable the button and mark it as “Purchased” instead of the price.I’ve been trying to replicate this with RevenueCat API but cant seem to be able to figure out how to do it - so I’m looking to the community for some help 😅 Code that I have:// -- MainView...if let availablePackages = subscriptionManager.offerings?.current?.availablePackages { ForEach(availablePackages) { package in PackageCell(package:
As shown in the image, the time that I captured the photos has already passed the `expireationDate`However the `isActive` still returns true Can somebody help? I’m using Xcode 14 Beta 3, iOS 16.1, latest version of RevenueCat
Hello, when I’m trying to buy the product this error is showing up: E/flutter (18749): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(5, The product is not available for purchase., {code: 5, message: The product is not available for purchase., readableErrorCode: ProductNotAvailableForPurchaseError, readable_error_code: ProductNotAvailableForPurchaseError, underlyingErrorMessage: Couldn't find product.}, null) Everything is set and should work.
I purchase a package with flutter and its done in google play, but failed to sync data with revenuecat after this.purchases_flutter: ^4.3.0 CustomerInfo customerInfo = await Purchases .purchasePackage(package); W/[Purchases] - WARN(24709): ⚠️ Unable to start a network connection due to a network configuration issue: https://api.revenuecat.com/v1/receiptsD/[Purchases] - DEBUG(24709): ℹ️ API request started: POST /receiptsD/[Purchases] - DEBUG(24709): ℹ️ API request completed with status: POST /receipts 503E/[Purchases] - ERROR(24709): 🤖‼️ There was a credentials issue. Check the underlying error for more details.
I have a vanilla monthly/annual subscription plan on my app. In Stripe it’s 2 products, each with one price.I’m configuring the Stripe customer portal, where I will send customers to cancel their plans. Stripe allows me to let them “Switch plans”.Is this supported in RC or should I only let users cancel and start a new subscription?Thanks!
Om building a Flutter app and using the “purchases_flutter” package to integrate with RevenueCatI can’t see a method within this package to refund a prior purchase. Please advise whether this is supported.
Hi,I’ve recently launched my app with subscriptions and I’ve received a couple of ‘trial start’ events and I’ve noticed a strange thing. If I go to the customer profile I can see a ‘Converted from trial’ event 8 hours before the actual event. Is this intended? If so, how does RC knows that the customer will convert, what if there is a billing issue?RegardsErol
Test user: I get correct data right after the purchase until the first renewal, after that, my monthly subscription is missing in purchaserInfo.entitlements.active even though it is still active in Play Store. Please anyone help me
I am trying to port a RevenueCat v3 project to v4 but these messages appear during compilation:/Users/ham/Desktop/Development/Mac/Libraries/revenuecat/Build/iOS/RevenueCat.framework/Headers/RevenueCat-Swift.h/Users/ham/Desktop/Development/Mac/Libraries/revenuecat/Build/iOS/RevenueCat.framework/Headers/RevenueCat-Swift.h:4308:63: error build: Cannot find protocol declaration for 'SKPaymentQueueDelegate'/Users/ham/Desktop/Development/Mac/Libraries/revenuecat/Build/iOS/RevenueCat.framework/Headers/RevenueCat-Swift.h:4365:62: error build: Cannot find protocol declaration for 'SKProductsRequestDelegate'/Users/ham/Desktop/Development/Mac/Libraries/revenuecat/Build/iOS/RevenueCat.framework/Headers/RevenueCat-Swift.h:5748:41: error build: No type or protocol named 'SKPaymentTransactionObserver'/Users/ham/Desktop/Development/Mac/Libraries/revenuecat/Build/iOS/RevenueCat.framework/Headers/RevenueCat-Swift.h:5758:60: error build: Cannot find protocol declaration for 'SKPaymentQueueDelegate'/User
Hi - if a users subscription expired (Apple App Store) and could not renew but we have grace period turned on, will the entitlement still have isActive as true during the duration of the grace period (desired outcome), or do we need to do some extra checks for the grace period when isActive == false. Thanks
Hey.We have defined 3 consumables, each one with it’s own price. There are multiple items to purchase in our app and because we want them to be dynamic, they’re all linked to one of the specified consumables, based on their price. The problem I'm seeing is the following. I start the app and buy one of the items (Item 1) that is linked with one of the consumables. The purchase goes through and I verify the purchase with our backend and set the item to “purchased”. If I then find another item (Item 2) that is linked to the same consumable. When calling Purchases.shared.purchase(), the SDK automatically returns the transaction I made before for the item 1, instead of going through the purchase flow. This fails the verification on our backend and the user is unable to buy the Item 2.This only occurs if the app session stays the same. If I close the app and reopen it, I can buy Item 2 without a problem.Is there a way to clear the cache or somehow force the SDK to always try the purchase?All
We have an iOS account that is not able to restore purchase. This seems to be spurious where restoring isn’t broken for everyone, but we have had some other bug reports for iOS as well. This particular user restarted their account where their current appUserId is `IGw_6GzTANk5oN3yJWi5MXkCg4n1`, but it was a different appUserId when they originally purchased the subscription. We are using Flutter, and I’ve pasted the production `PurchaserInfo` object that we get. For some reason RevenueCat seems to believe the subscription expired 9/29/2022 but the user’s App Store shows it should expire 3/20/2023. final PurchaserInfo purchaserInfo = await Purchases.restoreTransactions();// PurchaserInfo we logged from testing in productionPurchaserInfo(entitlements: EntitlementInfos(all: { plus: EntitlementInfo(identifier: plus, isActive: false, willRenew: false, latestPurchaseDate: 2022 - 09 - 29 T12: 46: 56 Z, originalPurchaseDate: 2022 - 09 - 29 T02: 43: 03 Z, productIdentifier: finch_plus_yearly_1,
I am developing an iOS app and I am using .getCustomerInfo() to retrieve the current subscription state as suggested in the Documentation.The SDK will update the cache if it's older than 5 minutes, but only if you call getCustomerInfo(), make a purchase, or restore purchases, so it's a good idea to call getCustomerInfo() any time a user accesses premium content. However, the 5 minutes “delay” causes sometimes dubious experiences.If, for example, a user has just purchased something, it is possible that he will not be able to access the content he has just purchased for a while because he is still stored in the cache as a non-purchaser.Is there a way to force a network request and bypass the cache?I would only want to do this directly after a purchase, so that the data is up to date again.Probably there is a very simple way and I'm just on the fence?😅Thanks in advance!😊
I want to export all purchase transactions including past transactions.In RevenueCat GUI console, “Customer History” page shows every transactions.https://www.revenuecat.com/docs/customer-historyHow can I export such transactions ? Which plan? Thanks
When I look at a users detail in the customers tab (this URL: https://app.revenuecat.com/customers/) the entitlements section (in the top right of the page) always just shows “no current entitlements” even though the user I searched for has some active entitlements. I verify the user has some entitlements by manually calling the RevenueCat API via code with the same user ID and getting the CustomerInfo object that list all of the active entitlements. It makes testing a bit annoying that this data never seems to update. I’ve tried refreshing the page after multiple hours (over 12) and nothing still shows up. This is Sandbox data, does that make a difference? Thanks
Had some questions regarding iOS-specific empty product offerings:Is there anything specific we need to do within RevenueCat to let RevenueCat know that there is a newly renewed Paid Apps Agreement for App Store? How long does it take for RevenueCat to be able to register a newly renewed Paid Apps Agreement? We renewed the agreement in App Store Connect about an hour ago but we are still seeing errors. We haven’t created any new product offerings. Is there anything else we should consider to debug beyond what’s been mentioned in More context below:-------------------We’re using the Flutter version of RevenueCat and recently had a spike in iOS-specific errors where RevenueCat couldn’t fetch our products. The error isn’t specific to our latest app version.Non-fatal Exception: FlutterErrorPlatformException(23, 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
It seems to me that the process of testing app integration with RevenueCat is unnecessarily complicated due to the underlying integration with Google Playstore et al. Have you thought about supporting a RevenueCat test mode that mocks the Playstore connection? That would at least allow me to test the app to RevenueCat links irrespective of what happens with Google Playstore.
Hi, everyone this is my first question in RevenueCat Community :) I have a non-consumable in app purchase in my iOS AppWhen i click purchase no payment sheet shows up just like that 👇but purchase process is successfully how this is possible
I’ve submitted my app to the Apple App Store and keep getting rejected for the error “Receipt is missing”.How can I simulate the exact method Apple uses to test apps? Whenever I test using either:Xcode + a physical device + sandbox account or TestFlight + non-sandbox App IDthe subscriptions go through successfully. Hence I have a few questions: How do I replicate the error the app review team get so I can debug? In my scheme settings through Xcode before I submit my app, do I need to set the field StoreKit Configuration to “None”? Or can I leave this selected on my StoreKit config file when I submit my app? How do I use this receipt validation link? https://www.revenuecat.com/apple-receipt-validation/. There are no directions for use on the website. What do I need to enter in the first field which states “Paste your receipt”? I’ve been given this link by the App Review team. https://developer.apple.com/library/archive/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016
I have seen that there is a DocC generated website for documentation. Is it possible to get the generated content also in the Documentation window of xcode(like when docs are generated inside the project, for the project)? Thanks!
Trying to purchase package in the Sandbox (with no products in Appstore, only in StoreKit), everything seems to be set up fine. It results in success message “Your purchase was successful”But after tapping okay an error happens which says “The receipt is not valid”2022-10-11 17:42:27.282308+0300 lumio[79672:5449989] [Purchases] - DEBUG: ℹ️ Vending Offerings from cache2022-10-11 17:42:27.282698+0300 lumio[79672:5449989] [Purchases] - INFO: 💰 Purchasing Product 'monthly_sub' from package in Offering 'default'2022-10-11 17:42:27.286050+0300 lumio[79672:5449989] [Purchases] - DEBUG: ℹ️ PaymentQueue updatedTransaction: monthly_sub 02022-10-11 17:42:27.286381+0300 lumio[79672:5449989] [Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a transaction date - this is an issue with the App Store. Unix Epoch will be used instead.2022-10-11 17:42:27.286621+0300 lumio[79672:5449989] [Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a tr
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.