Learn and Share
Learn more about RevenueCat and talk about it with the community.
When making purchases, you might run into unexpected errors. A common one we see our developers face is the `PURCHASE_NOT_ALLOWED` error. We have this error documented in our error handling docs. This error comes from Apple or Google and is not an indication that something is wrong on RevenueCat's side. This Error on Android When working with Android, your error might look similar to this:`ERROR: The device or user is not allowed to make the purchase. | Billing is not available in this device. DebugMessage: Google Play In-app Billing API version is less than 3. ErrorCode: BILLING_UNAVAILABLE` This error is generic; there could be several reasons this pops up. The most common is that your Android OS is out of date. We recommend updating through the Play Store and seeing if that helps. Other things to check when you get this error: Are you logged in to the correct Google Account on the device/emulator? Try logging out and logging back in. If you're testing on an emulator, can you
Hey,I'm looking at my churn dashboard and I'm wondering wether our monthly churn and our annual renewal rates are good or bad compared to most consumer apps. I guess there is probably a pretty big variance depending on pricing and type of app, but it would still be nice to hear some data points from other consumer apps. When googling I find mostly data points from B2B SaaS which is a totally different animal.Can anyone share benchmark or a few links that explore this? Cheers,Florian
RevenueCat proudly helps create an easy way to keep track of all your in-app transactions. However, although we manage your purchases, we don't process the payments for your subscriptions and non-renewing products. The differences are best explained by understanding how RevenueCat interacts during the purchasing phase of a customer buying a subscription or non-renewing product. When a user goes to your paywall, the SDK uses the product IDs from your current offering and retrieves the product information from the respective stores ( Apple/Google/Stripe). When the user selects a product to purchase, the SDK gets the product ID to send it to the store to purchase The store then processes the payment (charges the user via their payment option) and adds this product to the customer's receipt. When the customer's receipt changes, RevenueCat has listeners that update the `PurchaserInfo` object (allowing customers to get access to the product/feature they purchased) and updates our
Hi! We put together a walkthrough of the dashboard on the RevenueCat Youtube channel. This may be helpful if you’re already up-and-running and want to learn more about the dashboard, or if you’re evaluating RevenueCat and want to get an idea of what you can expect. Let me know if this is useful and if there’s other content you’d like to see!
If you don't have or don't want a full website, it can be unclear on how to proceed with integrating Stripe payments alongside your existing mobile in-app purchases. This sample project demonstrates how to use Stripe Checkout and webhooks to send purchase data to RevenueCat. Once published, you’ll be able to share individual links with users that will automatically redirect to Stripe, then send the receipt back to RevenueCat once the purchase is completed.It’s recommended that you know the basics about RevenueCat and Stripe before continuing with this project. Example Use-Cases Win-back email campaigns Send individual links to expired users to re-subscribe using Stripe checkout. In this case, you’ll need to have app user IDs and email addresses paired (typically from your own auth system). SetupThe easiest way to use this sample is by deploying to Heroku instantly with the button below.Or you can deploy by clicking this link. The following environment variables should be set bef
Is there a way to display a specific product on the sales screen?The sales screen in my app is being controlled through my backend,with the way that the screen is built it’s important that i’ll have control over the specific In-App Purchase that’s being fetched.so if i can use the package identifier to fetch the product that would be great!unfortunately so far i haven't found this option or code in the docs...
If your app is using the native iOS SDK with Swift, you can access the transactionIdentifier field through the transaction object when purchasing the product. You can see more details about this in our 'Making Purchases' docs and RCTransaction object in the iOS SDK. This field is not accessible through RevenueCat's other SDKs, however, can be accessed through webhooks and ETL exports. Typically the information included with PurchaserInfo and EntitlementInfo objects is enough data for most implementations of our SDK.If you're looking for the transactionIdentifier to track consumption of consumable products, consider using RevenueCat's GET /subscribers endpoint instead. You can utilize RevenueCat's unique identifier, id, in the non-subscription object to track consumption of all your consumable products.If there are any additional use cases for utilizing the transactionIdentifier, we'd be happy to share the feedback with our team and/or find another way to help you solve what you're tryi
Hi! I’m Jacob, recovering iOS engineer and CEO of RevenueCat. It’s still a bit mind boggling how many folks are using our little SDK these days, and I’m excited that we have an open community to chat about it. I’d love to hear your product and company feedback. I don’t get to spend nearly enough time with developers using our product day-to-day and would love to hear what direction you think we should take the SDK, the dashboard, and ultimately the company. We are here to help you make more money with your apps, so tell us what you need! P.S. I’m thinking about making an app. Can you still make apps in Objective-C?
App Tracking Transparency (ATT) is Apple's framework for requesting access to a user's IDFA. If you use any of our attribution integrations, this article will explain what you need to do to make your app compliant. What is App Tracking Transparency (ATT)?Starting in iOS 14.5, collecting the IDFA will require permission from the user. This is done by integrating Apple's AppTrackingTransparency framework in your app. How Does ATT Affect RevenueCat?RevenueCat will continue working as expected because RevenueCat doesn't depend on IDFA or collectDeviceIdentifiers to work. However, depending on the integrations or workflows you have, you may need to update your app to ask the user permission to collect the IDFA via collectDeviceIdentifiers. This section will help you figure out whether you need to integrate ATT.If any of the following apply to you, you don't need to integrate ATT:You only use integrations that don't require or rely on IDFA to work, such as Amplitude or Mixpanel. You don't mi
It’s a common issue that comes up on every single analytics platform - in one system you have 3105 active trials, on another, 5046. What’s the deal?These discrepancies are common, and can happen for a variety of reasons. This article covers why you can expect certain discrepancies between RevenueCat's analytics and other platforms, and what you can do if things don't seem right. Common Discrepancies Having a better understanding of how RevenueCat collects data and generates analytics can help a lot when comparing against other platforms. The following are the most common things to consider the vast majority of discrepancies can be attributed to. What is the source?The first thing to ask yourself when comparing analytics systems is to ask yourself, "What is the source of this data?". If the sources are different, then you should expect differences in the data as well. RevenueCat only collects data that is sent through our in-app SDKs or REST API - there's no connection to any other sour
App rejections are an unfortunate and dreaded aspect of launching a new app. It’s bound to happen at some point, and in the case of subscriptions and in-app purchases, it’s usually not something that you or RevenueCat can resolve.RevenueCat can’t contact Apple on your behalf and we can’t expedite the review process, but we can help you troubleshoot the rejection and work toward a resolution.If you’ve read through our docs on rejections and are still having issues, read on. Background / Review EnvironmentUnfortunately, Apple’s sandbox environment is notoriously flaky - there are regular outages and sometimes purchases can get hung up in their system. Most of the time this error is due to sandbox downtime, but you can read about all the causes for this error in our guide on error handling.Even worse is that Apple’s reviewers use this unstable environment for App Review, which can cause issues when the reviewer tests in-app purchases like subscriptions.The App Review team typically doesn’
Log in to the Community
Authenticate with RevenueCat
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.