Discussion and help from anything related to RevenueCat.
Recently active
I am trying to use RevenueCat for selling consumable products on my ReactNative mobile app. To start with, I configured a product in my revenuecat account, connected it with a in app product on Google Play. In revenuecat, I can see the two are connected properly. I do not have any offerings or entitlements, because these consumable products are open for all users.However, in my code, when I queryPurchases.getProducts(["productId"]) get an empty array. Struggling for two days, not able to guess what could be the issue? Can you please help?
As discussed in the post linked below which seems to have comments closed, the migration guide points to the Firebase docs for tracking StoreKit 2 transactions in Firebase.However, it’s not clear from the sample code provided by Google/Firebase how this would integrate with RevenueCat exactly.Does it matter if `await transaction.finish()` is called after `Analytics.logTransaction(transaction)`?Guidance appreciated. Thank you.func purchaseSomeProduct(_ product: Product) { // Purchase a Product. This is mostly standard boilerplate StoreKit 2 // code, except for the Analytics.logTransaction() call. let result = try await product.purchase() switch result { case .success(let verification): let transaction = try checkVerified(verification) // Call this Firebase API to log the in-app purchase event. // NOTE: How do we hook in to this specific point via RevenueCat? Analytics.logTransaction(transaction) await transaction.finish() ...}
Hi,When can I expect a RevenueCat Unity SDK update to include latest RevenueCat Android SDK changes?.Thanks
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?
When a user logs in, it pulls their app user ID then performs the login() function on that ID.I have a real active subscription with my live app on the app store with my App User ID.When I run my app in TestFlight and login with the same App User Id, my entitlement is granted and it loads my CustomerInfo from my Live account. I thought this was an isolated environment?
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.
“This method will send all the purchases to the RevenueCat backend. Call this when using your own implementation for subscriptions anytime a sync is needed, like after a successful purchase.”Source: https://sdk.revenuecat.com/android/5.0.0/purchases/com.revenuecat.purchases/-purchases/sync-purchases.htmlIf I understand correctly syncPurchases:1. upload the local device’s receipt to RevenueCat2. Transaction might under another app user id, so if needed transfer going to happen.3. The user access all entitlement based on the device’s receiptIs it correct? If yes, I don’t understand why need to call “like after a successful purchase.”.I assume purchaseProduct make a full sync with RevenueCat backend after the purchase, because the app should send the current receipt to the RC server, so why needed syncPurchases?
Hello, I’m having the following error on iOS platform in my Unity game. PurchasesHybridCommon/CommonFunctionality.swift:21: Fatal error: Purchases has not been configured. Please configure the SDK before calling this method.Not all my users face this error and I cannot reproduce it on my devices. I just can see them on Crashlytics.This is how I configure Purchases:
We are occasionally seeing cases where a user is able to start a subscription but their email is not associated with the user in the RC dashboard. Our code pretty straightforwardly should not allow this. The below snippet is the only place where we call `Purchases.configure()` and we immediately set the email attribute.fun initializeRevenueCat(user: User) { if (user.email.isEmpty()) { return } val config = PurchasesConfiguration.Builder(...).build() Purchases.configure(config).also { it.setEmail(user.email) }}Is this a bug in the RC Android SDK or are we missing something in usage?
Hello!Our app was rejected due to the same issue discussed here: It appears that the solution given in that thread was basically to not use the sandbox - but the App Store reviewer uses the sandbox to test and validate our app?We were able to get things working by restoring purchases prior to trying to view the introductory offer. However, as you can imagine, it is difficult to communicate this issue to the App Store reviewer.I have some follow-up questions on this:Is this an App Store Sandbox issue or is there an issue with the RevenueCat SDK? Has a bug report been filed with Apple that we can reference when responding to the reviewer? Is there some sort of additional functionality we should implement in our app to make sure we don’t experience this issue in the sandbox?
I have this error when trying to fetch offering from Revenue cat[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 (or the StoreKit Configuration file if one is being used). Here is my Setup:app store agreementsapp store product:in revenue cat, i can import product automatically from app store here is my offerings & product: Can someone tell me what's going on =(( I'm stuck with it for 2 days now
Flutter, iOSI’m able to subscribe through paywall, able to fetch offerings and products. But when deployed to testflight it doesn’t work. I get error that error with configuration and can’t fetch products. The subscription in applestore connect hasn’t been approved and is in the state “Waiting for Review”, if I submit a build it gets reviewed and rejected stating that they got an error when opening the paywall, the error is the same as above. Can anyone help me out?
Hi,Im using purchases_flutter: ^6.30.1 in my flutter app to handle downgrade and upgrade for subscriptions.im getting issue in android while downgrading await Purchases.purchasePackage call does not resolve when GoogleProrationMode.deferred is used.Expected behavior: The await Purchases.purchasePackage call should resolve, allowing subsequent code to execute Actual behavior: The await Purchases.purchasePackage call does not resolve any help regard this ?
Android is requiring all Appstore submissions target API Level 34 from 8/30 onwards. This involves moving from @capacitor/core 5.x to 6.x. The https://github.com/RevenueCat/purchases-capacitor SDK is currently set to require @capacitor/core 5.x. Will there be an update to target 6.x?
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...
In my app, I want to display to an existing subscriber the date and the amount they will be charged next. From customerInfo.entitlements I can get the next charge date through expirationDate, but there's no "amount" in the entitlements object as far as I can see.I know I can get the subscription price from the offering/package, but here's my use-case:I set a subscription price Some users subscribe against that price I change subscription price in AppStoreConnect, but only for new subscribers (existing subscribers will stay at the price they always paid). So now the offering/package will contain the new price, which is not the price the existing subscriber will be charged.Any help is appreciated.Thanks & regards,Guido
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
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.