Discussion and help from anything related to RevenueCat.
Recently active
Hi RevenueCat team,My app has been integrated with Apple Search Ads (Advanced integration) for months and attribution data was coming through normally. However, for roughly the last 10 days no ASA data is being returned — all traffic is now showing as Organic in Charts, even though I can see conversions clearly coming from Apple Search Ads in the Apple Ads dashboard. No app-side code was changed during this period.This app uses the OAuth ("Sign in with Apple") authentication method, and its Advanced integration appears to have dropped. I already tried re-doing the integration by signing in with Apple again, but data still does not come back.For comparison: another one of my apps still uses the legacy method (Client ID / Team ID / Key ID) and that one is unaffected — ASA data is still flowing normally.Could you please check the server logs for my account to see whether RevenueCat is hitting an auth/token error when fetching attribution from Apple for the affected app? And is there a kno
Hey, does your roadmap have Accessibility improvements or configurability on the roadmap?We have a need to fulfill the requirements of European Accessibility Act (Directive (EU) 2019/882) and we have noticed that currently the Paywalls don’t seem to offer good support for accessibility.Recently the ability to disable font scaling in Paywalls, did fix one of our issues. Otherwise we have been able to work around it by adjusting our paywall and doing small hacks and adjustments to them in order to improve the Accessibility.So I was wondering if you have Accessibility improvements coming in the roadmap and when might these improvements be scheduled?
Could you please provide an update on support for monthly subscriptions with a 12-month commitment in the Apple App Store?The iOS SDK 5.76.0 appears to include some initial support. However, it does not yet seem possible to create or configure subscriptions with a monthly billing plan in the admin interface.Do you have an estimated timeline for when full support will be available?
Hi guys, this is maybe a little weird request but I just came to think about this cute button you guys had on your website. I think it was the “Book a demo” or something like that. When hovered, a cats paw appeared from right behind it and tried to hit your cursor. Is this still in place somewhere or did you remove it? BestMoritz
I’m building a web-based TV app where users scan a QR code on the TV to complete payment on their phone. I’m using purchases-js and calling getOfferings() to display products for the current offering.However, the packages array is coming back empty, even though I’ve created a Stripe product for each package under each offering.I noticed that when I add a Web Billing product, it shows up correctly in the offerings, but the Stripe products do not appear.Is this expected behavior for the Web SDK, or am I missing a required configuration step for Stripe products to be available through getOfferings() in a web application?
Hi,I have a published v2 Components-based paywall that is not serving correctly. Both my app and the RevenueCat Preview in App (official RevenueCat iOS app) are showing the default fallback template instead of my custom design.Setup details:Project ID: projfb81dd09 Offering ID: promo_lifetime Paywall status: Active & Published Built entirely with built-in v2 components onlyWhat I've already tried:Confirmed paywall is Active and Published Confirmed Offering is correctly assigned Used RevenueCat AI editor to clean up legacy fallback header structure and normalize carousel config Published changes after each fix Duplicated the paywall, attached the duplicate to the offering, and republished Tested all of the above via Preview in App every timeNone of the above worked. The fact that Preview in App also shows the fallback confirms this is not an app-side or SDK issue — it is a RevenueCat backend serving issue.Has anyone experienced this? Any suggestions would be appreciated.
When I tried adding revenuecat into base44 I am getting several errors and the above image is one of them. How do I make revenuecat for in app purchases as apple does not allow stripe and Base44 only integrates with stripe. What steps do I need to do to integrate it into base44 to accept payments as I know I’m not doing something right. Could someone give me a prompt for base44 to integrate revenuecat.
Hey, we ran into small issue when testing our integration. If user cancels the current subscription from Play Store, it gets to a state where it is “isActive = true” and “willRenew = false”.It seems the Paywall doesn’t check for the “willRenew” state when deciding to trigger the upgrade/downgrade flow when user tries to purchase the same subscription from Paywall. Instead of dealing it as a new purchase the Paywall seems to attempt to do a Upgrade/Downgrade to that product. Which then errors out from play store.I would expect the Paywall to allow user to renew the current subscription, instead of attempting to do a upgrade to the same purchase and then erroring out.In this flow the Upgrade/Downgrade to an other product did work as expected, so no issues with those. 🤖‼️ BillingWrapper purchases failed to update: DebugMessage: Account identifiers don't match the previous subscription.. ErrorCode: DEVELOPER_ERROR. SubResponseCode: NO_APPLICABLE_SUB_RESPONSE_CODE. No purchases received🤖‼
I have`Purchases.shared.attribution.enableAdServicesAttributionTokenCollection()`which according to https://www.revenuecat.com/docs/integrations/attribution/apple-search-ads should give me the following fields:https://cln.sh/41P1JJ7THowever these are the fields that I see:https://cln.sh/dPCvFb77 I have used ASA Basic in the past, but have been using advanced for months.Is there anything else that I’m missing?
Hi.I just installed macOS 27 and Xcode 27. I can’t run my app because there’s a compile error with RevenueCat. Invalid redeclaration of synthesized memberwise 'init(stringRepresentation:)'I’m not using Paywalls at the moment (no macOS support as far as I know). I know that macOS 27 was JUST released, but I thought I’d post this here anyway to make you aware of this issue, if you don’t already know about it. I did update my swift package to RevenueCat 5.75.0 Thanks, Brendan
Hi team,I am trying to understand why RevenueCat completely missed/dropped a successful Stripe payment recapture for a user on May 21st. The event simply does not exist on the RC timeline, even though Stripe successfully charged them.Here is the exact comparison of both timelines:Stripe Payment History: May 7, 1:01 PM: $0.99 (Subscription creation) - Succeeded May 14: Initial $19.99 billing cycle due (Failed) May 18, 8:05 AM: $19.99 (Payment Recaptured) - Succeeded May 21: Initial $19.99 billing cycle due (Failed) May 31, 11:03 PM: $19.99 (Payment Recaptured) - Succeeded May 28: Initial $19.99 billing cycle due (failed) Jun 1, 7:03 AM: $19.99 (Payment Recaptured) - Succeeded RevenueCat Customer Event History: 2026-05-28, 8:01 PM: Renewed subscription ($19.99) (Matches Stripe's May 31/Jun 1 block) 2026-05-21, 9:03 PM: Cancelled due to a billing error 2026-05-21, 9:03 PM: Had a billing issue 2026-05-14, 9:05 PM: Cancelled due to a billing error 2026-05-14, 9:05
I havé the same problem can you help me this is my email : bilalneufcink@gmail.com
Hi RevenueCat community,I'm working on a React Native app and running into a persistent issue with anonymous-to-identified user merging. Would love some help figuring out if this is expected behavior or something I'm doing wrong.Background & Initial SetupMy app originally required registration before any in-app purchase could be made. After an App Store rejection (purchases shouldn't require registration), I updated the flow to allow anonymous purchases first, with registration happening later.Restore Behavior: Transfer to new App User IDThe Flow I Want1. User launches app → anonymous purchase made (no account yet)2. User registers/signs in → anonymous ID merges with their account ✅ (this works fine)3. Subscription expires → user signs out4. User relaunches app → makes a new anonymous purchase5. User signs back into their existing account → new purchase should merge/transfer to their accountWhat's Actually HappeningStep 5 fails. After signing back in, the subscription shows as inac
Hi! We’re looking into moving a multitiered model and I’m currently designing some paywalls for this.I’d like to use the Footer component to be able to have the purchase button always visible at the bottom with the plan length choice on top of it, but I’m unable to get the selected tab to effect the contents of the footer.Is there any way to make this work currently?
Hey everyone,I came across this previous discussion about Apple’s new “monthly subscriptions with a 12-month commitment” feature:https://community.revenuecat.com/sdks-51/monthly-subscriptions-with-a-12-month-commitment-7629?tid=7629&fid=51Since that topic is now closed, I wanted to ask about the current state of support on the RevenueCat side.If we enable this billing option in App Store Connect for an existing yearly subscription product, should everything continue working normally in RevenueCat without any additional changes?Main things I’m wondering about:- Will entitlements continue behaving normally?- Will RevenueCat webhooks continue firing the same way?- Any differences in renewals / expiration handling?- Is there any way to detect this billing model via SDK or webhooks?- Any known issues or edge cases before enabling it in production?We rely pretty heavily on RevenueCat webhooks + entitlement logic, so I just want to make sure enabling this on Apple’s side won’t unexpectedl
Hi everyone,I’ve created my app in App Store Connect and set up both an in-app purchase and a subscription. However, the In-App Purchase section does not appear on the app version page, so I can’t attach the products for review.At the moment, both products show Developer Action Required, but inside each item everything seems filled out and ready for review. I’ve also confirmed that the tax forms, business forms, bank details, and other agreements are accepted.The app itself got accepted, but the in-app purchase/subscription was returned, so I’m trying to finalize the deployment and resubmit everything correctly.I already tried checking the app version and submission flow, but the IAP/subscription section still doesn’t show up. Has anyone run into this before? What usually needs to be fixed so the section becomes visible and I can submit the app together with the IAP/subscription for review?Thanks in advance.
Hello RevenueCat Support Team,We are experiencing an issue with the getOfferings() function in our iOS app (Swift/SwiftUI).Details:In our RevenueCat dashboard, we have two packages within the same Offering:Weekly package (subscription) Yearly package (subscription)Both products are properly registered and published in the App Store, and we have confirmed their "Approved" status in both App Store Connect and RevenueCat.However, when getOfferings() is called in production (App Store build), only the weekly package is returned. The yearly package is missing from the offerings response.We have confirmed that:Store product IDs match exactly with RevenueCat product IDs Entitlements are correctly linked to both products The Offering includes both packages Both products show "Approved" status in App Store Connect The issue does not reproduce in sandbox (debug builds or TestFlight) , both packages return correctly The issue does not reproduce when Xcode is attached to the production build Waiti
Hi there, for context I’ve already sent a support ticket regarding this issue but wanted to get better visibility here as it’s a pressing matter for us to be able to experiment in this manner. Our Setup:SDK: react-native-purchases 9.15.2 (iOS SDK 5.67.1)Platform: iOS (React Native / Expo)Placements: 9 placements defined in-app (e.g., x, x_upsell, y_upsell, etc.)Targeting Rule: One live catch-all rule (no audience conditions) that maps each placement to a specific control offering. The "for all other cases" fallback is set to No Offering, with default set for "when not using Placements."Experiment config: Paywall design experiment with all 9 placements specified (different offering only at the x placement, all others kept the same as the targeting rule). Fallback offerings A/B are set. Targeting by app_version >= X.X.X. Enrollment: 100%. The Problem:Experiments using new_and_existing enrollment mode do not actually apply to users, even when the user clearly matches the targeting cond
It would be helpful for the SDK to allow apps to submit custom Anonymous App User IDs with their Configure() calls. These would be used instead of generating a $RCAnon app user ID, but would still be Aliased if/when the user subsequently signs in and the app calls .login().In my case, my app can provide a more persistent anonymous identifier than what $RCAnon accomplishes, which leads to a better user experience, but we refrain from doing so because we get undesirable Transfer Purchases to New App User ID behavior instead of the aliasing that happens with $RCAnon.It we could get that aliasing behavior with a custom AppUserID, we would supply our persistent anonymous identifier and the end-user would have a better experience.
Seems the Android Paywalls show Material3 Alert Dialog. Are there plans to make these customizable or disable them so we can show the errors in style that matches the rest of our App? Only way we have found to do this, is to resume(false) in onPurchasePackageInitiated and then taking over the entire purchase flow, but we would prefer to let the Paywall do the work.Even if we keep the default dialogs, their body seems to use non-localized Strings for the error message. Which also makes them bad for non-english users. https://github.com/RevenueCat/purchases-android/blob/de4475520fb0353daddbae2fccf2f402332688ea/purchases/src/main/kotlin/com/revenuecat/purchases/errors.kt#L56
Hi, Any update on changing the timestamps you’re sending to Customer.io via the direct integration from ISO to Epoch? I asked in this post before: Customer.io doesn’t run on ISO, they use Epoch. As it stands, this integration isn’t very useful (the most important piece of data that I need in Customerio is the user’s expiration date!).
I have an introductory offer applied to a one time purchase on the google play console with legacy compatibility checked. Whilst the UI in the app shows the discounted price when I click to purchase it and the google billing bottom sheet surfaces, its showing the full price. Is this a gap in your SDK to support introductory offers for one time products?
13
Hi, we are setting up server-side analytics forwarding and I need to confirm where Apple Search Ads (ASA) attribution is stored after RevenueCat collects it.Context- Our iOS app calls `Purchases.enableAdServicesAttributionTokenCollection()`, so RevenueCat collects the AdServices attribution token.- On our backend we receive RevenueCat webhooks and forward the event payload to our analytics tool. We'd like to rely on the webhook `event.subscriber_attributes` map for per-customer context (we also read the Customer API `attributes`). What I can't find in the docs1. When RevenueCat exchanges the AdServices token, where does the resulting ASA attribution (campaign ID / ad group ID / keyword ID / org ID) get stored on the customer? Is it stored as reserved subscriber attributes? If so, what are the exact attribute names (e.g. `$apple_search_ads_*` or similar)?2. Does this ASA attribution data appear in the **webhook event payload** under `subscriber_attributes`? Or is it only available via
Hello RC team,I have a question regarding the format for App User ID. From my understanding, the default app user id is prefixed with $RCAnonymousID However, on from my webhook log, I am seeing this value where the id is base64. This makes my backend code not working because this value doesn’t exist in my database and I am only using UUID v4 as the id.app_user_id :"na68yjrqU3LzQbk6h4Cwchw8l4pgILy5id9LAAGCaW4="aliases: ["na68yjrqU3LzQbk6h4Cwchw8l4pgILy5id9LAAGCaW4="]original_app_user_id: "na68yjrqU3LzQbk6h4Cwchw8l4pgILy5id9LAAGCaW4=" My dart code looks something like this.configuration.appUserID = appUserId;await Purchases.configure(configuration);From RC dashboard, I can identify the correct customer after user provided their email address and I have to transfer the entitlement to the correct customer if this issue happen.This issue happened once in a while and has happened for a few months. So far, only happened on Play Store purchases. Is there any docs talking about this base64 id?T
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.