Discussion and help from anything related to RevenueCat.
Recently active
Hello Everyone,in my app i have 2 subscriptions plans 1 month and 3 months. i am using revenuecat paywall.for 1 month the variable is {{ product.price_per_period }} its showig correct currency € symbol after price.for 3 months when i add {{ product.price }} it shows price of total 3 months with correct position in currency symbol means after price but when i add {{ product.price_per_month }}/mo to see price per month in that case the currency symbol € is showing before price
I’m currently implementing the RevenueCat Web SDK in a React application, and I’m encountering an issue during the configuration step. When I initialize Purchases.configure(), I receive the following error:Error configuring RevenueCat: _me: Invalid API key. Use your Web Billing API key.I have confirmed that I am using what should be the correct Web Billing API Key, but the SDK continues to throw this error. I’m unable to pinpoint what might be causing it.Below is the relevant code snippet from my implementation: import { Purchases } from '@revenuecat/purchases-js'; useEffect(() => { if (hasConfiguredPurchases.current) return; if (!userInfo && !userDetails) return; try { let appUserId = userInfo?.user_uuid || userDetails?.user_id; if (!appUserId) { appUserId = typeof Purchases.generateRevenueCatAnonymousAppUserId === 'function' ? Purchases.generateRevenueCatAnonymousAppUserId() : `anon_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`; } const purchases = Purchases.con
Hi RevenueCat team,I’m using the Paywalls feature to sell renewing subscriptions and everything has been working well. I recently added a new non-consumable product to both app stores, imported it into RevenueCat, and created a new offering + package + paywall for it.However, when I try to show this new paywall in my app, I get an offering_not_found error, and the paywall does not load. What I’ve checked so far The product is Approved in both App Store and Google Play. The RC product type is Non-consumable. Each store product is linked to one entitlement. The entitlement is linked to the new offering. The offering contains one package, and the paywall is set to use that exact package. When I switch the paywall to a pre-existing subscription offering, the paywall loads correctly on the frontend - so the paywall system itself works. Extra context The new offering shows correctly in the RC dashboard. I tested this both on TestFlight version and production version - got the sa
We are selling non renewable (non subscription) consumable products. All of our products are using offerings, however sometimes (rarely) a customer will purchase a product and the webhook event will have:"presented_offering_context": null,"presented_offering_id": null,This doesn’t make any sense because there is no place they can purchase a product within our app that doesn’t use an offering/paywall. Please advise
Hi,I’m using the direct integration between RC and Customerio. For the expiration_at parameter, RC sends an ISO timestamp. However! Customerio only uses Epoch (specifically in seconds–not milliseconds). Please change the integration such that the timestamp for expiration_at is an Epoch timestamp in seconds. Otherwise, this integration isn’t very useful (the most important piece of data that I need in Customerio is the user’s expiration date!).I mentioned this to @Jacob Eiting at RAGA and he was grateful for the feedback.cc @Brennan I’m #34 in the leaderboard here! Most people above me are RC staff. Thanks! Toby
I noticed that Paywall Web is now available.Is there any plan to add support for Flutter Web too?
I have a 3-day free trial configured in the App Store Connect, and the Paywall Builder automatically shows "free for 3 days" correctly when running the app. However, when I try to customize the template using variables, {{ product.price_per_period }} shows "1 week" instead of "3 days" (my trial period).The automatic "free for 3 days" text seems to override my custom template changes. Is there a way to:Disable the automatic trial text display? Use a variable that shows the trial period (3 days)? Fully customize the trial period display format and not letting RC override with the ‘free for 3 days’ text?Using iOS, React Native, and RevenueCatUI.Paywall.
https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}what is the id this end point is expecting ?I have a scenario , that i m passing orginalApUserId form my flutter sdk response to fetch the customer via my back end, i m passing something like $RCAnonymousID:476441ddabf3406e865d7cc14c8bduuiyas the customer. but API response give me error response saying no customer found. why?
Hi, i have deployed my app to testflight and got the error of wrong API key(Photo attached),On development build it was working fine and only got this issue when i pushed to testflightI have confirmed that i m using correct api keys not test api keys ( my api keys start with appl_)The Command i use to submit my build:eas build --profile production -p ios --auto-submit
Hi RevenueCat Support Team,I have several Android apps in my RevenueCat account. Since they are all Android apps and some of them start with the same letter, it’s difficult to differentiate them in the dashboard. The only way to know which app it is, is by hovering over it, which is very inconvenient.It would be very helpful to have a custom logo for each RevenueCat project, or to automatically pull the app icon from the Google Play Store as well. This doesn’t seem like it would be a big challenge, and I would really appreciate having this kind of personalization - or at least feature parity with iOS app projects, which already benefit from app icons! :DThank you for your assistance.
Hello,We are experiencing an issue where Android subscriptions are not showing up in RevenueCat, while iOS works perfectly. On iOS, getOfferings() returns the products correctly. However, on Android, even though the subscription is published in Google Play Console and added to the Offering in RevenueCat, the availablePackages list comes back empty.Current situation:Subscription and base plan are Published in Google Play Console.In RevenueCat, the product android.pro.plan:androidproplan is added to both the Offering and the related Entitlement.Our device is added to the license testing list, and the app is installed via the Play Store.Purchases.configure() is called correctly with the right API keys.The exact same setup works fine on iOS.In this case, what could cause getOfferings() to return empty on Android?Thanks.
I have set up an subscription product in play console with the intention to evoke the offer with the revenuecat paywall in app. The paywall works correctly, but the problem is that the subscription must be bought before download. How to developers configure their apps to be free for download with in-app subscription purchases?
I created a paywall with a toggle. With the toggle is off, I have 2 offers:$rc_annual $rc_monthlyWhen it’s on:annual_3d_free_trial $rc_monthlyannual_3d_free_trial is basically an annual offer, but I attached it an Apple Store offer identifier. My issue is that when I’m selecting $rc_annual, the Apple Store offer is applied to this subscription, while it is not linked to in the paywall configurator.Expected result: the offer identifier should be liked to the package I selected $rc_annual configuration annual_3d_free_trial configuration
In Revenue Cat Web billing, we're seeing single Revenue Cat customers generate multiple stripe customerIds. After messaging support, it seems that might be a known issue? If so my feature request would be to capture stripe customer IDs in the RC Web Billing flow (i.e., purchases-js Web SDK?) and pass that through to stripe to prevent multiple stripe customers from being created.This isn’t a problem if you’re using Stripe as the payment processor. Nor is it a problem if you’re using subscriptions. But if you have multiple products (e.g., consumables) then a few issues arise from the current behavior: (1) stripe customers proliferate and can’t be merged (2) vendor lock-in since RC is then the only source of truth that consolidates customer accounts and (3) there’s no possibility to store and reuse customer CC information adding friction to the user UX.To be clear, what I’m proposing is something like:```const ret = await purchases.purchase({ rcPackage: pkg, stripeCustomerId
revenuecat website productionI updated image on my paywall and saved it, but for some reason i can’t see it updated on production?Other changes I made alongside updating the image, such as updating texts, are being updated just fine.
Hey guys, I’ve got a question regarding Mixpanel integration. We’ve confirmed that we’re getting rc_initial_purchase event in our Mixpanel dashboard when a new subscription is added. And now we’re trying to show users different Offerings(& paywalls) using the Placement feature, but can’t find in the documentation if we can get the Placement key(e.g., “onboarding”, “settings”) as a property of the event.Getting this value through our Mixpanel event is crucial for locating where in the app the subscription has occurred. Has anyone tried this before?Thanks. :)
Background: New to RC, iOS product has not yet been published, Android version is lagging behind in development. I’m using RC Paywall in the onboarding process and for subscription changes, with no backend services needed for my app.Subscriptions are sold on a monthly or annual basis. There are 3 pricing tiers, all delivering full access to app functionality and based on the user’s time in the app / session count. I need to support upgrades, downgrades and term changes without restriction. So my understanding is that all 6 subscriptions need to be in the same offering. So for example: baby_monthly, baby_annual, mom_monthly, mom_annual, dad_monthly, dad_annual.It seems that I need to create custom package identifiers, and maybe use one or two of the defaults? So the mom level should be the default.Do I expand the existing id format like so:$rc_annual_baby (Annual Baby)$rc_monthly_baby (Monthly Baby)and use this for mom:$rc_monthly (Monthly)I’m probably overthinking this, but am trying
Hey, We are trying to use revenuecat react-native-purchases library in our project, we were able to successfully set it up, some transactions works perfectly, but unfortunately some don’tWe are using react-native-purchases: 9.6.8, with react-native: 0.73.11, we didn’t configure it for iOS yet, we started with Android, problem below is related to Android platform only.Problem:When calling await Purchases.purchasePackage(selectedPackage) method, we get warning that says:🤖‼️Billing is disconnected and purchase methods won't work. Stacktrace: java.lang.Throwable at com.revenuecat.purchases.google.BillingWrapper.getStackTrace(BillingWrapper.kt:814) at com.revenuecat.purchases.google.BillingWrapper.access$getStackTrace(BillingWrapper.kt:82) at com.revenuecat.purchases.google.BillingWrapper$withConnectedClient$$inlined$log$1.invoke(logWrapper.kt:37) at com.revenuecat.purchases.google.BillingWrapper$withConnectedClient$$inlined$log$1.invoke(logWrapper.kt:36) at com.revenuecat.purchases.google
It would be very useful to have a “Resend” button next to a webhok in the dashboard (Integrations > Webhooks > Integration > Store Notifications), similar to what Stripe provides.The reason is simple: sometimes the receiving code isn’t correct or complete, and an event isn’t processed properly. For example, I recently didn’t have a proper handler for an “uncancellation” event, and now I have to locate the affected records in the database and fix them manually. Being able to replay the webhook after fixing the code would let me verify the behavior and correct the data automatically.A related improvement would be in the “send test event” functionality. At the moment, I can’t select the specific event type to test. Being able to trigger a particular event type would make testing much more practical.
Our app is experiencing native crashes on iOS when displaying RevenueCat paywalls. The crash occurs in Apple's HEIF image decoder when trying to render paywall images served in HEIC format.EnvironmentRevenueCat SDK (react-native) version: 9.6.9 iOS versions affected: iOS 17.x, iOS 18.5 (confirmed) Devices: iPhone 13, and likely others App framework: React Native / ExpoCrash Stack TraceThread #0 (main):VideoToolbox VTDecompressionSessionRemoteClient_CopyPropertyVideoToolbox VTDecompressionSessionRemote_CopyPropertyCMPhoto VTDecompressionPluginClass_copyPixelBufferAttributesCMPhoto HEIFItemDecoderCreateCMPhoto _decodeItemCMPhoto _applyDecodeStrategyCMPhoto _decodeImageCMPhoto _decodeAuxiliaryImageCMPhoto _createAuxiliaryImageForIndexCMPhoto _createImageForIndexCMPhoto CMPhotoDecompressionContainerCreateImageForIndexImageIO HEIFReadPlugin::copyImageBlockSet
Hi, I’m wondering if there is any way around this confusing behavior I’m seeing on iOS regarding consumables and multiple App User IDs.For context, I offer both subscriptions and consumables in my app, and require all purchasers to be logged in (no anonymous purchases). I cannot prevent users from making multiple alt accounts in my app, and many do. I have “Transfer if there are no active subscriptions” configured in my RC project settings.On iOS, I’m seeing the following behavior when a user with the same Apple ID tries to make purchases under different App User IDs:user1 purchases a subscription user2 (same Apple ID) then purchases a consumable they receive the error “There is already another active subscriber using the same receipt” but the purchase goes through and the consumable is credited to user1(!)Alternatively, if I configure “Transfer to new App User ID” in RC, this is instead what happens (arguably worse):user1 purchases a subscription user2 (same Apple ID) then purchases a
We’re trying to set up Google Play service credentials for our Android app, strictly following the steps in this guide:https://www.revenuecat.com/docs/service-credentials/creating-play-service-credentialsHowever, we are running into issues (see attached screenshot). We’re unsure whether this is caused by missing console permissions, a setup sequence issue, or something else in the Play Console UI (which looks different from the screenshots in the documentation).We need urgent help to resolve this so we can move forward with in-app purchases.Thank you!
https://www.revenuecat.com/docs/tools/paywalls/displaying-paywalls#setting-preferred-localeI noticed that the code is only available for iOS, Android, and ReactNative. Will the code for Flutter also be developed?
I have issues with setting up my play store app provider, two issues, not sure if unrelated. Issue 1: Service account credentials: Credentials need attentionTried following the guide 3 times now, one with the manual setup, and two times with the automated script. Every time waiting more thn 36 hours to pass, but “Credentials need attention” would not change. After doing it three times with the last time completely starting over I think I followed everything correctly and gave the correct permissions. Not sure what I am missing at this point, and because of that, not sure what other information I can provide, other than that I followed the guide word for word. Issue 2: Google developer notificationsEven though I am “Connected to Google”, test notifications are not being shown. In google play console, when I was not connectred to revenuecat sending the test notification failed, but now that is connected, the test notification is apparently sent, but refreshing the page does not show on r
Hi everyone,I’m running into the following error with my Expo React Native project and can’t figure out the cause. I’ve created development builds and also deployed a production build on TestFlight. The error still appears in both environments. My in‑app products are approved on the App Store. The paywall is configured in RevenueCat. Despite all this, the issue persists. Has anyone experienced something similar or can suggest what I might be missing?Thanks in advance for any guidance!
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.