Discussion and help from anything related to RevenueCat.
Recently active
Hello!We’ve setup a Web Purchase Link for an offering using RC Billing. One of the packages supports a free trial period. The link support promo codes. We notice there’s some conflicting information on the page about how much the user will pay after the trial ends when using a promo code. In the example below, we’re using a 100% off promo code. On the left side it’s clear that after the trial ends, the user will pay $0; however, on the right side there’s disclaimer text explaining that after the trial ends, the user will pay the full price of $129. This has led to some questions and confusion. Is there a way to ensure the disclaimer text updates to handle the promo code? Thank you for your help!
Trying to test purchase flows using my iPhone and test flight and I can’t seem to get rid of the item burned into the keychain that makes the purchase stick. I need a way to clear everything and start over.Please advise.
HiI am getting this error and struck at the app submission. I have created the subscriptions in the appstore but they are not approved. When it try by using storekit in simulatot it’s working and to test it on my own iPhone via testflight it’s not working so app approval rejected: Issue DescriptionThe In-App Purchase products in the app exhibited one or more bugs which create a poor user experience. Specifically, IAP product page did not load its content.. Review the details and resources below to troubleshoot this issue.Review device details:Hello,Thank you for your resubmission. Upon further review, we identified additional issues that need your attention. See below for more information.If you have any questions, we are here to help. Reply to this message in App Store Connect and let us know.Review EnvironmentReview date: June 22, 2026Review Device: iPad Air 11-inch (M3)Guideline 2.1(b) - Performance - App Completeness
I’m using the RevenueCatUI package in Unity to display the paywall created in the RC dashboard, which works perfectly on Android, but when I build for iOS, I get the following error when calling the method to present the paywall:`RevenueCatUI/resource_bundle_accessor.swift:44: Fatal error: unable to find bundle named RevenueCat_RevenueCatUI`I’m using RevenueCat 5.76.0. Any ideas?
## TL;DROne of the **product-store-state** MCP tools served from `https://mcp.revenuecat.ai/mcp` has a JSON Schemacontaining an integer literal that exceeds the signed 64-bit range (most likely a `maximum` / `default` /`multipleOf` on a price/amount/timestamp field). When an MCP client forwards that tool definition to theAnthropic Messages API, the API rejects the **entire** `tools` array with: API Error: 400 tools.61.custom.input_schema: int too big to convertBecause the failure happens at tool-definition validation time, *every* request that includes that toolfails — so the tools can't be loaded at all, which blocks any workflow that uses them (e.g. creating /submitting products to App Store Connect through the MCP).This is a different bug from the earlier `create-webhook-integration` null-in-string-enum issue(community tid=7623, fixed 2026-04-28) — same class of problem (an illegal schema value served by the MCP),different tool and field.## Affected toolsThe error appears while l
Google released new version of Next Gen AdMob SDK. Does RevenueCat support that?
Hi, currently the Web Customer Portal accessed via the management URL is always displayed in English. Is there any way to support additional languages, such as Spanish?For our use case, this is a critical requirement. Thank you.
Hi team,I’m using RevenueCat experiments to test pricing and offerings, and I’d love the ability for an assistant/automation tool to create experiments for me, not just read the results.Right now, an assistant can help analyze my data, compare offerings, and even help prepare the right test setup. But when it’s time to actually create the experiment, I still need to do it manually in the dashboard.It would be very helpful if the RevenueCat MCP/API could support creating and starting experiments, including choosing the control and test offerings, setting the audience, enrollment percentage, metrics, and notes.The ideal flow would be:Assistant analyzes the account and recommends an experiment. Assistant creates the experiment as a draft. I review it in RevenueCat. I approve/start it.This would reduce setup mistakes and make it much easier to run well-designed pricing and LTV experiments. Thanks!
I believe I have followed the documentation correctly, but I must have missed something since restore is not working. Purchase works fine in my testing, thus far all on simulator, iOS and Android.On my first page I do the following: @override void initState() { super.initState(); SettingsRepository().addLaunchCount(); WidgetsBinding.instance.addObserver(this); handlePaywall(); } void handlePaywall() async { presentPaywallIfNeeded().then((result) { print('Paywall result: $result'); if (mounted) { if (result == PaywallResult.notPresented && kDebugMode) { Purchases.getCustomerInfo().then((customerInfo) { if (mounted) { setState(() { _debugCustomerInfo = customerInfo; _paywallResult = result; }); } }); } else { setState(() { _paywallResult = result; }); } } }); } Then in the page I handle the result.
Every paywall I duplicate shows up in the dashboard but not in the RevenueCat mobile app for preview. Then when I go to actually deeplink into the paywall in my app, I get a fallback paywall. When I ask Rico about these duplicated paywalls he doesn’t know they exist (they don’t return in the API).Has anyone had this problem? Is there another way to duplicate easily?
Hi RevenueCat team,we are seeing an iOS offer-code redemption issue with account switching and would like to confirm the expected behavior.Our RevenueCat restore behavior is configured as:Transfer if there are no active subscriptionsScenario: User logs into account A. User purchases an Apple subscription. The subscription expires. User logs out of account A. User logs into account B on the same device / Apple account. User redeems an Apple offer code. Observed behavior:The offer code is redeemed while account B is logged in, but the entitlement is assigned to account A instead of account B.Expected behavior:Since account A no longer has an active subscription, we would expect the redeemed offer-code subscription to transfer / attach to the currently logged-in RevenueCat App User ID, account B.We saw that RevenueCat recommends avoiding Apple’s in-app offer-code redemption sheet and instead opening the App Store redemption URL, then calling syncPurchases when the user returns t
I'm using a Flutter project and RevenueCat for payment processing, but both of my projects are experiencing subscription failures. The SDK is showing the following error message: E/[Purchases] - ERROR(): 🤖‼️ Error when fetching products - DebugMessage: Billing Unavailable. ErrorCode: BILLING_UNAVAILABLE.E/[Purchases] - ERROR(): 🤖‼️ PurchasesError(code=PurchaseNotAllowedError, underlyingErrorMessage=Error when fetching products - DebugMessage: Billing Unavailable. ErrorCode: BILLING_UNAVAILABLE., message='The device or user is not allowed to make the purchase.')E/[Purchases] - ERROR(): 🤖‼️ Error fetching offerings - PurchasesError(code=PurchaseNotAllowedError, underlyingErrorMessage=Error when fetching products I used a real machine to run it, and my APK was also released on Google Play's internal testing platform. I tried it on different machines and logged into different Google accounts. I've checked the forums and seen similar issues before, but there weren't any correct solutio
After a DEFERRED replacement (A → B), Google Play marks the active subscription as “Plan change”, but RevenueCat SDK for Android doesn’t seem to expose this state where the active subscription is pending a plan change.Could this be exposed from the RevenueCat SDK for the active subscriptions? I don’t seem to get any information from the RevenueCat Android SDK that the plan is about to change and to where the plan is going to change to. The backend does receive the “PRODUCT_CHANGE” webhook, but client side isn’t able to access the same information.Seems to me also that the Paywall’s ProductChangeCalculator purchases-android/ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/data/ProductChangeCalculator.kt at main · RevenueCat/purchases-android is not doing any logic to handle the pending case, so if you attempt a second downgrade from the Paywall while the previous is pending you get.“Paywall purchase error: One or more of the arguments provided are invalid.”, whi
I got the following error: Guideline 2.1(b) - Performance - App CompletenessIssue DescriptionThe In-App Purchase products in the app exhibited one or more bugs which create a poor user experience. Specifically, "upgrade to premium" button led to an error page. Review the details and resources below to troubleshoot this issue.Review device details:- Device type: iPhone 17 Pro Max- OS version: iOS 26.5 I have created the subscriptions in the appstore but they are not approved. When it try to test it on my own iPhone via testflight i get: Could not load subscription options PlatformException(23, There is an issue with your configuration. Check the underlving error for more details. More information: https://rev.cat/sdk-troubleshooting There's a problem with your configuration. 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). More information: https://rev.cat/why-are-offerings-em
Hi RevenueCat team,My app has been integrated with Apple Search Ads (Advanced integration) for months and attribution data was coming through normally. However, for roughly the last 10 days no ASA data is being returned — all traffic is now showing as Organic in Charts, even though I can see conversions clearly coming from Apple Search Ads in the Apple Ads dashboard. No app-side code was changed during this period.This app uses the OAuth ("Sign in with Apple") authentication method, and its Advanced integration appears to have dropped. I already tried re-doing the integration by signing in with Apple again, but data still does not come back.For comparison: another one of my apps still uses the legacy method (Client ID / Team ID / Key ID) and that one is unaffected — ASA data is still flowing normally.Could you please check the server logs for my account to see whether RevenueCat is hitting an auth/token error when fetching attribution from Apple for the affected app? And is there a kno
Hey, does your roadmap have Accessibility improvements or configurability on the roadmap?We have a need to fulfill the requirements of European Accessibility Act (Directive (EU) 2019/882) and we have noticed that currently the Paywalls don’t seem to offer good support for accessibility.Recently the ability to disable font scaling in Paywalls, did fix one of our issues. Otherwise we have been able to work around it by adjusting our paywall and doing small hacks and adjustments to them in order to improve the Accessibility.So I was wondering if you have Accessibility improvements coming in the roadmap and when might these improvements be scheduled?
Could you please provide an update on support for monthly subscriptions with a 12-month commitment in the Apple App Store?The iOS SDK 5.76.0 appears to include some initial support. However, it does not yet seem possible to create or configure subscriptions with a monthly billing plan in the admin interface.Do you have an estimated timeline for when full support will be available?
Hi guys, this is maybe a little weird request but I just came to think about this cute button you guys had on your website. I think it was the “Book a demo” or something like that. When hovered, a cats paw appeared from right behind it and tried to hit your cursor. Is this still in place somewhere or did you remove it? BestMoritz
I’m building a web-based TV app where users scan a QR code on the TV to complete payment on their phone. I’m using purchases-js and calling getOfferings() to display products for the current offering.However, the packages array is coming back empty, even though I’ve created a Stripe product for each package under each offering.I noticed that when I add a Web Billing product, it shows up correctly in the offerings, but the Stripe products do not appear.Is this expected behavior for the Web SDK, or am I missing a required configuration step for Stripe products to be available through getOfferings() in a web application?
Hi,I have a published v2 Components-based paywall that is not serving correctly. Both my app and the RevenueCat Preview in App (official RevenueCat iOS app) are showing the default fallback template instead of my custom design.Setup details:Project ID: projfb81dd09 Offering ID: promo_lifetime Paywall status: Active & Published Built entirely with built-in v2 components onlyWhat I've already tried:Confirmed paywall is Active and Published Confirmed Offering is correctly assigned Used RevenueCat AI editor to clean up legacy fallback header structure and normalize carousel config Published changes after each fix Duplicated the paywall, attached the duplicate to the offering, and republished Tested all of the above via Preview in App every timeNone of the above worked. The fact that Preview in App also shows the fallback confirms this is not an app-side or SDK issue — it is a RevenueCat backend serving issue.Has anyone experienced this? Any suggestions would be appreciated.
When I tried adding revenuecat into base44 I am getting several errors and the above image is one of them. How do I make revenuecat for in app purchases as apple does not allow stripe and Base44 only integrates with stripe. What steps do I need to do to integrate it into base44 to accept payments as I know I’m not doing something right. Could someone give me a prompt for base44 to integrate revenuecat.
Hey, we ran into small issue when testing our integration. If user cancels the current subscription from Play Store, it gets to a state where it is “isActive = true” and “willRenew = false”.It seems the Paywall doesn’t check for the “willRenew” state when deciding to trigger the upgrade/downgrade flow when user tries to purchase the same subscription from Paywall. Instead of dealing it as a new purchase the Paywall seems to attempt to do a Upgrade/Downgrade to that product. Which then errors out from play store.I would expect the Paywall to allow user to renew the current subscription, instead of attempting to do a upgrade to the same purchase and then erroring out.In this flow the Upgrade/Downgrade to an other product did work as expected, so no issues with those. 🤖‼️ BillingWrapper purchases failed to update: DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode: DEVELOPER_ERROR. SubResponseCode: NO_APPLICABLE_SUB_RESPONSE_CODE. No purchases received🤖‼
I have`Purchases.shared.attribution.enableAdServicesAttributionTokenCollection()`which according to https://www.revenuecat.com/docs/integrations/attribution/apple-search-ads should give me the following fields:https://cln.sh/41P1JJ7THowever these are the fields that I see:https://cln.sh/dPCvFb77 I have used ASA Basic in the past, but have been using advanced for months.Is there anything else that I’m missing?
Hi.I just installed macOS 27 and Xcode 27. I can’t run my app because there’s a compile error with RevenueCat. Invalid redeclaration of synthesized memberwise 'init(stringRepresentation:)'I’m not using Paywalls at the moment (no macOS support as far as I know). I know that macOS 27 was JUST released, but I thought I’d post this here anyway to make you aware of this issue, if you don’t already know about it. I did update my swift package to RevenueCat 5.75.0 Thanks, Brendan
Hi team,I am trying to understand why RevenueCat completely missed/dropped a successful Stripe payment recapture for a user on May 21st. The event simply does not exist on the RC timeline, even though Stripe successfully charged them.Here is the exact comparison of both timelines:Stripe Payment History: May 7, 1:01 PM: $0.99 (Subscription creation) - Succeeded May 14: Initial $19.99 billing cycle due (Failed) May 18, 8:05 AM: $19.99 (Payment Recaptured) - Succeeded May 21: Initial $19.99 billing cycle due (Failed) May 31, 11:03 PM: $19.99 (Payment Recaptured) - Succeeded May 28: Initial $19.99 billing cycle due (failed) Jun 1, 7:03 AM: $19.99 (Payment Recaptured) - Succeeded RevenueCat Customer Event History: 2026-05-28, 8:01 PM: Renewed subscription ($19.99) (Matches Stripe's May 31/Jun 1 block) 2026-05-21, 9:03 PM: Cancelled due to a billing error 2026-05-21, 9:03 PM: Had a billing issue 2026-05-14, 9:05 PM: Cancelled due to a billing error 2026-05-14, 9:05
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.