Discussion and help from anything related to RevenueCat.
Recently active
are the “latestExpirationDate” from the SDK or the “expiration_at_ms” from webhook events equivalent to the renewal date? I can't find a dedicated renewal date field, and I wonder if these fields are updated each time the subscription is renewed.
Hi there,I am trying to implement the RevenueCat paywall into my project, I’m getting past the paywall in my app and its unlocking all the features, great!I check the debug log, i am getting the INFO: 😻💰 Purchased product log, great!However, nothing is showing up on my dashboard or even in my StoreKit transaction list...I am pretty new to this so it could be a very easy thing I am not doing, but I’ve been stuck on this for 2 days trying to fix it so any help would do at this point!Thanks.
We previously had a hard paywall, meaning when users started their trial, they also accepted that they would automatically convert to a paid sub unless they cancelled beforehand. This triggered the rc_trial_started event, and later rc_trial_converted event.We decided to experiment and move this hard paywall as we saw drop-off from people not wanting to commit. Now users can start a trial, and at the end of the month they’ll be prompted to upgrade to a paid sub (if they want). The issue is now rc_non_subscription_purchase event is triggered when they start their trial, which is throwing off all of my reporting, particularly trend analysis for trial conversions. Is there a way to continue using the rc_trial_started event so I have continuity in my reporting?
Hi, I need to check whether user is able to use the service with his current subscription and I found that there is “expires_date” in the response of the API.Is it ok to only check this field for validation? Will it be updated once refund or other intermediate stops happen?
Hello! when user make purchase new alias created, even on Webhooks there is only 1 alias and original app user id is no correctI am losing subscribers right now and getting refund because I cannot update the user as premiumPlease check screenshots I perceive that my sdk version were 5.6.0 when I update it it updated to 5.20.0 maybe that was the issue ?
Hi, You guys do a great job with the State of Subscription App report, but there is no definition for `high priced`, `mid priced`, `low priced`. Do you have specific ranges for these? Even if they are by category.
The subscription part of my app charges users per week and the initial purchase gives users a 2 week trial period, which means they have 2 weeks before the initial subscription expires.I submitted my app for review and I got a rejection:Guideline 2.1 - Information NeededWe are not able to continue our review because we need access to a demo account with an expired subscription to review the entire purchase flow.Next StepsTo resolve this issue, provide a user name and password for a demo account with expired subscriptions in the App Review Information section of App Store Connect.The issue is when I make a sandbox test purchase, the expiration date is 2 weeks from now. How can I force a faster expiration date? If I can’t, then I have to wait 2 weeks until I can give this to the reviewer.Here are the purchase printouts from RevenueCat latestPurchaseDate= 2023-11-05 22:14:03 +0000originalPurchaseDate= 2023-11-05 22:14:03 +0000expirationDate= 2023-11-19 22:14:03 +0000 I went to App Store C
Hi,I have set up the Customer Center offer (refund + cancellation offer), but on Android, I have some strange feature. Customers are able to subscribe the refund offer on the Paywall (without any refund request, and hand-made paywall with the SDK).Looks like Revenue Cat doesn't exclude offer with `rc-customer-center` from the list of offer. Do we have to add the `rc-ignore-offer` tag too on Android ?It's not a big mess for now, but the way promotional offer works is really strange…At the moment, looks good for iOS.Regards,Platform: React-Native
Hello, the documentation for Facebook https://www.revenuecat.com/docs/integrations/attribution/facebook-ads#5-send-revenuecat-events-with-the-conversions-api says we should prefer using the Conversions API integration now. However, when searching through Integrations in our project settings, there is no Facebook Conversions API integration. There is only the old Facebook Ads api integration.
I am using Flutter RevenueCat plugin for my App.I just release a closed testing and distributed to some of the users for Android.Surprisingly, a couple of users complain that from Paywall they have got their real money deducted which is true. However this is not for all users.To my understanding there is no test or production environment to set for RevenueCat. Kindly help with probable reasons. I ensured that the user email ids a included in license testing in Google Play console.Thanks in advance.
In the docs of https://www.revenuecat.com/docs/api-v2#tag/Purchase, it requires purchaseId which seems to be missing from the react native SDK?I have tried using both transactionIds in customer info and in the transaction object but it the api fails to return so. Is this because the IDs are only in sandbox/test purchases in Android? Using the get all https://www.revenuecat.com/docs/api-v2#tag/Customer/operation/list-subscriptions is less than ideal when one user has multiple purchases.
We are building a cross-platform app.When trying the capacitor plugin, we are getting: Web not supported in this plugin.Is capacitor/ionic supported in iOS and Android only?
We received feedback from Apple’s app review.Our app is designed with RevenueCat’s “Transferring purchases seen on multiple App User IDs” setting set to “Keep with original App User ID”, which prevents users from making in-app purchases without registering an account. However, Apple’s review guidelines prohibit requiring user registration before allowing content purchases. We would appreciate any suggestions for the best workaround to comply with Apple’s guidelines while maintaining a seamless purchase experience. References:• RevenueCat Documentation: Keep with original App User ID Feedback from Apple:Guideline 5.1.1 - Legal - Data Collection and Storage We noticed that your app requires users to register with personal information to purchase in-app purchase products that are not account based. Apps cannot require user registration prior to allowing access to app content and features that are not associated specifically to the user. User registration that requires the sharing of perso
HiI create one subscription with two base plans(both with free trial offer).one is backwards compatible(monthly),other is non backwards compatibleAnd I created a default offering with three packages,(monthly, yearly, lifetime)when I called getOfferings() to get all available packages I only get monthly and lifetime ,can’t get yearly(non backwards compatible) package.I tried RevenueCatUI.presentPaywall(); It also get only two packages.btw I tried this:https://community.revenuecat.com/tips-discussion-56/google-play-store-non-backward-compatible-not-being-fetched-3888?tid=3888&fid=56 Not workingWhat can I do to solve this problem? Thank u!purchases_flutter: 8.6.1 (I also tried 8.6.0 and 8.3.1)Flutter: 3.27.1com.android.application:8.9.0 (also tried 8.8.0)gradle: gradle-8.12.1-all.zip
I have 3 tiers of products, individual (monthly, annual), team (monthly, annual), and enterprise (monthly, annual) So I want my paywall to have a tabbar which allows viewing each tier of subscription and letting the user select the relevant package. This seems to have been possible with in paywallsv1, but I can’t figure out how to get the v2 editor to do the same thing. Is this currently possible via the editor?
Hi everyone,Is anyone here a member of the Play Pass program? We're trying to figure out how to configure RevenueCat to support it properly.Specifically, we’d like to know how we can check if a user is a Play Pass member and, more importantly, how to detect when a user is no longer a member.Any insights or experiences would be greatly appreciated!Thanks in advance!
Getting error from some users around %2Error Code : A network error has occurred. An SSL error has occurred and a secure connection to the server cannot be made.
Hi, quick easy question from a newbie. What I have to use to get the Appstore country used to fetch the Appstore purchases ? Is that in packages? if let packages = offerings?.current?.availablePackages { … Also I need to be able to show the price in the Appstore country Currency , not the locale country, how to achieve that? Thank you.
i need help with the app store connect p8 key file. i get this message: Valid key format The App Store Connect API credentials are not valid or do not have sufficient permissions to list apps. Make sure the key has at least the App Manager role. The App Store Connect API credentials are not valid or do not have sufficient permissions to collect information about your subscriptions. Make sure the key has at least the App Manager role But i am the owner and Admin of the App in app store connect. i don’t have any other users or groups.i ticked on everything when creating the key on the apple page. please help me resolve this
Hi,I have set up multiple apps under a single RevenueCat project because I want a subscription purchased in one app to be valid across all my apps. I have configured my products accordingly.Each app has its own offering page, and I have linked separate paywalls to each one.However, when initializing RevenueCat in app1, I get the following warning:[offering] WARN: ⚠️ There's a problem with your configuration. No packages could be found for offering with identifier app2_offering. This could be due to Products not being configured correctly in the RevenueCat dashboard, App Store Connect (or the StoreKit Configuration file if one is being used).To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings.More information: https://rev.cat/why-are-offerings-emptySimilarly, when I launch app2, I get the same warning for app1_offering instead.I believe this is happening due to my setup and is not an actual issue, but if that's the case, perhaps RevenueCat could
Hey guys,I’m using RevenueCat to manage subscriptions in my app, which has an image generation feature. Right now, I register users with an anonymous RevenueCat ID, and it works great for tracking—even if users reinstall the app or clear data.But I want to set limits on free usage. Like, each user should get X free image generations per day or week, and after that, they either buy credits or subscribe. Is there a way to track and enforce these limits using RevenueCat, or would I need to handle it separately on my backend?My app currently has 1000+ daily active users and 500+ subscribers, but there are also a lot of abusers trying to bypass restrictions. I want to make sure free users have fair access without getting exploited.Has anyone implemented something like this, or is there any guide for it? Would love to hear your thoughts!Thanks!
I’m developing using Expo React Native."react-native-purchases": "^8.7.0","expo": "~51.0.39", I’m running into a strange issue where the paywall shows up fine on IOS in production, and it even shows up fine on Android in testing (I connected my phone to my computer and ran dev build on my phone) However, in production, it begins to show a paywall that’s completely different from the one I configured, seems to be some sort of default paywall Not quite sure what’s causing this, need help!
I’m using Web Billing and want to make sure upgrades work for my customers, without having the possibility they could be paying for two subscriptions at the same time.I have one entitlement (premium) and two products (annual and monthly). I want to allow customers to switch, and have that switch happen at the end of the current period (i.e. end of the month for monthly, or year for annual). Is there a way to do that with web billing? If it must be done by canceling and re-subscribing, and they canceled with time left on the period, are they able to immediately re-subscribe? For instance, a monthly customer is set to renew on March 15, 2025. They want to switch to Annual. Can they cancel and immediately subscribe to annual, but not get charged until March 15, 2025? Or get charged immediately, but have their entitlement extended to March 15, 2026 anyway?Or, is there a way that I can let a Monthly customer subscribe to Annual and then automatically use the API to trigger a cancellation of
Hi, We are trying to optimize our Google Ads App Campaigns using in_app_purchase event for iOS and Android. However, we do not see a value for this event in google ads. We are optimizing for trial starts, but the rc_trial_started_event does not contain metadata about the purchase amount, so therefore when this is passed to Google Ads App Campaigns (via Branch) it is coming across as an empty value. We need the in_app_purchase value to be populated in google ads so we can run these campaigns properly. Would it be possible to add these values to the webhook call? Or is there something else we can do to assign a value. Best, Jake
My paywall is displaying the default formatting for the android paywall, rather than my custom UI. IOS displays perfectly but I understand it is less opinionated in terms of config.I have put in DEBUG logs but the android one doesn’t appear to get any warnings - maybe failing before it gets to show any warnings. the IOS one gets the following warnings, which may be helpful?LOG [RevenueCat VERBOSE] Looking up localized configuration for ["en-GB", "it-GB"], searching for ["en-GB", "en", "it-GB", "it"] LOG [RevenueCat VERBOSE] Found localized configuration for 'en-GB' LOG [RevenueCat DEBUG] ℹ️ Looking up localization but found no strings LOG [RevenueCat WARN] Could not determine price format because price string is incompatible. LOG [RevenueCat WARN] Could not determine price format because price string is incompatible. LOG [RevenueCat WARN] Could not determine price format because price string is incompatible. LOG [RevenueCat WARN] Could not determine price format because price st
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.