Discussion and help from anything related to RevenueCat.
Recently active
Hi, I'm struggling to handle lifetime products with experiments and paywall v2.I have a flutter app that has some free and paid items. All paid items are lifetime/non consumable and each one unlock a different entitlement related only to that item. Let's say I have 2 offerings for each item to do some A/B testing. 1: The only way that I thought of using this 2 offerings for each different item is putting in the metadata the entitlement identifier for the offering and a boolean to say which one is the one active. Is that the only way to do it? As only one offering can be marked as default/current I couldn't see other way. Besides that I couldn't get offerings by its entitlement using the api in Flutter. 2: Now, let's say that I want to run Experiments for each item with this 2 offerings in the experiment. Will I get many offerings that are "current", each one with a different entitlement on the metadata? Or will I get only one as current? Having trouble figuring out this. Thanks for the
We’re trying to use Revenuecat Web billing with stripe. Our business is registered in India and this is the error we get. From what I see, we need to pass a description when creating a payment intent for stripe, which is probably something Revenuecat is doing in the backend, you can read about it here https://support.stripe.com/questions/failed-international-payments-from-stripe-accounts-in-indiaIs there something we’ve missed from our side or is it an issue?
I am using Jetpack Compose in my Android app. I have created a composable screen in which based on the user (Free or Premium), I show the paywall. Now, when the user makes a successful purchase, my composable screen is getting dismissed automatically. I am using the below code if the user is not premium. PaywallDialog( PaywallDialogOptions.Builder() .setOffering(currentOffering) .setFontProvider(CustomFontProvider(RobotoFontFamily)) .setDismissRequest { onNavigateUp() } .setListener( object : PaywallListener { override fun onPurchaseCompleted( customerInfo: CustomerInfo, storeTransaction: StoreTransaction ) { onPurchaseOrRestoreCompleted() } override fun onRestoreCompleted(customerInfo: CustomerInfo) { onPurchaseOrRestoreCompleted() }
I'm using Flutterflow with native integration. I've made all the necessary settings. My app is from Google and is in closed testing, all the subscriptions are configured correctly. I've already redone the project, recreated the products and the error is still the same.
Hi, I'm reaching out for help with an issue I'm facing regarding a new subscription product I added. I have previously configured subscription products in RevenueCat that are working successfully on both iOS and Android platforms. However, I recently added a new product with the identifier lite_professional_yearly. Here is the setup: The product is added in RevenueCat with the store-specific identifiers: iOS: lite_professional_yearly Android: lite_professional_yearly:lite-professional-yearly The product is added and active in both the Apple App Store and Google Play Console. It is included in the default Offering in RevenueCat. The product shows correctly on iOS devices, but does not appear on Android. Could you please help me investigate why this product is not appearing on Android while it works fine on iOS? Thank you!
## Environment Details - React Native: 0.79.2- react-native-purchases: 8.9.7- react-native-purchases-ui: 8.4.0- Platform: Android- Development Mode: Yes (Expo)- Build Type: Debug ## Issue I'm experiencing an issue with the RevenueCat SDK in my React Native app on Android. During development, the native module is not being properly detected, resulting in the error: ```LOG 📱 [RevenueCat] RevenueCat module check: RNPurchases=false, RCTPurchases=falseLOG 📱 [RevenueCat] Purchases object is not availableLOG 📱 [RevenueCat] RevenueCat native modules not found in NativeModules``` When attempting to initialize the SDK, I get the following error: ```WARN 📱 [RevenueCat] Configure failed but continuing with simulation: [TypeError: Cannot read property 'setupPurchases' of null]``` And when trying to use the SDK's methods: ```ERROR 📱 [SubscriptionContext] Error executing getOfferings: [TypeError: Cannot read property 'isConfigured' of null]ERROR 📱 [SubscriptionContext] Error executing get
I have a webhook set up and working. A user recently paused their subscription, and we received the relevant SUBSCRIPTION_PAUSED event through, which includes the date the subscription will auto-resume.But now the user says they have unpaused the subscription. We have not received any new event though, so from our end, in our customer database, their subscription status is still paused, meaning they are unable to use our app properly.Should we be receiving an event through when they unpause a subscription? And if so, what event type is it? I can’t find anything in the docs, so how are we meant to handle this situation?Thanks,Ian
On march 25th my appsflyer integration stopped working with the error Appsflyer ID not setHow can I make sure I am able to send start trial events to appsflyer?
My react native application takes around 30s to return data from the Purchases.getProducts() function call. There has been no issues until now regarding this and we haven’t changed anything regarding initialization. I am using react-native-purchases@7.28.1 which should be stable according to documentation.
Failed to build iOS app - Swift Compiler Error (Xcode): 'SubscriptionPeriod' is ambiguous for type lookup in this context, also on IOS emulator; already built apps cannot load subscription products, it keeps load indefinitely. Launching lib/main.dart on iPhone 16 Plus in debug mode...Xcode build done. 26.7sFailed to build iOS appSwift Compiler Error (Xcode): 'SubscriptionPeriod' is ambiguous for type lookup in this context...Pods/PurchasesHybridCommon/ios/PurchasesHybridCommon/PurchasesHybridCommon/StoreProduct+HybridAdditions.swift:47:50Swift Compiler Error (Xcode): 'SubscriptionPeriod' is ambiguous for type lookup in this context...ios/Pods/PurchasesHybridCommon/ios/PurchasesHybridCommon/PurchasesHybridCommon/StoreProduct+HybridAdditions.swift:64:54Could not build the application for the simulator.Error launching application on iPhone 16 Plus. Please i need assistance on this Thank You!
I have been trying to get the hybrid mobile app (iOS) working with revenuecat, react native SDK on the native side, and bridging with the web app running in the webview using the web sdk without success, and starting to wonder if it is actually possible if anyone knows?Thanks
My paywall has dynamic terminology for if the user has access to a 7 day free trial or not and I want to determine if the user is eligible for the free trial offer I have setup for my subscription on ios and android.My app is built in react native and I’m using the react-native-purchases library from RevenueCat.I know for IOS I can use the const eligibility = await Purchases.checkTrialOrIntroductoryPriceEligibility(["myPackage"]);but for Android this isn’t available/doesn’t work.For Android can I fetch the offerings and check the introPrice field in the product and if it isn’t null I can assume that they’re eligible to use the free trial ? const offerings = await Purchases.getOfferings();const annualPackage = offerings.all["myPackage"]?.availablePackages.find(pkg => pkg.packageType === "ANNUAL");if (annualPackage && annualPackage.product.introPrice != null) { setFreeTrial(true);}
Environment: React Native: 0.76.5 (bare workflow) react-native-purchases: 8.9.7 react-native-purchases-ui: 8.9.7 Platform: Android (Google Play Store only) RevenueCat API Key: (confirmed correct in code) Audit Log: paywall_published on Default (paywall) by Mukul Sharma @ 2025-05-12 05:34 PM UTC I’ve published a paywall UI via the RevenueCat dashboard and confirmed in the audit log that it’s live. In my React Native app I’m calling: export const ENTITLEMENT_IDS = { PRO: 'pro', PREMIUM: 'premium',} as const;export type EntitlementKey = keyof typeof ENTITLEMENT_IDS;const presentPaywall = useCallback( async (entitlement: EntitlementKey): Promise<PAYWALL_RESULT> => { setIsLoading(true); try { const result = await RevenueCatUI.presentPaywallIfNeeded({ requiredEntitlementIdentifier: ENTITLEMENT_IDS[entitlement], }); return result; } finally { setIsLoading(false); } }, [fetchCustomerInfo, fetchOfferings]); I see my originalAppUs
We've configured our subscription in App Store Connect with the following setup: Introductory Offer: 2-week free trial Promotional Offer (Offer Code): 20% discount for the first year While the paywall correctly reflects the free trial via RevenueCat, we're unable to read or display the discounted price from the promotional offer using any of the available variables or fields in the paywall.Is there a way to retrieve or display the discounted price from the offer code directly in the paywall? Or does RevenueCat currently not support surfacing this data?Any guidance would be appreciated.
Variables like ‘{{ product.offer_period_in_days }}’ & ‘{{ product.offer_price_per_month }}/month’ are showing the values in the Editor but not upon being loaded in the app.
export const setAttributes = async( req: Request, res: Response, next: NextFunction) => { try { const {customer_id} = req.params; const attributeUrl = `https://api.revenuecat.com/v2/projects/${project_id}/customers/${customer_id}/attributes`; const url = new URL(attributeUrl); const attributes = [ { name: "jhon" } ]; const response = await fetch(url.toString(), { method: "POST", headers: { Authorization: `Bearer ${process.env.REVENUE_CAT_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify(attributes), }); if (!response.ok) { const errorData = await response.json(); const status = response.status; console.error(`Error from RevenueCat: ${status}`, errorData); switch (status) { case 401: return res.status(401).json({ error: "Invalid API key" }); case 403: return res.status(403).json({ error: "Access denied. Insufficient permissions" }); case 429: const retryAfter = response.h
I’m close to releasing a flutter app. I would like to handle payments using your paddle integration for web (and possibly show a button for mobile checkout because of the recent ruling against Apple). It seems that paywalls don’t support paddle and you can’t customize a paywall button to link to a url hosting paddle checkout. I don’t think I have an option but to create my own implementation of a paywall on web that looks like the revenuecat paywall for mobile which seems like a lot of effort and is not ideal..Are there plans to add a native Paddle integration or at least allow customization of that buttons action with revenuecat paywalls?
I have an iOS app, using SwiftUI, and effectively latest version of everything. I am using RevenueCat 5.23.0, minimum deployment iOS 18.1, XCode 16.3. I am facing an error which appears to only happen in production - not the sandbox. It’s extremely frustrating because it results in an RC error, even though the credit card transaction or trial start was successful. The user will tap my payment button, double click on the iOS native payment sheet to confirm w/ Face ID. The credit card payment or the trial start will succeed, and then iOS shows another prompt with the title “Turn off renewal receipt emails?” with the body “Get fewer emails by turning off renewals receipts for subscriptions. Your receipts will still be available in App Store settings > Purchase Hisotry” with two options to either turn on or off renewal emails. No matter which option is being selected, RevenueCat is populating the error object in the completion callback! This is happening even though my user is being bi
what is revnew cat appplease guide me THANKS
This is more of an apple app store question as opposed to any issue with RevenueCat…I recently changed the annual subscription price for my iOS app from $4.99/year to $9.99/year. This change went into effect approximately 4-5 days ago. If I look in the app store, it shows the correct price. However, when I view my transactions in RevenueCat, all of my renewals continue to show $4.99. All new annual subscriptions come with a 30 day free trial so I won’t know what price they will be charged until the end of their trial. Can someone please explain to me why this is happening? Thanks!
I understand that this same question has been asked and answered many time and I want to assure you that having battled with this for over a month now, I have read all the other posts but nothing works. I asked a friend to try subscribing and it worked but for whatever reason, not a single user has been able to subscribe to my app for over 2 months now.I don’t beleive this is parental control because the age limit of my app is just 4 and the error is coming from users all around the world.For added context, I started experiencing this shortly after introducing a weekly subscription plan and upgrading react native to 0.78, and integrating a ota-update package that lets me push updates without going through the review pipeline (I am not pushing any changes that go against Play Policies. Just minor changes). It’s been months now with zero successful subscriptions. I haven’t also had any new subscribers from ios in all this time but I haven’t seen attempts from ios users. For some reason,
Has anyone else’s app been rejected because: Apps offering auto-renewable subscriptions must include all of the following required information in the binary: - Title of auto-renewing subscription (this may be the same as the in-app purchase product name)- Length of subscription- Price of subscription, and price per unit if appropriate- Functional links to the privacy policy and Terms of Use (EULA)Our app admittedly doesn’t include links to our PP nor our EULA but thats a separate issue. I’m worried that we are getting rejected because we are using the React Native Paywall UI package to pull our paywall from RevenueCat to display it which probably means the things apple is rejecting our app for are not included in the binary.
Hello,I have a custom paywall and I would like to programmatically open a web browser from my app to direct users to the revenue cat external checkout page. Given the recent changes allowing external payments for U.S. users, I want to confirm the safest way to implement this.What is the recommended approach to determine whether I can open an external payment link—particularly to ensure compliance with Apple’s guidelines and avoid any risk of App Store rejection?Thank you for your help.Best regards
URGENT Currently, when trying to add links to tex on the paywall editor, the link seems to disappear asa soon as as I click on a different element or anything. TLDR they’re not staying on the text and fail to deploy. The following screenshots are sequential in that actions that I take. Please fix the immediately as our apple build is being rejected because we’re not including the links.
We're experiencing an issue with the react-native-purchases SDK where the Purchases.getOfferings() method does not return a response or callback on iOS 18.4. This issue is not present on older iOS versions (e.g., iOS 17.x and below), where the method works as expected.Environment: React Native version: 0.74.3 react-native-purchases version: 8.9.6 iOS version: Issue occurs on iOS 18.4 only Devices tested: Confirmed on real devices running iOS 18.4 Xcode version: 16.2 (16C5032a) Steps to Reproduce: Initialize Purchases with the API key using Purchases.configure(). Call Purchases.getOfferings(). Observe that on iOS 18.4, the method does not return, either as a fulfilled Promise or rejected error. On iOS 17.x and below, the same code path works fine and returns the expected offerings. Expected Behavior:Purchases.getOfferings() should return a valid response or a meaningful error message regardless of the iOS version, as long as the configuration and entitlements are correctly
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.