Get help with anything related to RevenueCat.
Recently active
The paywall in my Flutter app is being flagged as non-compliant by Google Play store because it does not conform to this policy:Unclear or invisible dismiss button: Ensure that the dismiss button in your app is clearly visible and the size and color of the dismiss button is easy for users to find. If users are not able to access any content of your app without paid subscriptions, make clear indication to the user that a subscription is required to use the app. Here is my paywall, which was constructed with the RevenueCat paywall editor: Here is the code I use to display it, which has “displayCloseButton” set to true: @override Widget build(BuildContext context, WidgetRef ref) { return GgcScaffold( body: PaywallView( offering: users.currentUserOffering, displayCloseButton: true, onPurchaseCompleted: (CustomerInfo customerInfo, StoreTransaction storeTransaction) { ref.invalidate(revenueCatIsEntitledProvider); }, onPurchaseE
I originally started developing my app on an iPhone 13 and the paywall showed up fine. But, when I switched to testing the paywall on smaller devices such as the iPhone 13 mini, the formatting and responsiveness were not correct. A part of the paywall was cut off horizontally.In the RevenueCat editor itself, if I switch between device sizes, it works fine, but when I test locally on real physical devices, the responsiveness does not translate.I’m not sure if this is an issue on my side (I did check all my formatting and none of the hardcoded values seem to interfere with the responsiveness) or with a RevenueCat setting?Let me know if you need more information - I can upload screenshots if needed. Thanks
I can’t seem to find any way to test the refund flow for simple one time consumable non-subscription purchases (no entitlements). This is mission critical because my backend needs to deduct tokens from a user’s account if they refund. I understand I should expect a CANCELLATION webhook event, but if I call GET /subscribers/{app_user_id} in response to the webhook, what will be the change to their user info object? Will the purchase entry be removed from their list of purchases in the non-subscriptions json node? Is there really no way to test refunds from the sandbox?
HelloI have linked the entitlement with the product and configured it properly. but when the user purchases the entitlement is not given in code and also not displayed in the dashboard saying “unattached products”. i am building for iOS using flutter. what should i do to fix it?
Is there a way to configure Revenue cat to revoke entitlements immediately when billing fails and the subscritpion enters a billing retry or grace period? I’m using stripe. I noticed that my past_due stripe account have an active entitlement that doesn’t expire until end of next billing cycle! I currently have code like this but it feels ugly and I prefer revenue cat handle it: // Check if all subscriptions are either not active or not trialing const hasActiveOrTrialingSub = subscriptionData?.some( (sub) => sub.status === 'active' || sub.status === 'trialing' ); // Check if any subscription is past_due const hasPastDueSub = subscriptionData?.some( (sub) => sub.status === 'past_due' ); // Step 3: Fetch active entitlements for the owner const activeEntitlements = await getActiveEntitlements(ownerProfileId); console.log("activeEntitlements", activeEntitlements); if (!activeEntitlements || activeEntitlements.length === 0) { return; } const fleetEntitlement = act
We are on iOS and have figured out that `checkTrialOrIntroDiscountEligibility` exists for dynamically determining if a user is eligible for an introductory offer.That lets us update the UI appropriately. However, we’d like to go a step further and start the free trial without showing the native sheet that requires a credit card. Is there a way to start the trial for the user without showing the paywall? We plan to show RC’s paywall after the introductory offer.
I’ve just realised that calling the new subscription Paywall when the user is seeking account status info and maybe modify the subscription level probably isn’t wise. Is it best practice to create Paywalls specific for this subscription change task?
My app has been rejected multiple times during the last few weeks because Apple reviewer is unable to complete the purchase on paywall. They gave this error message: Guideline 2.1 - Performance - App CompletenessWe were still unable to purchase the subscription successfully.Review device details:- Device type: iPad Air 11-inch (M2)- OS version: iPadOS 26.1Next StepsWhen validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.Resources- Note that in-app purchases do not need to have been previously approved to confirm they function correctly in review.- Note that the Account Holder must accept the Paid Apps Agreement in the Business sectio
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
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
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?
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
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!
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!
I want to enable the free trial switch only for the Monthly plan.Right now, when the user turns on the free trial switch, it correctly selects the package that includes the trial for the Monthly plan. So far, so good. However, if the user then changes the plan selection (for example, from Monthly to Yearly), the switch state stays the same, even though the Yearly plan should not allow a free trial. I couldn’t find clean way in the Paywall Editor to update or override the switch state when the user changes the selected plan, or to prevent the trial package from being applied to the Yearly option. How should I structure this logic?Does anyone have a recommended approach or a better way of handling this behavior?
Hello Everyone,I'm experiencing a significant issue with trial conversions in my app. Approximately 90% of trials that are not manually cancelled by users are failing to convert to paid subscriptions due to billing errors.Key details:Store: App Store Market: Brazil (BR) Product: Annual subscription with 7-day trial Issue: Billing errors at trial expiration, not user cancellationsMy questions:Is this billing error rate typical for the Brazilian market? Are there known issues with payment methods or banking infrastructure in Brazil that could explain this? What actions can I take to reduce these billing errors?I'd appreciate any insights you can provide on this issue and if someone have a similar experience.
I don’t see a way to define a free trial in the test store. I would like to verify that my paywall is working correctly and showing the right messages. What is the best way to test this?
I would like to setup the webhook but keep it off. It looks like the only option is binary: it exists and is turned on, OR, delete it.Any way to have it exist, but it’s off?
I have tried looking at all the prior topics about how to trigger a TRANSFER event after an anoymous user purchase followed by a user logging in with a custom ID. Based on my understanding of the docs, this scenario should apply but it appears it doesn’t apply. There’s been a lot of requests on this topic: has revenuecat made any updates to make this webhook possible, which maybe I missed?I want to trigger a “welcome” email from the webhook since RevenueCat is the source of truth. I am surprised how challenging it is to solve.I tried the recommendation of `syncPurchases` after login, but did not work and also results in: ERROR [RevenueCat] 😿‼️ Error when syncing subscriber attributes. Details: The operation couldn’t be completed. (RevenueCat.BackendError error 0.)UserInfo: [:] I can’t want to wait for the “renewal” event because thats obviously too long of time. The expiration & cancellation only work because by this point user has logged in. How can I use this webhook to up
My app has a subscription entitlement called PLUS, with the following durations: 1-month, 3-month, 6-month, and 12-month. This subscription covers the features that require ongoing operational costs.I also have a one-time purchase product with an entitlement called EXTEND, used to unlock lifetime features that do not require any ongoing server cost.What I’m planning to do is:For the 6-month and 12-month subscription products, I want to include EXTEND as a bonus.Here is the flow I am considering:Add the 6-month and 12-month subscription products to the EXTEND entitlement in RevenueCat, so users get both PLUS and EXTEND when they subscribe.On my server, I will call the REST API to grant them a promo lifetime entitlement for EXTEND.My question:If the 6-month or 12-month subscription expires later, will the EXTEND lifetime entitlement (granted via promo) remain active permanently? Or will RevenueCat deactivate EXTEND because the subscription entitlement expired?
Hello, this is all about Android, iOS works fine.The title sums it all basically. Little code environment context - I do launch a new activity upon purchase under singleTop launchmode. So it’s separated from my singleTask Main Activity.Now the issue. When user gets a bank redirect to verify payment, it all goes well, everything works, they confirm. But once they go back via the hardware button, the purchase gets cancelled. If they background the bank verification and bring my app forward, it all works as expected. What should about it? Thank you. <activity android:name=".PurchaseActivity" android:theme="@style/AppTheme" android:launchMode="singleTop" android:taskAffinity="cz.erudita.app" android:excludeFromRecents="true" android:alwaysRetainTaskState="true" android:clearTaskOnLaunch="false" android:windowSoftInputMode="adjustResize" android:screenOrientation="portrait" andro
I'm having a case where when calling the function (purchasePackage), my user's account was deducted but the revenue side reported an error. I only tried to catch this so I don't know what the error is. I don't know if anyone else has the same problem as me. I develop with flutter. I have to ask the user to click "restore purchase" so that it can receive the subscription.Can you tell me why this error occurs?
In the charts I check my new trials by offering. I`m a bit confused. There are many new trials in row “No Offering”.How is “No Offering” possible in Revenuecat. Everything is an offering, correct? Could it be my web sals with stripe, where offering is not detected correctly or something like that?
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.