Discussion and help from anything related to RevenueCat.
Recently active
I’m using “Transfer if no active subscriptions”, however, I’ve noticed if an anonymous user id calls `restorePurchase`, the anonymous can always transfer the subscriptions, no matter the subscription is active or not.Here’s the complete flow where the transfer happens even if there are active subscriptions:On device 1, user logs in and purchase subscription On device 2 with the same Google Play account signed in, anonymous user is not logged in, but taps the “restore purchase” button The subscription is now transferred to anonymous user However, in the following flow the “Transfer if no active subscriptions” works as expected:On device 1, user A logs in and purchase subscription On device 2 with the same Google Play account signed in, user B logs in and tap “restore purchase” button The restore failed due to `ReceiptAlreadyInUseError`In case anyone’s curious, the reason why we have a `restorePurchase` button even if user is signed out is that we support consumables.
I'm trying to sync customers in RevenueCat with our database.Requesting projects/{project_id}/customers does not return active_entitlements as mentioned in the documentation. Fetching customers one by one takes too long and results in hitting rate limits.I noticed a similar question, but it was closed without a response or comment: So, is this a bug, or is there missing documentation (e.g., missing expand parameters)?Is there any workaround, such as an endpoint that allows retrieving only customers with active entitlements?Thanks in advance, Sebastian
There appears to be a problem created in part by Apple where in a multi-scene app such as a Catalyst app with multiple windows, the StoreKit UI sheets show in the wrong window which is quite problematic. The user flow doesn’t work right because they start a purchase in one window and the sheet appears in another which may be hidden. The challenge is that Apple introduces APIs to allow us to specify the correct scene - as well as SwiftUI modifiers to do this correctly for you - but as a user of RevenueCat it does not seem to be possible to use these without forking the RevenueCat SDK because Purchases is final and the internals are private. Please see this issue for details. I feel stuck by RevenueCat without a good solution for this problem in the app I’m about to ship on Mac. Github issue
Hey, my app is available only on iOS and android. I’m using unity SDK. Since a few days now, I have a increasing number of users (up to 30% some days and some of them are paying users) that are flagged “other” when looking at the new customer chart in the revenue cat dashboard when segmented by “platform”. When looking at some these users data, they seem to be actually using an iOS or android device. This absence of attributed platform is also seen in the extracts. Not sure why this is happening more and more these days.
I am using RevenueCatUI.presentPaywall to display Paywall on ANDROID, How I can close paywall by auto when user make Pruchases process, the Paywall close just if user click on X icon, I need to close it automatically by RevenueCatUI SDK
Hello,I have connected RevenueCat and Stripe, and I have added the following events: • customer.subscription.updated • customer.subscription.deleted • charge.refunded • invoice.updated • customer.subscription.created • checkout.session.completedI have also configured the Stripe Webhook Secret, and the connection is working properly. However, I’m facing an issue: the Product IDs remain in “No Status” and do not connect.
In my app I use the webhook from RevenueCat to keep my backend in sync with customer entitlements and enforce the entitlement check on every request from the app.I know that webhooks are async and there might be some lag, so what I do is check the database first for the active entitlement, and if it is not found or inactive, I hit the RC API as a fallback.My question is on the front end - in the React Native SDK, when the promise resolves on the purchasePackage() method, can we assume at that point everything is in sync between the App Store or Play Store and RevenueCat? Even if the first webhook were delayed a little, would I immediately find the user’s active entitlement via the API in my fallback check? Hopefully this makes sense.
Hi,Will there be any plan to add other currency and if yes will Malaysian Ringgit (MYR) be included in the update? Really hope you are guys will include MYR in the near future. We have a big event coming up in May this year. Hopefully you guys can include MYR in Web Billing before that.ThanksZulfadhli
Will there be / is there out-of-the-box support for teams using Apple’s Advanced Commerce API?Team’s with potential hundreds of different SKUs that sell as one-time purchases through the new API, what will that mean in terms of RevenueCat? Currently there are products, synced/imported from the stores, that unlock entitlements. Is the flow still going to be the same? Any resources on this available?
I’m testing my app and purchases with RevenueCat in sanbox mode and I’ve noticed that often after not using the app for about a day my subscription status will revert back to free mode. I’m using a boolean in a view controller to track subscription status and on launch call this function to update that bool @MainActor func updateCustomerInfo() async { do { let customerInfo = try await Purchases.shared.customerInfo() self.customerInfo = customerInfo // Check if user has pro access isPro = customerInfo.entitlements["Lectura Pro"]?.isActive == true } catch { self.error = error.localizedDescription } } Also at app launch in my delegate I try to init the RevenueCat config with firebase auth id, and if it’s not available i use anonymous id: if let user = Auth.auth().currentUser { Purchases.configure(withAPIKey: Secrets().revenueCatProjectKey, appUserID: user.uid) print("on app
I’ve been trying all day to install the RevenueCat extension, but no luck. This is the error I’m getting:; RESOURCE_ERROR at /deployments/firebase-ext-firestore-revenuecat-purchases/resources/handler: {"ResourceType":"gcp-types/cloudfunctions-v1:projects.locations.functions","ResourceErrorCode":"400","ResourceErrorMessage":"Gen1 operation for function projects/f1-live-pulse-27147/locations/us-central1/functions/ext-firestore-revenuecat-purchases-handler failed: Build failed: npm error code EUSAGE\nnpm error\nnpm error `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.\nnpm error\nnpm error Invalid: lock file's long@5.2.3 does not satisfy long@5.2.4\nnpm error Invalid: lock file's long@5.2.3 does not satisfy long@5.2.4\nnpm error Invalid: lock file's long@5.2.3 does not satisfy long@5.2.4\nnpm error\nnpm error Clean install a project\nnpm error\nnpm error U
I didn’t understand how to test the inApp purchases on a iOS simulator using Expo. I usually run my code withnpx expo run:ios I’ve created the subscription and certificate in XCode following the documentation: https://www.revenuecat.com/docs/apple-app-store#ios-14-only-testing-on-the-simulator Now I’m not sure how to build/run correctly the app.
Hi Community, I wanted to know if I can use an African payment platforms like PayStack or Flutterwave with RevenueCat. I've only found tutorials that use Stripe which doesn't work here.Thank you.
I’ve updated my subscriptions/products in Google Play and restarted my app, but RevenueCat Purchases.getOfferings() never updates with updated titles, descriptions, or pricing. How do I bust the cache to get subscription/product updates?I have a Flutter app and am running the purchases_flutter: ^3.6.0 package.
Hello,I have been testing my in app purchase for a subscription through Testflight with my real Apple account. It uses the production sandbox environment, and so everything works as expected previously.Recently, Apple has made a change to the renewal subscription rate in this production sandbox environment mentioned here and in the Revenuecat blog post: https://developer.apple.com/help/app-store-connect/test-a-beta-version/subscription-renewal-rate-in-testflightEssentially, the renewal rate has changed from a few minutes to an entire day now. This is fine, but the documentation also says this renewal lasts a week. But it’s been over a week for me, and it continues to renew. I also have not found where I can go to turn off this subscription. Does anyone have an ideas how to resolve this? I’d like to it stop renewing.
Hi, I have a flutter app without auth.On Android some users that have changed their devices or reinitialized their device, complains that when they hit the restorePurchase button in the app, nothing is restored.But they are on the same google account with valid proof of purchase, receipts, that they emailed me. The transfer to the new app user id, is not happening it seems when we call the await Purchases.restorePurchases()My account setting is configured on “Transfer to new App User IDs”I have updated to the last version of the sdk, and it’s the same. Restore purchase isn’t working anymore.Could you please tell why and how to fix this ?Thanks
In Flutter app, the paywall is loaded and working in debug mode. However, in release mode, the app crashes when opening the paywall. The error logs I get in release mode are as follows. What is the reason for this?FATAL EXCEPTION: mainE/AndroidRuntime(11634): Process: com.gualtech.zeriapp, PID: 11634E/AndroidRuntime(11634): java.lang.NullPointerException: Attempt to read from field 'long android.content.res.XmlBlock$Parser.mParseState' on a null object referenceE/AndroidRuntime(11634): at android.content.res.XmlBlock$Parser.getAttributeListValue(XmlBlock.java:385)E/AndroidRuntime(11634): at w0.a.a(SourceFile:1)E/AndroidRuntime(11634): at M0.c.b(SourceFile:38)E/AndroidRuntime(11634): at M0.c.c(SourceFile:85)
By using the following code, I can receive PurchasesDelegate callback, when user subscribes to a free trial plan.However, I am not able to receive PurchasesDelegate callback, when user cancels the free trial plan.class AppDelegate: UIResponder, UIApplicationDelegate { // https://www.revenuecat.com/docs/integrations/attribution/apple-search-ads // https://www.revenuecat.com/docs/integrations/attribution/facebook-ads#3-send-revenuecat-events-into-facebook-ads-manager private func initRevenueCat() { Purchases.configure(with: .init(withAPIKey: "appl_???") .with( purchasesAreCompletedBy: .myApp, storeKitVersion: .storeKit2 ) ) Purchases.shared.attribution.enableAdServicesAttributionTokenCollection() // Automatically collect the $idfa, $idfv, and $ip values Purchases.shared.attribution.collectDeviceIdentifiers() // REQUIRED: Set the Facebook anonymous Id Purchases.shared.a
I am encountering an issue with a prepaid subscription product I have added to Google Play Console, which is not auto-renewing. I have also added this product to the RevenueCat dashboard. However, when I check the offering in my Flutter code, it appears to be empty.Interestingly, if I create an auto-renewing subscription product, it works as expected. I would appreciate any guidance or suggestions on how to resolve this issue with the prepaid subscription product.
Hello! I’ve been having a hard time finding a definitive answer in Apple’s docs. As some of these offer code flows appear to only be fully testable in production, it’d be helpful to see if I can get an answer ahead of time.If we use RevenueCat’s recommended method for redeeming App Store offer codes - that is, creating a custom URL and linking to the App Store where the code is automatically redeemed, does anyone know if the code is exposed to the subscriber at any point in that flow?Is the offer code shown in the customer’s emailed receipt from the App Store?We are investigating to see if we can use offer codes to drive discounts in the App Store without exposing those codes to users. So if there is any part of this flow that might expose that code, we’d love to know.Thank you!
I am integrating a new paywall v2 into my flutter app. I have created a new offering (called welcome) and set it as default. I have created a new paywall v2 associated with the offering. However, I am getting this error from the app"WARN: Error: Offering 'welcome' has no configured paywall.You can fix this by editing the paywall in the RevenueCat dashboard.The displayed paywall contains default configuration.This error will be hidden in production." How can I fix this?Thank you 😊
Hi,I'm working with Flutter and migrating from Purchases.getOfferings to Purchases.getCurrentOfferingForPlacement.When running on Android, it doesn't return any data.On iOS, it works perfectly fine. Previously, when using Purchases.getOfferings, both Android and iOS worked perfectly fine.I'm using purchases_flutter: ^7.0.1.Has anyone encountered this issue? I’d appreciate any suggestions on how to resolve it.
Is IDFA really required for Revenuecat to communicate with Facebook, if so is there a way to not collect IDFA but still send the events to Facebook?I’ve seen several ¡posts on the forum about the Facebook Ads integration related to IDFA. Some say it’s required to send the event, and some say the event will be sent but without IDFA.Here are some of the posts: IDFA required: https://community.revenuecat.com/sdks-51/facebook-ads-integration-is-only-sending-events-from-android-app-not-ios-4501?postid=14416#post14416 9 months ago Might not be required: https://community.revenuecat.com/third-party-integrations-53/meta-ads-integration-send-events-without-idfa-4852?postid=15499#post15499 6 months ago IDFA not required: https://community.revenuecat.com/third-party-integrations-53/facebook-ads-integration-for-ios-14-5-for-users-who-do-not-accept-att-prompt-631?postid=1956#post1956 3 years agoMy question is, is that required now? It says it’s required in the docs, but on the forums, it’s not very
Hi all, Several new users are activating a product from an offering not used and not shown at the moment.This offering was active a few days ago but not anymore. Based on the customer’s log “First seen using the app” entry they are new users and not ones a few days back who might would still has this offering in the cache. My setup:offering1 - two subscription productsoffering2 - two subscription productsoffering3 - one in app purchase: a lifetime offer I used in a campaign Now offering2 is being the default but it is running in an experiment (A/B test) together with offering1. Several users (new users according to the log) are activating the product from offering3. In my paywall nothing is hardcoded, I am using the current offering products to be displayed. Also during my tests I dont see my lifetime product from offering3 anywhere. Now I can just completely remove offering3 for sure - but I still want to know how is it possible?Anybody came accross a similar issue?
Hello there,I’m attempting to set up a new RevenueCat account, and am unable to get past step 7/8 of the onboarding phase for an existing iOS app with existing consumable IAP and subscription products.After creating my App Store Connect API Team Key (w/ App Manager permissions) and IAP keys, I’m able to upload both of those to the onboarding flow. RevenueCat appears to be able to import my existing products into Step 7 of 8, “Define your products”, where I see my existing products accurately listed.However, when I attempt to advance to the next step of onboarding, I see a “Invalid authorization token.” error at the top of the page.This appears to be coming from the following URL:https://api.revenuecat.com/internal/v1/developers/me/onboarding/projects/{project_id}/apps/{app_id}/setupWhich returns:{ "code": 7224, "message": "Invalid authorization token."}I have attempted this on multiple browsers (Chrome and Safari) on MacOS, no extensions, and have regenerated keys to no avail. Pl
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.