Get help with anything related to RevenueCat.
Recently active
This has been partially addressed in previous posts, but I think it’s worth brining up again because there are aspects of solving for this that are not straightforward.I’m an indie iOS developer with limited resources, and my requirements are that a user is able to subscribe within one of my apps, and get access to all my other apps as well (3 in total). In RevenueCat I understand how to link products across multiple apps within the same project with a single entitlement, that part is straightforward. The parts that aren’t relate to user management.Apple doesn't provide for this, and recommends user management with my own server. RevenueCat creates anonymized user IDs, but they are not useful for my case since they’re linked to an app instance on a particular device. RevenueCat recommends custom App User IDs, but that still requires that I use my own backend for user management.I want to spend my energy bringing features to my users, and not spend it maintaining subscription infrastruc
I would like to know do RevenueCat support the c++ language? I'm currently using react native and their new architecture supports C++. Also I have some other projects that are not react native but they are Juce projects, which is a framework written completely on C++. I would like to know if there are any plans to release a C++ SDK.Juce allow us to create cross platform music applications. It's written in c++. I am trying my best to not need to write platforms specific code for iOS, macOS and android. I just like to use C++
Hi everyone,I'm running into an issue when testing the subscription flow in my Android app. After installing the app and reaching the paywall, I get the following error message:"Item not available in your country"This only happens on Android, and it prevents me from completing the flow to test the subscriptions properly.Here are a few details:The app is currently in closed alpha on the Play Store.Both the app and the subscription product are marked as available in my region (I've double-checked the Play Console settings), I am using flutter.The issue doesn't happen on iOS – only Android.I'm located in a supported region, and the Google account I'm using should meet all the criteria.Has anyone experienced this before or know how to fix it? Any help would be greatly appreciated – I’m stuck and really need to test the flow end-to-end.Thanks in advance!
Hi,We encounter a problem when integrating RevenueCat with promotional offers on iOS. We’re using the same App User ID on all device, but we get different results on iOS emulator, on an iPhone plugged on a Mac and on an iPhone with Testflight. We were able to integrate “Developer Determined Offer” on Android with no issues.On the iOS emulator, when we use the RC function Purchases.getProducts, we correctly see the promotional offer full_access_fidelity in the returning JSON:{ "currencyCode":"USD", "discounts":[ { "cycles":12, "identifier":"full_access_fidelity", "period":"P1M", "periodNumberOfUnits":1, "periodUnit":"MONTH", "price":2.9, "priceString":"2.90 $" } ], "identifier":"sfw_full", "introPrice":{ "cycles":1, "period":"P1W", "periodNumberOfUnits":1, "periodUnit":"WEEK", "price":0, "priceString":"0.00 $" }, "price":29, "priceString":"29.00 $", "productCategory":"SUBSCRIPTION", "productType":"NON_CONSUMABLE", "subscriptionPerio
I’m trying to test the paywall in my app on a physical iPhone. The first time I tapped a subscription option, I was prompted to sign in with my Apple ID. After signing in, I received an error saying the user isn’t allowed to make in-app purchases in the sandbox environment. I later realized I needed to create a dedicated sandbox test user for this. I’ve since created the correct test users in App Store Connect. However, the issue I’m facing now is that the app seems to remember the original (non-sandbox) Apple ID I used, and I’m no longer prompted to log in when attempting a purchase. I’ve tried deleting and reinstalling the app, and signing out of iCloud on the device, but it still doesn’t trigger a login prompt when I tap the purchase button. Has anyone run into this? Is there a reliable way to reset or clear the previously cached Apple ID used for sandbox testing?
Hello,I deleted a user on accident. I have the RevenueCat id, is there any way to restore this user and their entitlement? Will it restore when the subscription bills again? Im hoping there is some deleted db that RevenueCat persists for a bit or some solution. Thanks!
How can I solve this problem?
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
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.
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
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!
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);}
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!
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
Hi RevenueCat team and community,I’ve recently integrated RevenueCat Web Billing into my project. It’s a fantastic product—thank you! It allowed me to eliminate a lot of legacy billing code. However, I’ve run into a critical issue: the automatically generated invoices aren’t compliant with German regulations and don’t even include my company’s address.For the German market, invoices must include: Full company name and address VAT breakdown (net amount, VAT rate, VAT amount, gross amount) EU VAT ID in the footer (or equivalent) Could you please help me with the following: Invoice customization: Can I customize the invoice template, or at least enable Stripe Invoicing to generate fully compliant invoices? Invoice retrieval: Where can I access the generated invoices for archiving and submission to the tax authorities? Customer name capture: Is there a way to collect the customer’s name during checkout so it appears under “Issued to”? Thanks in advance for your assistance!Best rega
Hi! I have a Flutter app using RevenueCat for subscriptions.When a user activates a promo code via the App Store (outside the app), RevenueCat sends a webhook with an anonymous app_user_id (e.g., RCAnonymousID:abc123).The problem is that my backend expects a known user_id to associate the subscription with a user. Since the user hasn’t logged in yet, there’s no way to identify them based on this anonymous ID, and the webhook ends up being ignored.Later, when the user logs in to the app, I call:await Purchases.logIn(customUserId); But by that time, the webhook has already been processed (or missed), and there’s no connection between the anonymous ID and the logged-in user. What I want: To be able to process the first webhook, even if the subscription was activated anonymously (via promo code). My questions: What is the correct way to associate an anonymous RevenueCat ID with a custom user ID? How can I reliably process the first webhook and link it to the right user? Is there a way
When submitting the receipt, I passed in the user ID but returned an anonymous ID,
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.