Get help with your SDK implementation.
Recently active
Hi! Thrilled for the new Web SDK even in Beta! Thanks.Regular checkout working in my test environment just fine. Google Pay gets to the screen like this: but there is an error in the console like this:Unable to download payment manifest "https://www.google.com/pay". Then the next screen continues with this error pay.js:181 Unsafe attempt to initiate navigation for frame with origin 'https://mydoman' from frame with URL 'https://js.stripe.com/v3/payment-request-inner-google-pay-792b02288231e9fd1…2Fsettings%2Fmypage&controllerId=__privateStripeController8321'. The frame attempting navigation of the top-level window is sandboxed, but the flag of 'allow-top-navigation' or 'allow-top-navigation-by-user-activation' is not set.Any ideas? Wb @
I have a Flutter app using last version of RevenueCat libs (purchases_flutter and purchases_ui_flutter, both at 6.29.2). The Purchases instance is configured during app initialization:Future<void> setupRevenueCatSDK() async { await Purchases.setLogLevel(LogLevel.debug); late PurchasesConfiguration configuration; if (Platform.isAndroid) { configuration = PurchasesConfiguration("XXX"); } else if (Platform.isIOS) { configuration = PurchasesConfiguration("XXX"); } await Purchases.configure(configuration); logger.d("RevenueCat / Purchases configured ${configuration.appUserID}");}void main() async { WidgetsFlutterBinding.ensureInitialized(); // ... await setupRevenueCatSDK(); // ... runApp} Then I call the UI lib to open the Paywall, after the user taps a button.response = await RevenueCatUI.presentPaywall() This flow works well for all devices I could test (both iOS and Android) and I had many multiple transactions from other users. Still, I'm seeing dozens of multipl
Description:According to the RevenueCat documentation, attributes are supposed to be synced with RevenueCat servers when Purchases.configure() is called, the app is backgrounded, and when purchases are made or restored. However, in our Flutter app, we are encountering issues with attribute syncing and configuration: Syncing on Configuration and App Backgrounding: We've noticed that attributes are not being synced with RevenueCat servers when Purchases.configure() is called or when the app is backgrounded. Despite following the documentation, attributes are only synced when purchases or restores are made. syncAttributesAndOfferingsIfNeeded() Method Unavailable in Flutter SDK: The documentation mentions using the syncAttributesAndOfferingsIfNeeded() method for ensuring immediate syncing of custom attributes. However, this method seems to be available only for Android and Swift native code and is not accessible in the Flutter SDK. Issue with Existing Customers: We need to set attribut
When I try to upgrade a subscription using `Purchases.purchasePackage(package)`, it doesnt work. The new `CustomerInfo` still has the old active entitlement. Restarting the app, restoring purchases do not work. There are no errors either, it shows that the purchase was successful. When I try to subscribe again, it says `This product is already active for the user.`. This does not happen on Android, only iOS.
Scenario DescriptionI am using the "Keep with original App User ID" feature as it suits my requirements. Here are the steps I followed in a sandbox environment:User A purchased a monthly subscription using Apple account X. After a successful purchase, User A logged off. User B then attempted to purchase a yearly subscription using the same Apple account X.After the payment was charged to User B, RevenueCat threw the error: RECEIPT_ALREADY_IN_USE.QuestionHow can I restrict the user from making a payment if the subscription is already linked to another user, thereby preventing the payment charge before it occurs?
I need a Hard Paywall with React Native. The close button causes a lot of problems.One solution is to create a button that says “Next” that will launch the Paywall if needed.This some what works, but the user is still allowed to close the paywall after they pay, and while its still processing the payment which takes up to 15 seconds. Then the flow is completely mixed up. I don’t get any feedback until the payment has completed and changed their entitlement. Is there any solution for this?
I am trying to use Purchases in an expo project.If I build with xcode, everything is fine. However, we rely on the expo development build during development. Because ain’t nobody got time for xcode. If I try to run with the expo dev server (npx expo run:ios) then I get the error ERROR Invariant Violation: `new NativeEventEmitter()` requires a non-null argument., js engine: hermes this happens at the time of import of Purchases (import Purchases from “react-native-purchases”).I followed the standard installation and usage for expo.It looks like this might be some sort of incompatibility with NativeViewGestureHandler because that also starts generating errors only when I try to import Purchases.Note that I know that purchases probably won’t work in this mode, at least on the simulator, but it shouldn’t crash the app. That makes for some really challenging dx.
I integrated the library successfully for iOS and wanted to also do the same with Android. However, when I upload my build to the play console, I get the following error:"We have found that at least one of the app bundles included in this release uses the following Play Billing Library versions:AIDLThese versions of Google Play Billing are no longer supported. Upgrade to a supported version to publish this app. More information" (translated)I have checked the dependencies, only v 6.0.2 appearsI added this line to the manifest “<uses-permission android:name="com.android.vending.BILLING"/>”, other than that I didn’t add anything else.
I have an existing subscription app that’s over a year old that has always used RC. I’ve tested purchasing and restoring in the past before. I wanted to give RC paywalls a go and overall it’s been very easy to implement. However, I’m hitting a strange situation that I can’t figure out: the restore button on the paywall isn’t working as expected.I was already displaying a sheet with my own paywall and I just swapped in PaywallView instead inside the sheet.If there’s currently not a sub active I can purchase (sandbox) either of the two subscription options I have via the paywall without a problem. When the purchase goes through the sheet containing PaywallView gets dismissed.However, when I click the restore link I get a popup that says “Purchases restored successfully!”. The paywall is NOT dismissed. When I close the paywall manually the app (correctly) acts as if no subscription is active since there was nothing to restore.If I put my paywall I created myself (which calls Purchases.
I get back results on V1 when I get customers but not on V2, V2 states “ONLY FOR WEB SUBSCRIPTIONS USING REVENUECAT BILLING”.Does that mean just keep using V1 to get customer subscriptions only, and if so, will V2 ever get discontinued or this added?ie:v1:api.revenuecat.com/v1/subscribers/useridv2:api.revenuecat.com/v2/projects/projectid/customers/userid
Is there a way to get this 33% discount text/percentage in the native SDKs? I’d like to show this discount percentage in my app’s other screens. It has a huge impact on the revenue
Setting the mixpanelDistinctId for the first time works fine, but when trying to set it again, an error occurs, indicating that the "MixPanel Distinct ID cannot be modified."However, after clearing the mixpanelDistinctId and then setting it again, it works fine.I'm not sure where the problem is. [Purchases] - DEBUG: ℹ️ Found 1 unsynced attributes for App User ID: $RCAnonymousID:xxx[Purchases] - DEBUG: ℹ️ Unsynced attributes: ["$mixpanelDistinctId": [SubscriberAttribute] key: $mixpanelDistinctId value: xxx setTime: 2024-06-03 03:38:51 +0000][Purchases] - ERROR: 😿‼️ Error when syncing subscriber attributes. Details: The operation couldn’t be completed. (RevenueCat.BackendError error 0.) UserInfo: [:][Purchases] - ERROR: 😿‼️ One or more of the attributes sent could not be saved. ["$mixpanelDistinctId": "MixPanel Distinct ID cannot be modified."]
Hello, I implemented paywall using revenue cat version 4.41.1 on iOS but on Iphone SE the paywall is not displaying correctly, image is not visible and title and subtitle are cut off.What should I do?Thank you!
My Apple Watch app has an companion iOS app, my steps are: Purchase subscription on iOS app (with a success) Try to call `restorePurchase` method on my Apple Watch app It always shows messages like “receipt not valid” I am using StoreKit to test on both simulator and real device, both doesn’t works and shows “receipt not valid” messageIf I don’t use StoreKit method to test, calling `restorePurcahse` or `purchase` always shows message telling me to login on iPhone Apple Watch app: Does anyone know how to correctly check if a user has purchased a subscription on Apple Watch (with a companion iOS app)? Thank you
I'm currently Promotional Offer using RevenueCat into my React Native app and encountering an issue with purchasing discounted packages. Specifically, I'm using the Purchases.purchaseDiscountedPackage(selectedPackage, paymentDiscount) method. During unit testing on a physical device, I'm consistently getting an error stating "couldn’t find package."Has anyone experienced a similar issue or have insights on how to resolve this? What steps can I take to ensure that the selectedPackage and paymentDiscount are correctly identified and processed during unit testing on a physical device locally?Additional Details:The selectedPackage and paymentDiscount are being correctly fetched and displayed in the app. Regular purchases without discounts work as expected. The issue only arises when trying to purchase a discounted package. Testing is being conducted on a physical device locally.Code Snippet:if(selectedPackage.product.discounts.length > 0) { const paymentDiscount = await Purchases
How to show Paywall in Java implementation. I’m trying to implement RevenueCat via Java and can’t find the docs to show Paywall. Kindly guide me
Hi people,first of all to creators, thanks for the awesome product! Just keep up with good work!I have a question about, what happens if we clear our purchase history in our AppStoreConnect?I saw this post but I wanted to clarify what happens when we go in AppStoreConnect to:Users and Access → Sandbox → Test Accounts → Edit → Clear purchase history?Would this clear purchase history in RevenueCat Sandbox data too?
Hello. I granted my Google account a promotional entitlement from the RevCat console for testing in my app during development (running in an emulator). I canceled it 7 days ago, but RevCat is still returning the promotional entitlement as Active. (I have run the app countless times over the past week.)This is what the dashboard shows for my user: And this is what RevCat is showing when the app runs: The Flutter code pulling in the above data is simply:customerInfo = await Purchases.getCustomerInfo(); Can someone explain why this is happening, and how I can ensure that my app is pulling in the correct entitlement data?Thank you.
Asking this again since comments have been closed and not clear update has been provided. When does the RevenueCat Billing and Web SDK support multi-currency? Documentation states:Only USD is currently supported (multi-currency support will follow later) I understand it’s on the roadmap but we need a clearer timeline please.
I’m trying to test a new introductory offer but it’s proving to be a bit more difficult than anticipated.I’m running my scheme using a StoreKit Configuration file in the simulator (although the same happens without the file on a device with sandbox user). When testing for eligibility, I get “unknown”. I’ve tried deleting the user from the dashboard and deleting the StoreKit transactions from Xcode > Debug > StoreKit but it doesn’t change the outcome.The only thing that works is to force StoreKit 2 with .with(usesStoreKit2IfAvailable: true) which I know is deprecated.This is problematic because now I’m wondering if my app is showing introductory offers correctly to my live users. Any guidance on this would be greatly appreciated! 🙏 As a side-note, this is made more complicated by the fact I’m deploying that intro offer using targeting and custom attributes. When deleting a custom attribute (or a customer), it looks like it’s no longer possible for my app to set a value for those
So , I've been trying to get the paywall_ui working in my Flutter project. Using:purchases_flutter: ^6.29.2purchases_ui_flutter: ^7.0.0-beta.1I’m able to show a paywall perfectly fine. So, after the set-up, I was hoping to use PaywallVIew to call some methods based on events. But the specified options, like “onPurchaseCompleted,” didn’t exist for this version of the plugin, which seems odd. In an attempt to resolve the issue, I reverted to purchases_ui_flutter: ^6.29.2, which does include the options I needed in PaywallView.Now the problem is that while trying to build the project I get this error and the build fails.e: file:///Users/apple/.pub-cache/hosted/pub.dev/purchases_ui_flutter-6.29.2/android/src/main/kotlin/com/revenuecat/purchases_ui_flutter/PurchasesUiFlutterPlugin.kt:96:16 This declaration needs opt-in. Its usage must be marked with '@com.revenuecat.purchases.ui.revenuecatui.ExperimentalPreviewRevenueCatUIPurchasesAPI' or '@OptIn(com.revenuecat.purchases.ui.revenuecatui.Exp
Context:We are currently facing issues with our in-app purchases that have not yet been approved and are still in the "Ready to Submit" stage in App Store Connect. We are currently using the getOfferings method from the React Native IAP library, react-native-purchasesCurrent Setup and Observations:StoreKit Configuration Testing: When testing with the StoreKit configuration on the Simulator, transactions go through successfully and are visible in RevenueCat. This indicates that our setup and integration with RevenueCat are functioning correctly in the simulator environment. App Store Connect Sandbox Testing: When testing using the App Store Connect Sandbox, by navigating to Settings > App Store > Sandbox Account > Test Transactions, the subscriptions appear in the test accounts as expected. However, these sandbox transactions do not show up in the RevenueCat Recent Transactions. This is a critical issue for us, as we need to ensure that transactions are correctly logged and v
Hi,I have an existing Flutter based, iOS and Android app which I am now working on deploying to Web. Since RC Flutter purchase SDK unfortunately does not support web, I integrated Stripe and am now working on connecting/syncing the Stripe purchases to RC since RC validates in app that a user has an active subscription.My app offers both in app one time purchases as well as subscriptions. I have created both in Stripe and linked in RC. I installed the RC App for Stripe as documented.Now I am uncertain about the following:Will any purchases (one time AND subscriptions) automatically snyced to RC via the RC Stripe App? If yes - Does this only work in Live Mode? How would I go about testing it best if Stripe TEST Mode is not supported? Setting all products to 0$ or 1 Cent seems misleading. If No - If the RC App for Stripe does not do so and I need to implement my own webhooks and inform RC via their Webhook, than I would not understand what the RC App for Stripe Does. Just to make sure:
I have a quasar app that uses capacitor to create iOS apps. I am new to Revenuecat and trying to figure out the installation flow. The only relevant docs I see are the react or iconic/capacitor apps. I would think I need a vue flow, though. I see this, but the link to the vue doc goes to the Iconic/React docs.
purchases_flutter: ^6.29.0purchases_ui_flutter: ^6.29.0platform :ios, '12.0' (Podfile, pod install issues if trying to raise to ‘15.0’) Too much space above packages, how can I get rid of it? Seems to be some padding? Template 5 (was forced to set title + 1 feature): Code:void presentPaywallFooter(BuildContext context) async {final offerings = await Purchases.getOfferings();final offering = offerings.current; showModalBottomSheet(context: context,builder: (BuildContext context) {return PaywallFooterView(offering: offering,onPurchaseStarted: (Package rcPackage) {debugPrint('Purchase started for package: ${rcPackage.identifier}');},onPurchaseCompleted: (CustomerInfo customerInfo, StoreTransaction storeTransaction) {debugPrint('Purchase completed: ${storeTransaction.transactionIdentifier}');},onPurchaseError: (PurchasesError error) {debugPrint('Purchase error: ${error.message}');},onRestoreCompleted: (CustomerInfo customerInfo) {debugPrint('Restore completed');},onRestoreError: (Purchase
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.