Discussion and help from anything related to RevenueCat.
Recently active
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
We are offering the same subscription at different price levels through different subscriptions in Google Play.So instead of updating prices of a single subscription by country we have the same subscription at different price levels available in certain countries only.RC only allows one product per package, so we have to set up dynamic package selection in our code.We are wondering what data we retrieve from RC based on the user requesting an offering with multiple packages in their country.For the offering, when we explicitly request a package / store product that is not available in the user’s country will it return null or will it resolve?Currently we are getting mixed results from the api, but are not sure if some are just caused by some subscriptions being available to fetch for RC and others’s not bc they have been created at different times - thus this post.
Hello, I’m using React Native and getting this issue. I have seen it in a previous post but looks like the SDK has been updated since then. "react-native-purchases": "^8.5.2", "react-native-purchases-ui": "^8.5.2",
Is it possible for a paywall (SwiftUI) to show introductory / trial offers? I’ve browsed through documentation and the RC API. This seems like such a popular request I’m surprised that this is so hard to find.
For .NET MAUI developers that would like to use Android and iOS RevenueCat functionality we have created a wrapper that is really easy to usehttps://github.com/Kebechet/Maui.RevenueCat.InAppBilling https://www.nuget.org/packages/Kebechet.Maui.RevenueCat.InAppBilling/ The wrapper serves as an abstraction for both platforms and abstracts away the need for you to use platform-specific code. Bindings used by the wrapper are:Android: https://github.com/Kebechet/Maui.RevenueCat.InAppBilling/tree/main/src/Maui.RevenueCat.AndroidiOS: https://github.com/Kebechet/Maui.RevenueCat.InAppBilling/tree/main/src/Maui.RevenueCat.iOS This project was created because of the mobile app we created and thus it will be supported as long as the app itself.
Lately, I’ve been getting more messages from users where fetching offers from RC does not work.They are getting the error (on Android):Unable to resolve host "api.revenuecat.com": No address associated with hostnameCode: 10(Error performing request.).Is this ALWAYS related to the user’s devices or network?What the best way to help users getting this error?Cheers,Chris
Hello!I am moving from my Stripe Web PayLink implementation to Revenue Cat. I want to have everything managed my RevenueCat.I have create an entire and simple Web PayLink configuration that duplicate (or similar to) the one I have on Stripe.However, just this no-code implementation is erroneous.The error code returned is: 16. The error is trigger just right after I entered / confirmed the billing email address.My PayWall address, where 1 is the user id, is the following:https://pay.rev.cat/yhhjrzrccqdonyxj/1 Screenshot of the error:Thank you!
My app was recently rejected during review due to missing currency symbols in the subscription pricing. I display the price string directly from the RevenueCat SDK, which should fetch details from the Play Store API. Previously, my app was rejected because the paywall wasn't loading correctly. In my appeal to the review team, I explained that this issue can occur when users aren't logged into the Play Store or are using an outdated version. While they approved that appeal, I received this new rejection upon resubmission. I'm concerned that another rejection could lead to app suspension.
Hi, it's my first time setting up RevenueCat. So I just want to be sure I won't face an issue on production.I have one subscription which can be monthly or annual, each being its own product. I've set up both products as an entitlement, while testing on sandbox environment I noticed a potential issue. When I sign up for Monthly plan then switch to Annual Plan and cancel the subscription, the `willRenew` flag remains true until the monthly plan reaches the expiration date, even though it won't renew since it's been cancelled. This is also reflected on the Dashboard so we see: - Started a subscription of `monthly` ✔- Changed their renewal preference to `annual`✔- Opted-out of renewal for `monthly` ✔And on the Entitlements card: `monthly.product.id`Subscription renews in X minutes it only updates the dashboard info and the willRenew flag once the expiration time has been reachedIs this just a sandbox behavior ? If this is the expected behavior, how can I check if it won't renew?I'd like t
When trying to understand unexpected user journeys involving cancelation / re-subscription for iOS users, it would be really helpful to identify when a user had changed their subscription in iOS settings vs. an in-app purchase. Is there a way to distinguish these just from looking at a purchase event in RevenueCat?
Hey, I have setup a RevenueCat and before making any purchase attempt, the price shown is in USD. Once I press buy, I am prompted to login to my apple account and after the login, the correct currency is selected. In the app the currency updates after I close and reopen the app. Is there a possibility to change the default currency to EUR from USD? My app is not even available in any country that uses USD as legal tender so it is confusing to my users. I have so far only tested in Testflight on two devices.
Hey, I am setting up Revenue Cat together with Superwall. I now created a custom purchase controller for superwall, according to their docs, that basically uses the RC SDK to handle purchases. I now want to identify users using our internal user UUID. The goal is that a subscription is tied to a user account and is active as soon as a user logs in on a new device. Do I have to login on Superwall AND RC? Or is Superwall enough and the information is passed on to RC?In Flutter code: // This?Superwall.shared.identify(user.id);await Purchases.logIn(user.id);Or just this?Superwall.shared.identify(user.id);Thanks!
Hi guys, I’m trying to test purchase on Xcode Simulator, but encountered “Error fetching offerings - 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). ”I’m using a Local StoreKitConfiguration, and I tried both the same or different productID with revenueCat and Apple Store Connect. (not sure whether the local configuration should be the same as those two) The StoreKitTestCertificate is renewed and updated to revenueCat each time I try. Upload Subscription Offers Key to revenueCat. The configuration is selected in the duplicated schemeSeems like the configuration file is not working, I checked there was a post described a similar issue, but not solve my problem. Can you guys help me with this?
I'm not sure what to do with this point. When I look at the configuration of my apps, they all have Store Status OK with a green dot. I have set both the APIkey and the entitlementsID in the app and I know they are correct. Running on iOS. I'm testing with an app that I've had on the App Store for quite awhile so I'm sure it's in-app purchase is set up correctly. I've got the P8 key file from App Store Connect set up. I'm still getting this message when I try and run the MagicwWeather app to test. 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). More information: https://rev.cat/why-are-offerings-empty
Hi everyone,I’ve been trying to wrap my head around subscription management across different devices and Apple IDs but am struggling to fully understand how it works in certain scenarios. I’m new to managing subscriptions and would appreciate any guidance or insights.Here’s the scenario:General ContextI have an app where users can:Purchase subscriptions. Log in to their accounts via the app or web. Access premium features once subscribed.Let’s break this into a few cases to illustrate the challenges I’m facing:Case 1: Same Apple ID, Different DevicesDevice A: A user (let’s call them User A) installs the app, signs up, and purchases a paid plan using Apple ID A. User A can log in with their credentials on Device A (or web) and access premium features without any issues. Device B: User A logs in to their account on a second device (Device B) using the same credentials. Here’s the problem: When I test this in a sandbox environment and try to upgrade the subscription from Device B, the
My app offers an in app product which can be purchased multiple times but if the user have already purchased once i’m getting following error:`Ignoring purchase request for already subscribed package`I’ve set the product to Consumable in Revenue Cat Also set the following tick mark in google play console: Note that this is a lifetime product i don’t charge on monthly or yearly bases.Ps:i’m using paywall template. now tell me that do i need to write my own paywall screen in Jetpack Compose or some configuration changes will fix this?
The email:Hello,It looks like you’re still using version 4 of the Apple Search Ads Campaign Management API. After February 11, 2025, version 4 will no longer be operable.Move to version 5 of the Campaign Management API before the deadline to avoid any disruption to your campaigns and reporting.!--> I think this could be related to the Revenue Cat + Apple Search Ads integration. Do I need to do something on my end to use the v5 or this is already handled by RC?I'm using react-native-purchases v7.28.1Thanks!
I'm facing a challenge with managing trial offers for anonymous users on new devices The ProblemRevenueCat’s checkTrialOrIntroductoryEligibility is iOS-only, so I’ve built a workaround using allPurchasedProductIdentifiers to determine trial eligibility. It works like this: const customerInfo = (await Purchases.getCustomerInfo()).customerInfo;const numPurchases = customerInfo.allPurchasedProductIdentifiers.length;if (numPurchases > 0) { setShowTrialOffer(false);} This works as long as the user stays on the same device because RevenueCat caches the Anonymous ID. However, if the user:Starts a free trial Cancels the trial before it ends Deletes and reinstalls the app (or switches devices)RevenueCat creates a new Anonymous ID when the user reopens the app. As a result, allPurchasedProductIdentifiers will be empty. This allows the user to start another free trial, repeating the process indefinitely. Potential Solution: syncPurchasesCalling restorePurchases could prevent this, but it may
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.