Discussion and help from anything related to RevenueCat.
Recently active
Hello,I am on the RC UI, and I try to extend the free trial period of a user (customer satisfaction thing). The user is currently in a free trial period. When I click “Extend subscription”, I get a small toast message saying ”Could not extend the subscription” The web console gave me the reason for this:code: 7970message: "Received an error from Apple. Environment: PRODUCTION Code: 4030004 Message: Forbidden - subscription state ineligible for extension."So, it seems that one cannot extend the free trial on App Store (sorry if it’s obvious, I am learning a lot these days). Apple documentation. Therefore, my question is: what would you suggest me to do with this user? He couldn’t properly use his free trial for 3 days, and I would like to let him properly able to test the app before deciding he should purchase or not.
Hi everyone,I am setting up a Paywall using the RevenueCat Paywall Editor and having trouble with the Purchase Button text logic.My Goal: Weekly Plan (has trial): Button should say "Start [Duration] Free Trial" Yearly Plan (no trial): Button should say "Unlock Full Access" The Issue: I have configured the "Introductory Offer" field in the editor with the text: Start {{ product.offer_period_in_days }} Free Trial.When I select the Weekly package, it works correctly (e.g., "Start 3 Free Trial"). However, when I select the Yearly package—which does not have a free trial—the button does not fall back to the standard text. Instead, it displays "Start 365 Free Trial".It seems like the variable is picking up the subscription duration (365 days) as an offer, or the Paywall thinks my Yearly plan has an offer attached.My Questions: Is {{ product.offer_period_in_days }} the correct variable to use to ensure it stays empty/null for non-trial packages? How can I force the Paywall to display the
Hey, I implemented a webfunnel with NextJS. One step is a RC paywall, using the revenuecat js sdk. There is an issue with 3D secure.When a user completes the step, the 3DS bank verification return URL opens the domain root instead of the page where the paywall was initiated. For the user this breaks the flow. Instead of seeing the paywall success screen and after that the screen to download the app, they are being sent to our home page. The original tab stays open, but nobody understands that because they just see the home page. That means the paywall is not usable for anyone using 3d secure.How do I configure the correct return URL for Web Billing? This should be an option in the sdk when presenting the paywall.We use Web Billing with Stripe.Edit: To clarify: This works well with the Stripe Test Card with 3DS. The issue is the banking app of a real card we test this with opens the site root in a new tab.
I have set up RC’s Paywall using a template. The paywall is showing me the correct amount for the Subscription but the wrong currency.Its supposed to be showing me £ but its showing me $. When i click subscribe apples paywall is showing me correctly £2.99. Paywall shows $2.99.I have checked and tried everything, My apps platform is Lovable and Despia is the wrapper who integrate the SDK. The issue isnt apple as their price is showing correctly. And another odd thing is, when i tried the variable for currency symbol on its own it displayed £. but the product.price variable isnt localizing. RC support ticket is being slow in response as i think its a holiday in the USA, someone please reach out.P.s - The app is tested in sandbox flight test currently
Hi. I am configuring Firebase Integration for our multiplatform app (android, ios, web)Firebase integration is working correctly for our Android and iOS users, but we have issues with RC Web Billing transations. We are not seeing any events for Web transations in Firebase Integration events section (bottom of the page).In Android and iOS we are setting the Firebase App Instance ID in the $firebaseAppInstanceId attribute for the userIn Web version we are setting the Google Analytics Client ID in the $firebaseAppInstanceId attribute for the user.I can confirm 100% that we are setting the attribute for the user before the subscription event and there is no race condition.I see the transation in Customer History, so is the Firebase Integration that is just ignoring the eventThe only difference I see in the customer history event data between working mobile events and not working web events is the store:{ [...] "store": "RC_BILLING", [...]}I am not 100% sure that is correct to set the go
The Carousel component has an "Open on" property in the dashboard that sets which page displays first. We'd like the ability to override this at runtime when presenting the paywall programmatically.Use caseWe have different entry points in our app that correspond to different features shown on different carousel pages. When a user taps on a specific feature’s CTA, we want to present the paywall with the carousel pre-scrolled to the relevant page, rather than always starting on the dashboard-configured default.Desired behaviorA new runtime parameter (e.g., `initialCarouselPage` or `carouselStartIndex`) passed when presenting the paywall The carousel renders starting on the specified page/index If the parameter is omitted or out of range, fall back to the dashboard-configured "Open on" value Supported on both iOS and Android SDKs
Hoping someone can offer some insight! I am using WebToNative to wrap my web app (built on Base44) into a native iOS app. I added code to expose RevenueCat functions through the WebToNative bridge but when testing the build in TestFlight, the paywall (my own custom paywall) does not appear at all. The logs show that “WTN RevenueCat not available”. Does anyone have similar experience with the path I’ve chosen to take?
In the KMP sdk, Price.formatted is showing USD instead of $ on iOS. However, on Android is shows $ as expected. This behaviour is inconsistent and doesn’t match the docsexpected: “$4.99” android: “$4.99” iOS: “USD 4.99”
Although the content fits the height, the paywall container creates insane height and I can scroll extremely far down where im not seeing any of my content. It looks normal in my app, but it seems to be a bug in the preview/preset. since its always happening for this preset and not others
I'm trying to setup retention offers in the Customer Center with this logic:If customer is canceling Active Product X, then offer Product Y Where each product is a different subscription in the App Store with different price points. However, when trying to save this configuration in the Customer Center editor I get the error “Store offer identifier is required for Product Y offer.” I’m not clear on why RC is requiring that I use a promotional offer when all I’m trying to do is offer the customer an entirely different product (subscription) as that is the offer itself. What am I missing here? Is what I’m trying to do bad and not a best practice? My rational is that we already offer Product Y as the back-up offer in our new user onboarding in the Exit Offer, when the user declines our primary product, and so I’d like to do the same here. FWIW, My Product Y, the fallback offer is an annual subscription price at $41.99 that is discounted relative to the default Product X. I understand that
Can we process in-app payments through RevenueCat’s Web SDK?Our app is a React-based PWA distributed on the App Store, Google Play, and the web. Because the core experience runs in a web runtime, we’re looking for the best way to handle in-app purchases for the iOS/Android store builds while keeping a largely shared TypeScript codebase.Does RevenueCat’s Web SDK support this scenario? Any recommendations for a cross-platform setup?
Everything should be good to go and yet it isn’t. The app has subscriptions set up both in app store connect and revenue cat and it seems everything matches. The app is also our default app in revenue cat so it is not hitting the wrong app. The screenshot is from testflight so no its not a storekit issue or sandbox issue (both of which are presumably fixed just by being on test flight. In the past for a different app I’m pretty sure I had this working on a regular dev client on my phone no test flight no storekit config no nothing. What is causing the issue? We had done very little set up we hadn’t set up a bank acc then so why would that be the issue now and why would that matter for fake money.
Hey, we have a flutter app for iOS that uses the RC SDK. I now want to build web funnels using RC Web Billing. In the app settings we have a button to “manage your subscription”. I’m wondering what that means for users who purchased a subscription via Web Billing.As I understand, they also have the entitlement (if set up correctly) and the flutter sdk knows about the subscription Can they cancel / change their subscription in Customer Center? If not, what will be displayed for them in Customer Center? Should we then disable the link for them? And how do I do that? Is there a flag available in the customer data I can use to disable the link?Thanks
We have a user who gets false for “canMakePayments()”, and we want to be able to tell the user why. Their device is a Realme Note 60x. They are in Spain. We tried creating a spanish Google account and use VPN and other ways to try to force google play to be in Spain. We also tried Google Billing Lab - with all our tests we got canMakePayments true. She is added to license testing in Google Play and Spain is targeted with its own EUR price, so the Google Play setup looks correct. She has only one Google account tied to that device, so it’s not account mismatch.She did not have any payment methods added - which I thought would be why she is getting false for canMakePayments(), but our fresh new account doesn’t have any either and we get a true.What is weird that after she added a payment method AND installed a new version of the app (payment flow, library version unchanged, the only addition was some extra logging) - it started working for her.This leads me to believe that canMakePayment
Which most of the apps are showing app icons correctly, but my https://verified.revenuecat.com/vahanpro, doesn’t show app icon at all. I have configured App store and Play Store creds correctly, like other apps, but still it wont come up.Even my verified link(above) doesn’t show App Store link, when App store app is live and working correctly.Please Help!Thanks in advance.
Hi everybody,iOS dev here with my first App Store submission (hard-paywall screen time app). Initial rejection was for 3 issues I fixed (all metadata related like missing Privacy & TOS link in app description). Anyway, the main subscription problem: My 2 desired subs were originally "Developer Action Needed" (apparently because the generic "Premium access" name was rejected) So, I fixed names -> "ThirstTrapp Annual Access" + "ThirstTrapp Weekly Access" Now both are "Waiting for Review" after I saved them from Subscriptions page Current blocker:When creating new app build (with fixed metadata) -> try to add "In-App Purchases and Subscriptions": Dialog only shows my 2 older "Ready to Submit" subs (not the 2 new ones I actually want) Can't attach the "Waiting for Review" ones = can't submit app with correct subs Screenshots of the issue:[Subscriptions page - desired ones stuck "Waiting for Review"][App version IAP dialog - only shows old subs] What I've tried: Waited 2+
Is it possible to force the orientation of a paywall/offering using the metadata JSON object? I want to force portrait mode for the paywall if possible. Cheers!
Hello,I am currently using two subscription plans in my app: Plus and Pro. Following the guidance in the RevenueCat documentation, I have implemented a custom PurchaseLogic that creates a new PurchaseParams containing the GoogleReplacementMode (for upgrading/downgrading plans).To handle this logic manually, I have also set purchasesAreCompletedBy to MY_APP.Based on the documentation for MY_APP, it states that the app is responsible for acknowledging the purchase. To confirm my understanding: after calling Purchases.sharedInstance.awaitPurchase(purchaseParams), should I then proceed to handle the acknowledgment and the remaining transaction steps directly using the Google BillingClient?Thank you.
Hello, I’m developing locally using only the RevenueCat Test Store (test_ API key with Test Store products in my Offerings). After I make a test purchase, I might have to quickly re-run the flow from scratch, as I am developing and changing things and trying to make sure that everything still works. However:- Deleting the customer in RevenueCat does not make the active Test Store subscription go away for re-testing.- There doesn’t appear to be any way to cancel or expedite cancellation for a Test Store subscription (no user-facing cancel, no management URL), so I end up waiting for renewals/expiration instead of immediately testing again.Questions for the community/RC team Is there any supported way in the Test Store to immediately cancel/expire a subscription so I can re-purchase right away? If instant cancel/expire isn’t supported in the Test Store, what’s the recommended best practice to achieve a fast dev/test loop while developing locally? (e.g., any official workflow to simulate
I setted credential correctly Connected to Googlesent test notification to rc topic But when i save changes receive this error All configuration seems correct.Can someone help me?
Hey, I once found this handy llm.txt file in your docs, but I don’t find it anymore and the google link is broken:https://www.revenuecat.com/docs/assets/files/llms-4bbc6a7400826a5789ff0a888c6c90c4.txtWhere can I find it? Thanks
Hi RevenueCat Team / Community,I am encountering a persistent account_invalid error while testing RevenueCat Web Billing with Stripe. It appears that RevenueCat is attempting to use a Production API Key to access a Stripe Sandbox Account, which results in the following error:JSON { "error": { "code": "account_invalid", "message": "The provided key 'pk_live_******************' does not have access to account 'acct_1SZWXNDHtgf1OqUX'...", "type": "invalid_request_error" }}What I have already tried: Stripe Side: Revoked/Deleted the RevenueCat app from my Stripe Production dashboard and re-connected it only to the Test Mode environment. RevenueCat Side: Deleted the main Stripe account under Account Settings -> Project -> Stripe. App Configuration: Verified that the "Web Billing" app provider in the RevenueCat dashboard is correctly linked to the Stripe Sandbox account. Product IDs: Confirmed that all Product Identifiers match correctly between Stripe and RevenueCat. O
Hey! Would it be possible to add CHF to Display Currency? ❤️
I’m having an issue where my RevenueCat paywall works perfectly in the iOS Simulator, but fails to load on real devices via TestFlight. This is my first app and first time setting up in-app subscriptions.What works In the iOS Simulator, the paywall loads correctly. All products appear and I can simulate purchases. Product IDs match exactly between App Store Connect and RevenueCat. The RevenueCat offering is active and includes the correct products. What fails On a real device using TestFlight, the paywall does not load. RevenueCat returns a configuration error (Error 23 / products not found). No products are returned from Apple in TestFlight. App Store Connect setup Subscriptions are created in App Store Connect and currently in “Ready to Submit” / “Waiting for Review” state. I have accepted all agreements in App Store Connect (Paid Applications, Tax, Banking are active). The subscription is attached to the current app version under In-App Purchases and Subscriptions. T
We get the Package identifier, but not the title that we configure in the dashboard. That means we have to use the extremely unwieldy metadata to get human readable titles like “Annual”, “Lifetime” etc.That is a very bad API, as it requires iterating through the offerings and finding keys with the same identifier. Why create a model with so much uncertainty and need for null coalescing all the things that could go wrong?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.