Get help with anything related to RevenueCat.
Recently active
Hi!I want to create an iOS App that sells brushes for the iOS App Procreate.There will be hundreds of items and my plan would be users could purchase individual brushes for a one-time payment and I would like to offer a subscription to simply unlock all brushes for the user.I have never created an app bnefore so I am wondering how to set this up. Can I create all the products within RevenueCat or do I also need to create them on the App Store? After purchasing, the App should download the brush onto the device of the user. From what I understand, I need to sign the download links to only give access to legitimate users.How do I handle this? Does RevenueCat support this flow or do I need to use my own server with webhooks? Thank you very much in advance!
Hi! We are setting of our paywall and want to offer 2 options (annual and lifetime). Annual is a subscription and lifetime is a 1-time purchase. We want to offer a 7-day free trial regardless of what the user chooses - we are able to set this up for the annual subscription, but can’t figure out how to offer it for the lifetime (one-time) purchase.Is it even possible to offer a free trial for the lifetime purchase? Thanks in advance!
Hello! So I'm making an alarm app and since the users are anonymous I'm facing an issue with cancelling and refunds. I can't do authentication but I thought that maybe I could write to Firestore through webhooks the anonymous Ids along with the state of the subscription for the user as read only data, then each user can listen to the corresponding document. Is there any security risks from the point of view of Revenuecat to expose these information public ally? I'll add app check of course, but still want to make sure it's safe to do this. Thank you.
Hi all, We offer a monthly and annual plan and our products are divided by those plans. However, I’ve been using the “product duration” filter in some reports and see that a lot of the data is coming in as “weekly” product duration. Is there a way for me to 1) view which products might have a weekly duration and 2) edit that?
I cant seem to draw any conclusions from RC docs for the matter. This is for an android app.A user (John) pays for offering A (110 $ per year) which was the default I change the default offering to offering B (69$ per year) What offering does John (who is already subscribed with the pricier sub) see when he opens up my paywall?In the Customer Profile, I see that John’s “current offering” is set to offering B. Does this mean that he sees the cheaper offering now? And if so, how can I make it so that the users that have already paid for a pricier sub, still see the offering that they paid for?Thanks
Does Purchases.configure() need connection to network? I am configuring offline mode and curious about preferences to initialize the app.
I am using react native and looking at the customerInfo object, it seems that managementURL is at the top level. I am wondering why it is not inside each entitlement maybe or a better place to account for multiple purchases on different platforms..Example, if I log into the app on Android and make a purchase, then also login on iOS and make another purchase, wouldn’t I need 2 managementURLs (one for each store)?
I am new to RevenueCat and I am looking for advice on how to architect my consumable in-app purchases with ReveneCat. With the current app I am developing for macOS, I use the AWS Polly service and each usage of Polly costs money (pay as you go). I am using consumable in-app purchases to control my cost structures from users so that I will always make a profit no matter the overall customer usage. One requirement is fiscal security where the user can't spoof/hack the consumable resources on device, so I need to store their current resource count in the cloud. I read the following in the ReveneCat help pages.Non-Subscription Purchases:It's important to note that at the moment, logic for keeping track of consumable redemptions must be handled outside of RevenueCat. We recommend your server is set up to receive Webhook events for NON_RENEWING_PURCHASE to appropriately provide consumable content for your users.For example: RevenueCat can track a consumable coin purchase and include it in t
According to the docs, fetching a list of customers should include an active_entitlements hash. However, when I paginate and pull our list of customers, none of them have this object. Is this a bug with the API, or an issue with the docs?We’re calling https://api.revenuecat.com/v2/projects/<PROJ_ID>/customers, so if there’s an ?expand= I’m missing I’d appreciate some clarification! 😄 Our use-case requires us to fetch the entitlements of our customers and filter the list based on their status, so if active_entitlements isn’t meant to be returned, this means we’ll be round-tripping thousands of customers to the respective expansion route (projects/{project_id}/customers/{customer_id}/active_entitlements).
We are looking to phase out our app (sad days). The idea is to keep it running for another year so the annual subscriptions can run their course We currently have monthly and annual subscriptions, with annual having some additional perks in-appWe removed it from sales from the App store (and equivalent for Play store) to prevent new purchases and auto-renewing, however it seems the subscriptions are still auto-renewing Are there any other steps we need to do?
I am trying to read my logs on development, in iOS, using the Console (not console log), to find messages as per docs. However, I can’t find any messages within the Console filter. On Android `abd logcat` I see them fine. What’s the trick for iOS log viewing?
Hi!We currently have three different subscriptions active in production each with single base plan. Now creating new single subscription with three base plans seems best fit for our usecase. How do I make sure that the users with current active auto-renewable subscription doesn’t get affected if I have to create new one subscription with three base plans?
Hello, I have a project using React Native. In my project, I have subscription products that allow users to access in-app features. If I purchase a subscription on iOS or Android, will I be able to use the subscription on the other platform? Does RevenueCat have a feature for this? My product IDs for iOS and Android are different. How can I use a subscription purchased on iOS on Android as well? Do I need to update something in the backend? Could you please help me with this?
I’m able to build and run the app following the steps in https://github.com/RevenueCat/purchases-ios/blob/main/Examples/MagicWeatherSwiftUI/README.md.Sorry, a very basic question—my RC configurations (entitlements, products, offerings) are defined for my own app XYZ, with corresponding subscription product IDs for XYZ. What does the MagicWeather app expect to be done on the App Store Connect side? Should I add a “MagicWeather” app in my App Store Connect and define subscriptions specific to that app? Or do the subscriptions I’ve defined for my XYZ app in App Store Connect work with this MagicWeather app? Confused—sorry for the basic question. I hope a revision to the project README file can clarify this.
What are the best practices to implement offline use-case?One of the main features of our subscription is to use our outdoor app with poor internet reception or no reception with maps and other information downloaded before. can we check the subscription status while the device is offline? what happens when the reception is very bad but not offline, is it still good to call “Purchases.shared.purchaserInfo” or will it make the UI feel non-responsive?
I made a sandbox purchase but after the subscription expired ReveneCat is now seeing my non-sandbox subscription which is still active so it never expires in the app. Am I doing something wrong here?The customerInfo dictionary is showing non-sandbox:2024-08-17 17:48:36.722499-0600 BackcountrySkiReporter[3714:868874] [network] DEBUG: ℹ️ GetOfferingsOperation: StartedPrinting description of purchaserInfo:<CustomerInfo:originalApplicationVersion=1.0,latestExpirationDate=Optional(2024-08-26 21:26:33 +0000),activeEntitlements=["pro": "<EntitlementInfo: \"\nidentifier=pro,\nisActive=true,\nwillRenew=true,\nperiodType=PeriodType(rawValue: 0),\nlatestPurchaseDate=Optional(2023-08-26 21:26:33 +0000),\noriginalPurchaseDate=Optional(2018-08-19 21:26:34 +0000),\nexpirationDate=Optional(2024-08-26 21:26:33 +0000),\nstore=Store(rawValue: 0),\nproductIdentifier=com.bcski.pro.annual,\nproductPlanIdentifier=null,\nisSandbox=false,\nunsubscribeDetectedAt=nil,\nbillingIssueDetectedAt=nil,\nownershi
Hello, We export RevenueCat data to Metabase via a Webhook. We'd like to reproduce the main tables we have on RevenueCat to cross-reference them with our other collected user data, but we can't find the same data between our Metabase and RevenueCat tables. We've tried to follow the instructions on this article, but the names of the columns we have are different from those indicated on this article. Do you have more precise documentation that would enable us to reproduce your tables using the three tables provided below this email? Maybe it would be easier to do a visio to see it together?Thanks a lot for your help,Louis Table 1 : RevenueCat Subscription Event : - ID- Event ID- Type- App User ID- Original App User ID- Date - Store - Cancel Reason- Expiration Reason- Usd Price - Eur Price- Price- Currency- Tax Percentage- Comission Percentage- Transaction ID- Original Transaction ID- Country Code- Offer Code- Device ID Attr- Product IDTable 2 : Revenuecat Subscription- ID- Subscriber ID
This might be related to this threadI used the Stripe test mode to purchase a subscription. It's shown in Sandbox mode on the RC website for that customer. The customer has the attached entitlement granted. But when I call the REST API like this:https://api.revenuecat.com/v2/projects/${revenue_cat_project_id}/customers/${user_id}/subscriptions?environment=sandboxIt returns an empty list.I don't see the documentation mentioning anything about the subscriptions endpoint still being in beta, so I assume it should work for Stripe subscriptions as well. The goal I'm trying to achieve is for my Flutter app to determine which store a user's current subscription was purchased with on the web. I need this information to provide them with the correct management URL.I'm using the SDK for mobile platforms, and a Firebase Function to call the REST API on web, because I believe the Flutter SDK does not work on Flutter web. Correct me if I'm wrong. I'm open for any suggestions on improving this flow
When I submitted my app for review on the Play Store, it was rejected due to a "Broken functionality policy violation." The email included a screenshot that shows "The item that you were attempting to purchase could not be found." After investigating this error, I found that it occurs when the app is used with the non-License Tester. Therefore, I attached the License Tester account information to the app submission details and explained to the reviewer how to log in with the License Tester account. However, the app was rejected for the same reason again. In this case, how can I pass the review?It seems that the reviewer is not logging in with an account registered with the License Tester, so I looked for other methods. In one article, it was reported that it was possible to pass the review by ensuring that the error dialog would not appear, even if the purchase could not actually be completed.So, I ran the app locally using an Android device logged in with a non-License Tester account
Hello,We have a huge rate of “Payment Pending”, “Payment Decline”, and “Canceled” on our subscriptions in Google Play Store, after the end of one-week trial.We tried contacting Google several times, but they say everything is normal and don’t give us any helpful answer. :-/Since some of the payments go through, we believe it shouldn’t be a general technical issue. So, we are wondering if anyone has any idea, thoughts, or experience that can help us. Here is one page of our “Order management.” We have 8 pages like this in August. Further Notes:We are in the US, and running Google Ads in the US. (Most these users are US-Based.) We have a registered LLC in California, operate in California, have got a D-U-N-S number and Tax Registration numbers and we have put all of them in the Developer profile and Google has validated them. We tried switching from $59.99/yr to $7.99/mo (with one week trial) to reduce the transaction amount, but we still see a lot of these Payment Pending/Declined/Can
For my product, users frequently download the app after subscribing by first redeeming a promo code.Sometimes, on a fresh install, RevenueCat automatically syncs a user’s subscription. Other time, it does not and the user has to tap our “restore” button, calling restorePurchases, making for a confusing UX. After much testing, I cannot explain this discrepancy.What is the best way to ensure that the user’s subscription restores/syncs preemptively, so I can present the correct onboarding process? Calling syncPurchases does not seem to help at all. I’ve tried it before sign-up (anonymous user ) as well as after sign-up (after calling logIn and setting the user ID with RevCat).The docs indicate that syncPurchases should successfully sync the subscription like restore does:This method, much like restorePurchases, reactivates any content that had previously been purchased from the same store account (Apple, Google, or Amazon).This answer from the RevCat team specifies about anonymous ids: sy
Hello! I am trying to verify a user’s subscription on my backend, and it seems like there’s a lot of event types from the revenuecat webhook to consider.https://www.revenuecat.com/docs/integrations/webhooks/event-types-and-fieldsI want to know if i want to ensure my user’s subscription status on my backend matches with the revenuecat source of truth, do i need to necessarily implement a handler for each of these event types? It feels like alot of effort, and I am wondering if there is usually a need to implement handling for all event cases, or do most apps just need to implement for a few event types?
I want to present the Paywall, if needed, on every 4th launch of the app. I can track the launch count, but can’t seem to figure out how to couple this with .presentPaywallIfNeeded in the ContentView. // Show paywall every 4th launch if launchCount % 4 == 0 { // Present RevenueCat Paywall presentPaywall() }import Foundationimport RevenueCatclass SubscriptionManager: ObservableObject { @Published var hasPro: Bool = false init() { checkSubscriptionStatus() } func checkSubscriptionStatus() { Purchases.shared.getCustomerInfo { (customerInfo, error) in if let error = error { print("Error fetching customer info: \(error.localizedDescription)") return } print("checkSubscriptionStatus") DispatchQueue.main.async { self.hasPro = customerInfo?.entitlements["pro"]?.isActive == true print("hasPro: \(self.hasPro))") } }
Similar to this post I have a iOS RevenueCat pricing experiment. Separate from that, I have offer codes that users can use to purchase the subscription (standard Apple offer codes). Will the experiment accurately exclude purchases made through offer codes?
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.