Get help with anything related to RevenueCat.
Recently active
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?
This is my first time using RevenuCat moving away from native packages for IAP and I’ve been rejected from Apple (another first)It feels like I'm in a bit of a chicken and egg loop where the paywall modal isn't showing the products because apple haven't approved them yet and apple wont approve them until they show up in the paywall modal.Is there something from a RC perspective that I'm missing? I have two subs added (monthly and yearly) and one purchase added (lifetime) in App Store Connect. The first time they rejected and I went back in and changed a few things just to get them ready to submit again then resubmitted. These went to apple for approval when the prod version of the app did. They're saying they can't approve because pay wall isn't pulling in the products or prices, it's just showing blank but RC can see the products and prices in ASC, I can see that in the RC dashboard but they're not showing up in the production build - just a blank paywall. I'd really like to use your
After adding RevenueCat, the IPA size has noticeably increased a lot. Screenshot as below: Is there any way to optimize the app size?
Is there a way to grant virtual currency on a monthly basis when using an annual (or otherwise non-monthly) plan?From what I can see, all of the currency is currently granted at the time of purchase/renewal, which feels a bit odd. I wouldn’t expect the plan duration to change the “usage/behavior” of the virtual currency. Ideally, my users should stay engaged throughout the entire subscription period, rather than burning through all of their tokens in the first month.I’m new to RevenueCat, but I’m assuming I can work around this by handling it myself: for example, listening for a subscription purchase/renewal event, then scheduling a monthly cron job that grants the user virtual currency via the v2 API. Is that the recommended approach, or is there built-in support for this use case?
I’m using revenuecat for an app called Snap Tap Relax. I’ve doing a free trial and get over 130 free trials but more 85% results in billing errors. That doesn’t include people who cancel. Everything is set up correctly I still get some free trials converting so seems to be set up correctly. I hear others having similar problems.Just was curious if anyone ever solved this? This is on Google Play where it’s happening. I read on revenuecat yearly state of address billing errors for android are up to 29%. Which is not adding up on my end or what I’m seeing others reporting even on IOS. And just so you know i’m running google app promotions campaigns and optimizing for people who do a free trial plus do a relaxation session. So a better signal to send back to optimize for instead of just free trials. And get about 10 conversions per day. Any help would be greatly appreciated.
I tried to connect the google play console with revenue cat.I completed the setup mentioned in the revenue cat document. Now iam trying to import the products from google play console, its throwing an error, I can’t understand what’s the status of integration.
Hello!I have added a RevenueCat paywall, and on iOS everything works correctly, I see the exact paywall I created in the dashboard.However, on Android the paywall looks completely different: it shows a gradient background, large logo, “Restore purchases” button which is removed, and is missing all the feature texts. But the offerings are correct.It seems that Android is loading the legacy or fallback paywall instead of the new Paywalls v2 design.Details: Paywall ID: default Offering ID: default react-native-purchases: 9.6.0 react-native-purchases-ui: 9.1.0 Using: (RevenueCatUI.presentPaywall({ offering: currentOffering }) Tried: Uninstalled and reinstalled the app Republished the paywall Confirmed products and entitlements are shared between iOS and Android Could you please help we figure out what is causing this issue?Thank you!
Hi,I process webhooks events in my API, it works. For more resilience, I also sync with the subscriptions endpoint:https://api.revenuecat.com/v2/projects/$projectId/customers/$userIdStr/subscriptionsregularly. Sometimes the sync calls are triggered directly after processing the webhook, and they seem to return stale data, effectively reverting the webhook updates.How to deal with this? I assumed that subscriptions api was the source of truth, but this appears to not be correct?Interestingly I’ve been using this system for about 3 months without apparent issues but today this problem is happening consistently (specifically: subscription expires, I subscribe, receive “Initial” webhook, call `subscriptions` and get just the older expired subscriptions)Thanks
Hi,My app is integrated with RevenueCat and the subscriptions are set up in App Store Connect. When testing via TestFlight, the subscriptions correctly show a 3-day trial. However, once the app is live on the App Store, the trial option doesn’t appear.
I’m trying to set up products on an Android app. The documentation I’m struggling with to be specific is https://www.revenuecat.com/docs/service-credentials/creating-play-service-credentials?embed=true I’ve run the automated script successfully and such. But I’m stuck at this section:Once the script has finished running, you will need to upload the revenuecat-key.json file from the Cloud Console shell instance to RevenueCat in your Project Settings > Google Play App Settings > Service Account Key. I can’t see “Google Play App Settings” anywhere, am I looking in the complete wrong place? I asked your AI model for help: The location moved. You now upload your Google Play service account key under each Android app, not at the project level.Do this:In the RevenueCat dashboard, go to your Android app. Open App Settings > Service credentials (Google Play). Click “Upload key” (or “Replace key”) and upload the JSON you generated (revenuecat-key.json).If you don’t see the upload area:M
Hey guys, I'm going crazy with this problem. On Android, I can't repurchase a product that has already been purchased.I've set the product as digital and the problem persists.1 - The products don't have any entitlements added.2 - I can retrieve the products from the revenue catalog, and the checkout starts normally.But I can't repurchase the products, and I haven't found any clear instructions in your documentation explaining why this problem occurs.I need a product with a one-time payment to be able to be repurchased as many times as possible. My backend is already configured for this, but the problem persists.
Hello,I try to setup my app for android with revenue cat but the commande line on the shell editor of google cloud doesn’t work. I received this message after the execution but revenuecat show me that the JSON file doesn’t work properly. [SUCCESS] 🎉 Setup complete! The service account is ready for RevenueCat integration. Use the file revenuecat-key.json for your RevenueCat project, and use the service account revenuecat-service-account@project-id.iam.gserviceaccount.com for permissions in Google Play Console. This line remains in red: ❌ Permissions to call subscriptions API How I can debug the situation plz ? Thanks
Hi!I'm testing a weekly auto-renewable subscription on iOS sandbox (via TestFlight) and RevenueCat is only delivering the initial purchase event. After that, there are no renewal events, no new transactions in the dashboard, and no webhooks — even after ~10 minutes.RevenueCat shows: Purchased: ~12 minutes ago Expires: in a day (production duration) Type: New Sub But the subscription never auto-renews in sandbox, so my app can’t reset weekly credits.This works perfectly on Android, so the issue is probably related to Apple’s iOS sandbox/test environment, which is known to be flaky but I’m asking here in case there’s something I’m missing on the RevenueCat side or if others have seen the same behaviour.Any guidance or confirmation would be appreciatedThanks!
We are using the Keep with original App User ID option for the restore behaviour, as it seems to be the best option for our business logic. We are handling the RECEIPT_ALREADY_IN_USE error when the user tries to restore a purchase, which indicates that the subscription is already associated with another App User ID.If this error is thrown, we show a popup asking the user to log in with the email they were logged in with when they purchased the subscription. However, there doesn’t seem to be an easy way to tell the user which email that was, and it’s quite likely they might not remember.So my question is, how can I get the conflicting App User ID that’s causing the error? We use the RC Firebase extension, so I should have the account details (email) for any App User ID available to share with the user, but how can I get the relevant App User ID?My guess is that the original_transaction_id would be the correct identifier matching the two App User IDs, but that doesn’t seem to be exposed
HiI'm hitting a major roadblock with App Store Connect and was hoping someone could help.I originally submitted my app with some old subscriptions, which got stuck in "Waiting for Review." To fix it, I uploaded a new build and added three brand new subscriptions. They briefly showed as "Ready for Submission," but then reverted back to "Waiting for Review" again.How is the App Store review team supposed to approve the app if the paywall can't load without the subscriptions being approved first? This seems like a circular dependency. I've seen tons of other devs complaining about the exact same issue online.Also, are subscription approvals truly separate from the actual app approval process? It feels like they're tied together, but I'm not sure.Can someone explain if they’ve been able to resolve this or is it just a case of hounding the apple review team to approve my subscriptions?Thanks
Hi RevenueCat team,I’m experiencing an issue where the Attribution dashboard no longer shows any Apple Search Ads (ASA) keyword data. All traffic is now being classified as “organic,” even though I can clearly see subscription conversions coming from Apple Search Ads in App Store Connect.The data displayed in RevenueCat seems incorrect or incomplete. My Apple Search Ads setup appears normal, and the app has shown successful conversions. However, RevenueCat has not shown any ASA attribution data for almost a month, and my app code has not changed during that time.Could you please help me troubleshoot this issue? Why is RevenueCat no longer receiving or displaying Apple Search Ads attribution data?Thank you!
Hi,I want to change the disclaimer text in my paywall depending on the type of package the user selects. When the user picks a subscription package, I need to show the cancellation instructions that Google Play requires. When the user picks a lifetime package, I want to show a simple one time purchase disclaimer.I know about the promo offer text field, but that only works when the offer is active. Is there a way to implement this from the Paywall editor?This is the behavior I am trying to achieve.When a subscription package is selected:When lifetime package selected: Thanks!
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.