Get help with anything related to RevenueCat.
Recently active
Hi there,I did find a similar post to what I wanted to ask here, but it’s now closed for comments:Our context is that we implemented and shipped IAPs ourselves, before we decided RevenueCat was worth trying out. We didn’t store the raw base64 receipts, because Apple actually discourages and deprecated the /verifyReceipt endpoint last year. We did store every transaction ID, though, and —as that post notes — we’re able to get the full transaction info securely and verifiably through the App Store Server API.Since we don’t have the base64 receipts, we indeed went with a client-side migration path, but the result is that RC’s data even a week+ after shipping is incomplete. We’re trying RevenueCat out now, but it’s been really hard to trust and rely on RC data when we can see the numbers are still incomplete and inaccurate (like still 30% off in some cases!!).Is there any way you all could reconsider this limitation? This would be very meaningful to us.Could you also share more about what
i see Opted-out of renewal on the subscription history of our subscribers. does it mean refund?it’s too confusing. does it mean they paid the subscription but will not renew next year?
I have over 500 users subscribed to a certain price plan.I want to increase the price of my app, but I want to let my current 500 users continue with that plan indefinitely. I can create a new plan with a higher price and make everything work fine in my paywall.The problem is, people can still sneak into the app store and view my old lower price offer and subscribe to that. I don’t see any way to disable old prices in app store connect without ruining it for all my existing users. Is there a solution to this for ios & android?
I’m a big fan of the Experiments feature. However, in my app I have a discount/affiliate program that gives certain users a discounted price. In the app, if they have the custom RevenueCat attribute “latest_referral” set, it will override their assigned Offering and use the Offering associated with that referral instead. It would be great if I could ignore/exclude customers with that attribute from the results of experiments.
we are using purchases_flutter packagein pubspec.yaml version info below:- purchases_flutter: ^6.3.0in pubspec.lock version info below:purchases_flutter: dependency: "direct main" description: name: purchases_flutter sha256: "5791321994934c265f9a178c69a329e0f7c21b1975b1e40abfadfa1a3f07cd8a" url: "https://pub.dev" source: hosted version: "6.24.0"From Google play console has issue ‘App must use Google Play Billing Library version 6.0.1 or later’How can fix this.Regards Abdulahad
After upgrading our Flutter environment from version 3.13.8 to 3.19.3, we encountered a persistent error when fetching offerings from RevenueCat using the purchases_flutter plugin. The application throws a type cast exception, specifically type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast, during the offerings fetch operation. DetailsFlutter Version: Upgraded from 3.13.8 to 3.19.3. purchases_flutter Version: Initially encountered on version 6.21.0; upgraded to 6.24.0 in an attempt to resolve the issue, but the error persists. Error Message: type 'Null' is not a subtype of type 'Map<dynamic, dynamic>' in type cast Error Location: The error occurs within the try-catch block around the Purchases.getOfferings() call, indicating an issue with handling the fetched offerings data. Observations: The debug logs indicate that the getOfferings call successfully contacts RevenueCat and receives a response, but fails during JSON deserialization or handling within
Google play now requires billing lib >= 6.0.1 , I found this blog: https://www.revenuecat.com/blog/engineering/google-play-billing-library-7-features-migration/I added `implementation "com.android.billingclient:billing:7.0.0"` and updated Revenuecat to 8.2.1 I exclusively use the Revenuecat sdk for my app, namely: `Purchases.sharedInstance.purchaseWith , getOfferingsWith , awaitSyncPurchases, awaitRestore, getCustomerInfoWith, awaitCustomerInfo` do I need to make any more changes before uploading my app ?
Hi!I recently launched a hard paywall in my app and have had a fair few people each day sign up to the 3 day free trial.Around 55% of users remain after the 3 day trial but I am finding that when it ends around 40-45% of the remaining users are running into 'billing errors' meaning they end up not paying at the end of the trial despite never cancelling.The app does target a younger audience, but this still feels way too high. Has anyone come across this issue before at such a high % and if so, is there anything we can do to try and improve this number?Thank you!
Hello,I want to have two separate paywalls for my app. One for subscriptions and for one one-time purchases. I have created both paywalls in my RevenueCat account. However, when I use the RevenueCatUI.presentPaywallIfNeeded() function with different strings for offering identifiers, I get every time the default offering. In other words, the second paywall does not show even through I have put the correct offering identifier. Do you know how to achieve the behavior I described above?
Hello,I want to have two separate paywalls for my app. One for subscriptions and for one one-time purchases. I have created both paywalls in my RevenueCat account. However, when I use the RevenueCatUI.presentPaywallIfNeeded() function with different strings for offering identifiers, I get every time the default offering. In other words, the second paywall does not show even though I have put the correct offering identifier. Do you know how to achieve the behavior I described above?Just to clarify, the user does not have the entitlements so the paywall shows.
RC’s Experiments seems pretty useful but completely linked to Offerings. The thing is I would like to use RevenueCat’s Experiments to run A/B tests for other things than my paywall: trial funnels, changes in UI and texts, …Is there any way to do that? I was wondering if I could use Offerings metadata for that, but would I still need multiple Offerings? I really want to keep only one Offering but test other things...
Hi,I am trying to get subscriptions associated to a customer_id calling https://api.revenuecat.com/v2/projects/{project_id}/customers/{customer_id}/subscriptions but none found even though I know customer has one subscription associated.I've double checked that my api_key is the correct one and also project_id and customer_id are correct values. Postman returning 200 but no subscription appears in items[]Thanks
I’m using the sandbox in the iOS simulator. The iOS version is 17.4. I’m using the paywall from Revenue to prompt user’s to purchase. When I click button to purchase, the phone shows me info about my purchase (see photo below) and if I click `Subscribe`, it asks me to log into my sandbox account. After logging in, I here a beep and briefly see the word `done` on the phone, but I just get redirected back to the spot in the photo and the subscription isn’t registered. No errors are being logged from the Revenue Cat SDK either. Does anyone know what I’m doing wrong?
Are there any limitations set for frequency / quantity of REST API requests?
My application uses RevenueCat 7.0.0, and it does not include the Google Play Billing Library. I received a message from the Play Console stating that it is necessary to have Google Play Billing Library version 6.0.1 or higher. How can I update my project to comply with this requirement? Is it enough to add the following dependency:def billingVersion = 7.0.0implementation "com.android.billingclient:billing:$billingVersion"Do I need to make any additional changes to the code, or can I simply update RevenueCat and add this dependency?
I’m trying to implement a gift card redemption flow in my ReactNative app. I’m testing in sandbox / staging right now. Currently, once the user inputs a code, it fires of a request to my backend, which does the call to the Grant Entitlements REST API. My backend then returns a success state, and then my frontend rechecks getCustomerInfo, but it’s not working as expected. TL;DR:How should I be checking for customerInfo in my ReactNative app after I grant an entitlement via the REST API? It doesn’t seem to be refreshing correctly? It seems to be the case that the user’s Promo entitlement in customerInfo can’t be updated with subsequent successful calls to grantEntitlement, which means that the same user can’t redeem multiple subsequent promotions. Is this just a sandbox / staging thing, a short duration thing (I have it set for 10 min intervals for testing), or is this a production limitation?FULL CONTEXT // NOTE: I had to string together multiple examples, so ignore the timestampsIn my
I have a question about how experiments work when targeting is configured.Suppose I have a simple app which lets you track your hikes or bike rides. And I have two offerings: OfferingBike and OfferingHike which are shown to users depending on a custom attribute called preferredActivityType. This is just to make things easier.One of these, say OfferingBike is set as default in console, although I never use this directly as I always set my custom attribute. So, in my case, the “default” offering is irrelevant.Now I want to do an experiment. I want to try a new offering for bike riders. So I create a new one called OfferingBikeTest and adjust metadata. I say I want to test it against OfferingBike, which is set as default in my console.I wonder how will the A/B test work in this case?Which users will be included? Will it be all users, or will I only get results from users who purchased a package belonging to either OfferingBike or OfferingBikeTest, ignoring those who make purchases through
At the request of the user, we have refunded his payment through the payment system “Stripe”: As a result, when we try to find this user in revenuecat - there is no such user: If we try to go by direct URL to his account - an error is also displayed: What are we doing wrong? Why was the account deleted?
Hello everyone, First of all thanks for a very well thought out product, entitlement, offering setup.It is indeed well thought. I have an educational app. The app has react-native expo as front-end and Python FastAPI as backend.My app has a monthly and yearly subscription options. I am pretty sure that it will stay that way. Meaning… It is very unlikely for me to add consumable goods, one-shot purchases, extra packages etc..I am able to get subscriptions working for anonymous users. However, it is suggested that I use Purchases.login for more defined customer tracking. Fine :) I tried it but I was not really successful.Or, … it is successful but I did not get it. I have my own authentication and backend for my app.So, I wanted to base subscriptions on user login info which is email as username and a password.Once the user logs in, I would save the user email and also do Purchases.login() with email.Once I get the subscription info after Purchases.login() I would check for activeSubscri
I call Purchases. Restoring Purchases takes about 7-10 seconds on both Android and iOS. I call it on the Splash screen, but it dramatically annoys the user. Can you give me an idea of how to get rid of it?
Can we set the test-subscription life cycle anywhere?Can we set it up so monthly subscription expires in a day and yearly expires in 3 days or free introductory offer lasts longer?
Hi I would like to have 3 different monthly package, early bird at $49, $99 and $149 how can I do that ?
If a deleted customer's subscription in RevenueCat is actually active, and the renewal occurs on the subscription renewal date, can RevenueCat detect the subscription in store?
Hello, I use revenue cat paywall package in my iOS app. Apple rejected my build with “- Your auto-renewable subscription promotes the free trial or introductory period for your subscription more clearly and conspicuously than the billed amount.”My Package details for an introductory offer:“{{ sub_offer_duration }} free trial, then **{{ price_per_period }}**”My Call to action:“Continue with free trial 🔓”My previous app got approved with texts for package details for an introductory offer and call to action. I have made my price_per_period bold to make it more clear. How should I modify my paywall content in order to get approved?Whole rejection text:Guideline 3.1.2 - Business - Payments - SubscriptionsWe noticed that one or more of your auto-renewable subscriptions is marketed in the purchase flow in a manner that may mislead or confuse users about the subscription terms or pricing. Specifically:- Your auto-renewable subscription promotes the free trial or introductory period for you
Even though my app went live today (7-8 hours ago), my products are still under review. This is likely the reason why I am unable to fetch the products on my app at the production level, and why users are unable to see the products in the live environment (it works on TestFlight). I am getting the error : There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect Could this be the reason I am getting this error?
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.