Discussion and help from anything related to RevenueCat.
Recently active
I was trying to integrate, My App store connect with my RC but getting this issue:“The key is not valid or is not compatible with the bundle id of your app.”Even though my Bundle ID is valid on both xcode and appstore connect i just copy pasted from that, Just created my .p8 file and have created this 3 times now.
Hi,I’m running into an issue where development builds (via Xcode) are not generating an appsflyer_id, and consequently, no S2S events are being sent from RevenueCat to AppsFlyer. Here’s what I’ve observed:What’s happening In dev builds, Apple zeros out IDFA and IDFV for sideloaded apps, even with ATT consent. Without IDFA/IDFV, AppsFlyer SDK cannot create a valid appsflyer_id, which is required for event attribution. As a result, RevenueCat never sends server-to-server purchase or trial events because it doesn’t have the mandatory identifier. I’ve implemented the suggested methods—collectDeviceIdentifiers() and setAppsflyerID()—but since the SDK doesn’t generate the ID in dev builds, RevenueCat still fails to send any events. Questions Is there a recommended workaround for dev builds when IDs are zeroed? (e.g., can we manually set a fake $appsflyerId or use an IDFV workaround?). Any best practices for testing with Xcode‑installed apps so that both AppsFlyer and RevenueCat work
We have already built our own purchase system for non-subscription products.Recently, we decided to integrate RevenueCat for our new subscription system, and the implementation has been completed successfully.However, it seems that previous Android purchases (non-subscriptions) are also being managed through RevenueCat.We would like to know if this is also included in the Pro model MTR of $2,500.
I am facing the following challenge: My app has a hard paywall, which means at the end of onboarding, users start a subscription with a 7-day free trial before. Everythink works perfectly well with the RC paywall: I just realized that I need to display a different paywall if the user has already used their single free trial. I stumbled upon the checkTrialOrIntroDiscountEligibility method, and have already created a second offering without the trial period configured. However I am lost how I can now call two different paywalls depending on the result of the method. Is it even possible to add a second View modifier (.presentPaywallIfNeeded) with the “no trial” entitlement in combination with checkTrialOrIntroDiscountEligibility?Just for my understanding: RC would automatically handle this case if I had not configured a components-based paywall, am I correct? Thank you in advance*
onReceived or onError call backs not triggering in getOfferings method, when i update my SDK version to 35 and increase some other libraries versions. so i am unable to get prices of offeringsPurchases.getSharedInstance().getOfferings(new ReceiveOfferingsCallback() { @Override public void onReceived(@NonNull Offerings offerings) { } @Override public void onError(@NonNull PurchasesError error) { }});
In the list of Entitlements and Offerings I’d like to be able to search. We have 300+. It is a pain to scroll down the list to edit the newest one.Easy alternative would be to show the latest on top instead of at the bottom.Or to be able to sort the table.Thanks in advance!
I’m setting up a paywall with three packages: two lifetime options and one subscription. I’m using the tab component to let users switch between these packages.List of features on tabs can be quite long. “Continue” button in this case is only visible after scrolling, which creates a poor user experienceI also tried using a Footer component to keep the button visible at the bottom of the screen but there is no way to update it based on currently selected tab - it’s globalAm I missing something?
“Track new purchases from server-to-server notifications” is enabled and is being ignored. I can’t use my custom id to query the API!!!
Hi all,We’ve noticed a strange issue and wonder if anyone has experienced the same:Some INITIAL_PURCHASE events show up correctly in the Customers tab — we can see them in the user’s event list and also receive them via webhook. However, these same purchases do not appear in the Charts.We're using anonymous IDs only (no custom user IDs or aliasing at this point), and these are real production purchases, not sandbox.Has anyone faced similar discrepancies?Any tips on how to debug why a purchase would be visible in a customer’s profile but not reflected in revenue charts?Thanks in advance!
I have just recently launched my app on playstore and gained my first sub (hurray!).However, I’ve noticed that revenue cat is reporting the new sub as expected. Yet the play store doesn’t show this subscription.The only thing on my end I haven’t done yet due to a new build being released soon is update to:But I wouldn’t of thought that would effect reporting of subscriptions?Any suggestions or advice as to why the playstore isn’t showing this subscription? The user purchased around midnight yesterday.
Hello there, I can't seem to change the "Handle of refund requests" in any of my iOS apps anymore - not event the ones I did change in the past - they are all "greyed out" Does anybody notice this as well? I would appreciate any pointersCheers
Hi folks,I’m building an Android app and trying to have 2 paywalls presented (that I have configured in Revneuecat) - one for when user is in trial period and one when trial is over. I'm trying to launch PaywallActivity with a specific offering in RevenueCat SDK 9.0.0, but it always shows the "current" offering from the dashboard instead of the offering I specify.*** Here is our code:```java// BillingManager.java - Method to launch paywall with specific offeringpublic void launchPaywall(String offeringIdentifier, BillingCallback callback) { // First get the offering object Purchases.getSharedInstance().getOfferings(new ReceiveOfferingsCallback() { @Override public void onReceived(Offerings offerings) { Offering targetOffering = offerings.get(offeringIdentifier); if (targetOffering != null) { // Launch PaywallActivity with specific offering Intent intent = new Intent(currentActivity, PaywallActivity.clas
We are using flutter and firebase custom claims, which work great for the normal in app purchase flow.We use `rc.Purchases.logIn` to associate the firebase user id.We now have set up apple Promo Codes for our monthly subscription offer.This also works as expected for users that already have an account (i.e. the firebase id is already known to revenue cat).Now the issue:When a non-existing user follows the promo code link and makes the “purchase” of our monthly subscription via that promo code, revenue cat does not yet have the firebase id (since it does not exist yet).When that person now downloads the app and creates a firebase account, we again use `rc.Purchases.logIn` to tell revenue cat about it.I can see in the revenue cat dashboard that that association has worked.But even after the user has called restore purchases, their id token never gets the expected custom claim.
Im trying to change the link color of a text field. By default, its a purple/blue color but I want to change it to something else. I dont see an option in the text properties panel. Is this something thats doable? If not, any recommended alternatives? Thank you
Hi,We added the RevenueCat react-native SDK to our app in the last release and we are seeing thousands of these errors across thousands of users: “😿‼️ Error when syncing subscriber attributes. Details: The operation couldn’t be completed. (RevenueCat.BackendError error 0.) UserInfo: [:]”. They seem to happen immediately after app launch and SDK initialization. What is the cause of this and how do I fix it?
Consider this scenario: the user account is only created in the database after the user subscribes.Since I don't have a user ID initially, I initialize the Web SDK like this:const appUserId = Purchases.generateRevenueCatAnonymousAppUserId();const purchases = Purchases.configure({ apiKey: WEB_BILLING_PUBLIC_API_KEY, appUserId,}); Once the user account is created, I need to associate the existing RevenueCat data (based on the anonymous appUserId) with the newly created user ID. Based on the docs, it looks like I can create a new customer using the new user ID and then use the transfer endpoint.Questions: If the destination appUserId doesn’t yet exist in RevenueCat, will the transfer endpoint create it automatically, or do I need to create it first? Is using the transfer endpoint the recommended approach for this use case? Or is there a better way to handle the transition from anonymous to identified user server side?
The old style paywall did display full screen on ios26 beta3, but the new style paywall does not. Attached image. struct OnboardingFlow: View { let purchases = PurchaseManager.shared var body: some View { VStack { if let offering = purchases.offering { PaywallView( offering: offering, displayCloseButton: true ) .ignoresSafeArea() } else { ProgressView() } } .task { await purchases.fetchOfferings() } }}
Looks like this issue was raised before, but I am unable to update any strings in the paywall builder tool at all…Tried using Firefox and Safari, but no luck
Perhaps this is already answered, couldn’t find it. It’s my first time I’m setting up a paywall for the app, and I very often see how people are designing yearly payment for example:How do I get the striped out yearly price tag? I can’t figure out is that whole sum created somehow with in App Store subscription and in RevenueCat paywall editor it’s received through variable or is it hardcoded? Thanks in advance.
Hello,I am integration Branch with RC and I found this in RC documentation:https://www.revenuecat.com/docs/integrations/attribution/branch#optional-set-a-separate-identity-in-branch-and-revenuecatQuote:If you prefer to keep a separate user identity between Branch and RevenueCat, set a $branchId Attribute in RevenueCat. If set, RevenueCat will use this identifier for Branch events instead of the App User Id. I like that aproach and I would like to set $branchId with a user id from Branch, what how do I get it?Could you please tell me which field I should use to set $branchId?PS: if I don’t change/override/use any custom identity ids, so what comes from BranchSDK is not changed, I just want to pass it to RC as $branchId. Thanks!
im trying to migrate over to Revenue Cat and have followed the steps. I noticed that my previous subscriptions have not pulled through so I cant see all my existing users, only new ones since setting up the various accounts and connecting to apple and google I keep getting told that the Secret key api is too short but its exactly what I have under secret keys in the api keys section my products already exist and have been bought numerous times over the last 5 months as well as Product Configuration Error: PlatformException(23, 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, {message: There is an issue with your configuration. Check the underlying error for more details. There's a problem wi
not getting any offerings and planson calling await Purchases.getOfferings(); its just keep loading logs: D/[Purchases] - DEBUG(29119): ℹ️ Cleaning previously sent tokensD/[Purchases] - DEBUG(29119): ℹ️ Tokens already posted: []D/[Purchases] - DEBUG(29119): ℹ️ Saving tokens []D/[Purchases] - DEBUG(29119): ℹ️ Tokens already posted: []D/[Purchases] - DEBUG(29119): ℹ️ No pending purchases to syncD/[Purchases] - DEBUG(29119): Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/subscribers/7r34LFyvZVP024pwpErDILSapda2], appInBackground=false)D/[Purchases] - DEBUG(29119): Billing connected with country code: IND/[Purchases] - DEBUG(29119): API request started: GET /subscribers/7r34LFyvZVP024pwpErDILSapda2/offeringsD/[Purchases] - DEBUG(29119): API request completed with status: GET /subscribers/7r34LFyvZVP024pwpErDILSapda2/offerings 304D/[Purchases] - DEBUG(29119): ℹ️ Requesting products from the s
Hello,Is it possible to set the default language for Web Purchase Links? It’s not available in URLs parameters, neither in the dashboard. Thank you.
Hi everyone,I’m new to RevenueCat and subscriptions in general, and I’m currently testing my app in the sandbox environment. I’ve connected my backend to RevenueCat via webhooks, and my webhook sets a label for each user based on their app_user_id.Here’s what’s confusing me: When there is no active subscription in App Store, and a user with app_user_id: user_1 subscribes, the webhook triggers as expected. However, if I log out and then log in as a different user (user_2), and subscribe again, no webhook is triggered. Does this mean that both users share the same subscription because it’s tied to my Apple sandbox account? How does this work exactly? I would like each app_user_id to be treated as a separate user in my backend, but I’m not sure if I’m misunderstanding how RevenueCat links subscriptions to users in this scenario.Any clarification would be greatly appreciated. Thanks!
Hello, nothing happens when I click “Duplicate to another project” menu item in paywalls section. Please fix it.
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.