Learn more about RevenueCat and talk about it with the community.
Recently active
Hey Revenue Cat users - I’m new to RevenueCat, but I’m creating an app that is all local storage, and currently doesn’t have any authentication. I want users to be able to try the app, but then pay a one-time flat fee to keep using it.Has anyone else built apps with this kind of use case for payment? It’s a flutter app, so it should be cross-platform. I want to have as minimal as possible of work for users.Are there any great docs on the revenue cat website (or elsewhere) detailing this kind of use case?
Include refunds / refund info. Refunds should also appear in transactions Paginate transactions page so we can view more
What features are you the most excited about?What would you like to learn more about?Many updates and changes have been introduced during Google I/O 22 and our team is busy deep diving into these topics and prioritizing them according to your needs. We would love to hear your thoughts and needs on these features. New Subscription Model - is it all clear what that means or would you rather we just take care of it? Play Console – how does your setup look after the changes? does this create an opportunity for your app? Flexible Offers - would you see yourself making a use of this? Prepaid plans - does this solve an issue for you? would you like to learn more about the payment landscape of recurring payments? Play Index - do you see yourself using the index moving forwards? If so, what kinds of communications would you expect from RevenueCat?Excited to hear from you!
So I had this error message on my Android testing of my Flutter app (iOS worked like a champ) and worked through the troubleshooting steps provided by RevenueCat support, (https://community.revenuecat.com/sdks-51/why-are-offerings-or-products-empty-124), (BTW some of these screens need updating please, particularly because this is a popular post), I even got Google Play Store support involved (the portal is soooo convoluted) and after about two weeks of getting one email response per day, at my wits end, I engaged the chat service. A chat support person in Google told me in five minutes that I could only make my app release ‘ACTIVE’ in the Closed Testing if … my Managed Publishing state was ON!I didn’t know what that was, then they explained:them: Kindly go to your app's Publishing Overview section on you Play Consoleme: kthem: Then, click the "Turn off Managed Publishing" button.them: Once you've turned it off, kindly wait for the changes to be reflected on your Play Console.and then,
Got an email from Google Play asking me to disclose more information regarding RevenueCat:Your app is uploading users' Primary Account information to https://api.revenuecat.com without disclosing it in the privacy policy in Play Console. My app currently offers In-app purchases. I’m looking for Privacy Policies examples. Thanks!
HelloWhen I fetch products and offerings using RevenueCat react native js library, it says that price is 1.99 for in-app purchase, but when a customer makes a purchase apple shows that price is $2.49 (user’s country is Ghana). The price on app store is set to Tier 2: $2.49 (developer’s account is from Ghana too), but it looks like it depends on user’s settings on the device. Is there a way to fetch actual price based on user’s country? Or revenue cat always returns price for USA (1.99) and I have to manually detect user’s country and convert it?
Hi everyone, I was wondering what the best way is to set up different pricing in different countries. Example:High Price Tier: e.g. USA: 9.99 USD per monthMedium Price Tier: e.g. Germany: 7.99 USD (converted from EUR) per monthLow Price Tier: e.g. Brazil: 3.99 USD (converted from EUR) per month What is the best way to do this? Also, it would be nice to run separate experiments for each tier.Is the best way to set up different revenuecat offerings and have the app handle the selection of which offering is chosen based on the country? How would it be possible to run revenuecat pricing experiments then?Are there any best practices? Thank you already in advance. Cheers,Ben
Hello, I’ve manage to create an offer in the RC Dashboard and in the Google Play console that is attached to existing product (annual subscription). The offer includes free trial. When I call the getOfferings method and select the specific offer and try to purchase, the offer does not include the free trial I’ve previously attached. Any help here?
Hi there!How can I renew my subscription on the web? I want to be able to renew my expired subscription with just one button. For payments I use stripe checkout client only
I have an app with an optional subscription for additional features. I have a company that wants to offer these features to it’s employees via a partnership. Basically they will pay a one time fee for 1 year access on behalf of their employees who download the app. On the app store, I can create a promo code that grants a 1 year free trial, but this will auto renew on the individual users Apple ID’s, which is not what I want. It’s not possible to do this with the other subscription option (Non-renewing subscriptions) which I thought would be the ideal solution for this case. Would it be possible to create a section in my app, where the users can enter a custom code which will unlock a certain entitlement? Thank you!
RevenueCat’s promotional entitlement feature allows you to grant an entitlement to any of your customers directly from RevenueCat. These are the predefined durations allowed:Duration Description daily 24 hour access three_day 72 hour access weekly 7 day access monthly 1 month (31-day) access two_month 2 month (61-day) access three_month 3 month (92-day) access six_month 6 month (183-day) access yearly 1 year (365-day) access lifetime 200 year access To grant a promotional entitlement with a custom duration (for example, 5 days,) set the start time in the past so that the end time lands when you need. So for example if you want to grant a promotional entitlement for just one hour, grant a daily promotional (which is 24 hours) but set the start time to 23 hours in the past. The end time will then be 1 hour in the future.
TLDR; Only configure with a known ID, and never call logout to prevent anonymous IDs. Why does the SDK use Anonymous App User IDs?Anonymous App User IDs are generated when the SDK is configured without a provided known ID. App User IDs are used to make sure the subscription that RevenueCat is tracking gets associated with the correct user. Anonymous App User IDs are always prefixed with $RCAnonymousID: which can be useful for working with anonymous users on your server. Many apps use a combination of anonymous App User IDs and their own known App User IDs which provides flexibility in their user purchase flows. However, some applications are intended only to be used while using a known App User ID, without anonymous users at all. In that case, unintentionally creating Anonymous App User IDs can cause unwanted issues for developers and end users. To never see anonymous IDs, you need to make sure to do the following. Only Configure the SDK with a known user IDThe most frequent place that
I am planning to offer a subscription that includes a certain number of consumable “tokens” per billing period. For example, maybe you get up to 20 tokens per month for $1/month, or 50 tokens for $2/month.But if the user exhausts their tokens before next month, it should be possible to either buy more tokens, and/or, upgrade to a higher plan level.I was wondering if anyone had suggestions for the best way to accomplish this with RevenueCat.
I have an app working where we sell renewing subscriptions. I am trying to implement a new use case, we would be selling for some users a one time purchase that gives them access for 20 months. I was thinking about implementing it as a non consumable IAP, with an entitlement attached, so that when the user buys this product, they get access to the app. But I'd still have to remove the entitlement when the time is up. I could do that in the backend, but I don't see a method in the API to remove an entitlement. How would you implement this? Is there a best practice to link an entitlement to a non consumable IAP with an arbitrary expiration date?
There is good explanation on how upgrades/downgrades work on the Revenuecat blog here. I however seem to be missing the case where the user upgrades in terms of a level and lowering the duration (at the section Upgrading Service Levels there is a description of moving to a higher level and a longer duration). As an example: Example> A user has a current subscription with 10GB of storage and with a 1 year duration.> The user now wants 25GB with 1 month duration. My question here is twofold:How do we configure levels, as my naive assumption would be that 25GB would be in a higher level than 10GB, independent of duration? If my assumption is correct how do we get around the situation where the following happens:Allowing the user to move to a higher level with shorter duration may results in a large refund and subsequently to earlier cancelation of any overall. I assume this is not something we want. What is the best approach to handling this case?
While using RevenueCat you may come across an error that has an HTTP status of 429 and a response body that looks like this:{ "code": 7638, "message": "There is another request in flight trying to perform the same action."}While a 429 Too Many Requests HTTP status code is frequently associated with rate limits, RevenueCat usually returns this error if multiple API requests were made simultaneously that are trying to update a single resource in the system.For example, if you make a POST /receipts request and a GET /subscribers request for the same user at the same time, the GET /subscribers request will try to update the receipt with Apple/Google but it’s already being updated by the POST /receipt, so RevenueCat will block one of the requests to prevent data race conditions.The solution to this is to simply retry the failed request a few seconds later, which will give RevenueCat a chance to complete any in-progress operation.