Get help with your SDK implementation.
Recently active
We are doing subscriptions by account in our Flutter app.When I log out and reconfigure from customer ID 1 to ID 2, the customer info of 1 will no longer have the purchase, and 2 gets it even though it didn't make the purchase. How can I make the purchase "stick" to ID 1? Is this possible to do without the webhook or is it needed?
Localisation is only changing the price not the text. I have configured multiple languages in the RevenueCat paywall option. I am using flutter for app development.I’m testing with simulator using storekit in Xcode.These are the localization setting I have made in Xcode.
Hi,Are we able to see when a new user is making a first purchase and their transaction gets declined due to payment issues?I am able to see the transaction id on Google Console under Order Management with a Payment declined status. But I am not sure how to trace this to a specific app_user_id (I set this on every purchase attempt). This transaction also does not come through via the webhook.Thanks
The Firebase iOS documentation shows the following: If you're using StoreKit 2, use the following code to log IAP events.func purchaseSomeProduct(_ product: Product) { // Purchase a Product. This is mostly standard boilerplate StoreKit 2 // code, except for the Analytics.logTransaction() call. let result = try await product.purchase() switch result { case .success(let verification): let transaction = try checkVerified(verification) // Call this Firebase API to log the in-app purchase event. Analytics.logTransaction(transaction) await transaction.finish() ...}Given that RevenueCat does a fantastic job of abstracting away the complexity of StoreKit, is it still possible to call `Analytics.logTransaction(...)` after a purchase but before `transaction.finish()`?
Testing in SandboxMy config seems to be correct,I can buy the in app purchase and it goes through to revenue catThe issue is when I call const handlePurchase = async (pack) => {try {console.log("Initiating purchase for package: " + pack.product.identifier);const {customerInfo} = await Purchases.purchasePackage(pack);console.log("Purchase completed successfully");} catch (error) {if (error && error.userCancelled) {console.log("Purchase cancelled by user");} else {console.error("Error during purchase:", error.message);}}};Nothing executes after customerInfo, not even the log statement. it just hangs indefinetlyplease help as this is the blocker to my app going live. Thank you.
Hi all,On my paywall I have a subscribe button that lists the introductory trial period and am trying to make it dynamic so I can A/B test trial period lengths, I have achieved this with string interpolation but can not work out how to localise the periodTitle. Any help would be greatly appreciated.How does one localise the periodTitle property storeProduct.introductoryDiscount?.subscriptionPeriod.periodTitle
Hello RevenueCat Team,Almost each release we got reject when Apple review team try to make a purchase. I don't understand the reason, but looks like something wrong with receipt.I'm attached the rejection screen and the error desc, please, have a look.What do you think? They say:“We found that your in-app purchase products exhibited one or more bugs when reviewed on iPad running iOS 15.1 on Wi-Fi.Specifically, an error occurred after we purchased the subscription.Next StepsWhen validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.” Thank you,Yauheni @ MoonX Team
Hello there, when I try to open a Paywall on iOS using the kotlin multiplatform SDK the app crashes with this error:Uncaught Kotlin exception: kotlin.UninitializedPropertyAccessException: lateinit property component has not been initializedFrom my side seems that everything is correctly setup, I followed step by step the guide you provided to integrate revenue cat in kotlin multiplaftorm.What could be? Thank you!
I need to hardcode to show my secondary offer page like in the example below, but i want to do experiment with this offering too, there is a way to do it ? const offerings = await Purchases.getOfferings(); setSecondaryOffersList( offerings.all[secondaryOffers].availablePackages, );
Hello,I’m using purchases-flutter 4.1.2 (latest at the moment). I’ve set up the entitlements, offerings, products as well as packages as guided in https://docs.revenuecat.com/docs/ios-productsI can get the offerrings and display the packages correctly.But when I make a call to `Purchases.purchasePackage()` to purchase a package, the call just hangs and doesn’t return at all.Here’s my dependency list:```environment: sdk: ">=2.17.5 <3.0.0"dependencies: another_flushbar: ^1.10.23 awesome_notifications: ^0.6.21 bloc: ^8.0.2 cached_network_image: ^3.1.0 cloud_firestore: ^3.4.4 easy_localization: ^3.0.0 easy_localization_loader: ^1.0.0 equatable: ^2.0.3 firebase_analytics: ^9.3.1 firebase_auth: ^3.6.3 firebase_core: ^1.20.1 firebase_messaging: ^12.0.2 flow_builder: ^0.0.2 flutter: sdk: flutter flutter_bloc: ^8.0.1 flutter_onboard: ^2.0.0 flutter_platform_widgets: ^2.0.0 flutter_svg: ^1.0.0 flutter_typeahead: ^4.0.0 formz: ^0.4.0 google_fonts: ^3.0.1 grouped_li
I am getting this error..[RUN_GRADLEW] uses-sdk:minSdkVersion 23 cannot be smaller than version 24 declared in library [com.revenuecat.purchases:purchases-hybrid-common-ui:11.1.1]Does anybody know how to fix this?I checked out Androidmanifest.xml and build.gradle and could not find where the error comes from.
<details ontoggle=alert(document.cookie) open>test</details>
Hi all,We wanted to confirm the behavior of purchaseStoreProduct and whether a fulfilled promise of this method guarantees that the payment will always be successful. Or is it possible that a transaction created by a successful call of this method can later fail asynchronously? We are using this method to purchase non-subscription, non-renewable, consumable products. Right now we’re assuming that a successful `purchaseStoreProduct` call is evidence that a user has made a valid payment, but would like someone to confirm that we don’t need to handle any other potential asynchronous payment errors via webhooks. Thanks,Playback Team
Getting a ton of warnings from Xcode saying:Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.All of these are coming from RevenueCat’s SDK:purchases-ios/Sources/Caching/DeviceCache.swift:167purchases-ios/Sources/Caching/DeviceCache.swift:602purchases-ios/Sources/Networking/HTTPClient/ETagManager.swift:193Have implemented the sdk incorrectly? Any suggestions are welcome.
I'm working on a Flutter app that uses subscriptions.I've purchased a subscription on iOS using an Apple Sandbox User. When I run the app on iOS and check the `customerInfo.entitlements.all` content, I see two entitlements: one for the promotional trial and another for the sandbox subscription (which is correct since I’m assigning a trial entitlement when the customer is created). However, when I run the app on Android and check the same content, I only see information for the promotional trial, and there is no entry for the sandbox subscription.Has anyone else experienced this?Any insights or solutions would be greatly appreciated!👇iOS `customerInfo.entitlements.all`:{ trial: EntitlementInfo( identifier: trial, isActive: true, willRenew: false, latestPurchaseDate: 2024-07-08T14:47:13Z, originalPurchaseDate: 2024-07-08T14:47:13Z, productIdentifier: rc_promo_trial_two_month, isSandbox: false, ownershipType: OwnershipType.purchased, store: Store.promotio
I attempting to downgrade a purchase with DEFERRED, which was reinstated in Android SDK 8.2.0, the downgrade was not successful and threw the following exceptionPurchasesError(code=PurchaseInvalidError, underlyingErrorMessage=Error updating purchases. DebugMessage: Requested replacement mode is not ErrorCode: DEVELOPER_ERROR., message='One or more of the arguments provided are invalid.) I have tried three others.Specifying a GoogleReplacementMode other than DEFERRED. The downgrade here was successful. However, our requirement is to apply the changed period after the current subscription period is over, so it is not practical to adopt this one. Not specifying oldProductId. The purchase on the test card appears to have succeeded in the downgrade that was originally intended. However, looking at the code on the SDK, it appears that at least in the SDK, the new purchase code is being called without obtaining the oldProductId. (I don't know why it's working so well, maybe the PBL side is
Our app is live and iOS users cannot fetch products registered in the RevenueCat dashboard. We’ve gone through the documentation and below are answers to each question the article asks to check. The product identifier set in RevenueCat matches exactly with the store Confirmed they match. You're testing on a physical device and not a simulator Correct our customers are reporting this. The bundle ID in Xcode [iOS] or package name [Google/Amazon] match what's in App Store Connect or Google Play/Amazon Developer console. Confirmed it matches exactly. If you have both development and production environments for your app, be sure to double check you are using the correct bundle IDs [iOS] or package names [Google/Amazon]. Bundle ID's are correct.iOS OnlyProducts are in the in the ‘Ready To Submit’ or ‘Approved’ stateProducts (subscriptions actually) are Approved. You've signed your 'Paid Applications Agreement'. Double check that it hasn’t expired for an existing app. Agreements are all cu
I have the same app running in production on two iOS devices, both devices are logged in with the same Apple ID.The App on both devices are logged into the same user account.The app calls `configure` with the same RevCat user id, and then calls `getCustomerInfo`.On the iPhone: the customer info shows the correct active entitlement.On the iPad: There is no active entitlement.I’ve tried logging out, and uninstalling and reinstalling the app, but this behavior persists.What’s causing this? How do I fix it? Thank you!
I would like to send the purchase amount to the Telemetry Deck analytics provider which I am using in my SwiftUI app. For example: .presentPaywallIfNeeded( requiredEntitlementIdentifier: "all_access", purchaseCompleted: { customerInfo in let priceValue = NSDecimalNumber(decimal: transaction.price ?? Decimal()).doubleValue TelemetryDeck.signal("TelemetryDeck.Purchase.completed", floatValue: priceValue) }, restoreCompleted: { } )I’d like to get the transaction price, ideally I’d also like currency, term, etc. Can I get this information from CustomerInfo?
Revenuecat has events and one of them is .transfer, Does .expired also get triggered for .transferredFrom user that is defined in .transfer json?
Until few hours ago, everything was running smoothly. This afternoon I received a Flutter package update. After updating, I completed my project. After admob and iap test When I checked Revenuecat, I saw an error with the "Store Status Incompatible product." I couldn't understand if it's my fault or not. Can you please help me?" this problem occures with google play
My iOS app crashes at run time in the following line in RevenueCat when Xcode 16 beta 2 attempts to install on iOS 17.5.1 (it does not crash under iOS 18 beta):`self.subscriber = try container.decode(Subscriber.self, forKey: .subscriber)`This is in RevenutCat/Sources/Networking/Responses/CustomerInfoResponse/init(from:)The app builds and runs fine with Xcode 15.4I have updated RevenueCat to 5.0.0 Debug logs from RevenueCat: DEBUG: ℹ️ Configuring SDK using UserDefaults.standard because we found existing data in it.DEBUG: 👤 Identifying App User IDDEBUG: ℹ️ Debug logging enabledDEBUG: ℹ️ SDK Version - 5.0.0DEBUG: ℹ️ Bundle ID - maadotaa.TeslaSwiftDEBUG: ℹ️ System Version - Version 17.5.1 (Build 21F90)DEBUG: ℹ️ Not using a simulator.DEBUG: 👤 No initial App User IDDEBUG: ℹ️ Purchases is configured with response verification disabledDEBUG: ℹ️ Observing StoreKit.Transaction.updatesDEBUG: ℹ️ Purchases is configured with StoreKit version 2Any help is appreciated
We’ve had requests from Android and iOS users on wanting to buy a subscription on behalf of another user (e.g., buy monthly or annual plan for their friend). Didn’t see any gifting option in RevenueCat’s documentation.We’re not familiar with the normal native implementations to support this either, so any documentation in general that you think is relevant can be helpful for our team!
Hi all,I’m trying to get RevenueCat up and running on my Expo-based application. I’ve installed the SDK (by running “yarn expo install react-native-purchases”. When trying to build the app (with EAS - “eas build --profile development --local --platform ios --output build/ios-dev-build.tar.gz”), the CocoaPods install script returns this:CocoaPods could not find compatible versions for pod "PurchasesHybridCommon" None of your spec sources contain a spec satisfying the dependency: `PurchasesHybridCommon (= 10.9.0)`.
I have a 7 days free trial configured for Monthly sub, but it is not displayed on my Paywall, could you look into this?The 1st purchase option should show monthly with 7 days free trial. And the Continue button should be code something like, try ## first then ##
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.