Share and explore knowledge and tips relating to RevenueCat and subscriptions.
Recently active
Hi! I’m Jacob, recovering iOS engineer and CEO of RevenueCat. It’s still a bit mind boggling how many folks are using our little SDK these days, and I’m excited that we have an open community to chat about it. I’d love to hear your product and company feedback. I don’t get to spend nearly enough time with developers using our product day-to-day and would love to hear what direction you think we should take the SDK, the dashboard, and ultimately the company. We are here to help you make more money with your apps, so tell us what you need! P.S. I’m thinking about making an app. Can you still make apps in Objective-C?
What features are you the most excited about?What would you like to learn more about?Many updates and changes have been introduced during Google I/O 22 and our team is busy deep diving into these topics and prioritizing them according to your needs. We would love to hear your thoughts and needs on these features. New Subscription Model - is it all clear what that means or would you rather we just take care of it? Play Console – how does your setup look after the changes? does this create an opportunity for your app? Flexible Offers - would you see yourself making a use of this? Prepaid plans - does this solve an issue for you? would you like to learn more about the payment landscape of recurring payments? Play Index - do you see yourself using the index moving forwards? If so, what kinds of communications would you expect from RevenueCat?Excited to hear from you!
Hello everyone! I received the Service Account Credentials JSON from the Google Developer API and confirmed that permissions to call the subscriptions API, inappproducts API, and monetization API have all been validated. However, below it says in the Monetization Setup on the play store,"Please verify if the topic name has been entered in the correct format, if Google Cloud has been properly configured, and if you have the necessary permissions."Since I am using Korean, I'm not sure if this is the accurate translation. Why does it show like this even though it clearly states that it's validated in Pub/Sub?
Hello. I have read all the existing posts on this issue, but am still stuck.My Flutter app has been successfully processing purchases via RevCat for over a year, but following publishing the latest version of the app, iOS users are getting Error #23 when trying to purchase: “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”I have changed nothing in the app in the latest version relevant to this issue except increased the iOS deployment target version to 18.0.I have checked all the suggestions mentioned in this form posts (signed agreements, financial setup, correct API keys, etc.), all looks fine and has not changed.purchases_flutter version is 8.7.1The code that produces this error is: offerings = await Purchases.getOfferings();Please help me diagnose and solve this -- my users can no longer make purchases
Hi! Just want to share our experience with App Store and app review team not able to fetch products.So we got rejected several times because product prices were not showing up for app review team, while local testing on device and also TestFlight consistently worked ok. So we decided to hardcode our subscription prices and it helped, app got released to App Store. But unfortunately payment wasn’t working, as products were coming still empty. We planned several strategies how to debug it, but I really wanted to give it a time, because a lot of users were posting that it took up to 24 hours for payments to propagate. In our case it took ~72 hours! But it works now! So guys don’t loose hope and just give it a time. P.S. while waiting for payments to propagate, on Approved subscriptions page we fixed typo in our subscription Localization and it turned into waiting for review status. Payments started working as our localization got approved. So not sure at all but maybe it helped payments t
I am really really struggling here getting my Apple App Store app approved. I have set everything up, and imported my app store subscriptions from Apple into revenuecat very smoothly. Ever time they deny me over and over again. When I first got denied they wrote:We are unable to complete the review of your app because one or more of your in-app purchase products have not been submitted for review. This was 100% my fault. I didn't realize you actually had to add the subscriptions manually to the app before submitting for review. So I did this and resubmitted. I then got denied again with:We discovered one or more bugs in your app. Specifically, your app displayed an error message when we tapped on the “Unlock Premium” feature in the settings section. Please review the details below and complete the next steps. They also attached this screenshot:I then let them know, “As for the purchases not showing up. They will not show up until you approve the purchases.”But they denied again and aga
Hey everyone, I’m curious what folks’ approach is regarding the Epic-vs-Apple decision? Is anyone making plans already to explore linking out of the app to a web paywall? Or are you going to wait and see how things turn out?At RevenueCat, we’re currently playing around with a few options to support potential use cases (of course, pending what exactly will and won’t be allowed), and I’d love to get a feeling for the level of interest in the topic.JensHead of Product @ RevenueCat
This is so frustrating that the customer list export is a .GZ file….If you are on a PC you are unable to view the file, you must convert it to CSV. Every time the file is converted, its gets corrupted and data goes missing (regardless of what conversion method you used)This is so annoying because the only way to review and analyze the customer list export data is by asking my friend with a Mac to download it and upload it to google sheets for me.Can there PLEASE be a way to download the data via CSV so all users (regardless of comp) can access it?
Hello,I am trying to convert a paid app into subscription, but I am facing a situation which I need help. I know I can detect the active subscriptions via active entitlements:!customerInfo!.entitlements.active.isEmptyand detect if any entitlements are not active then lock the premium version for example. But I am converting a paid app into subscription, so I detect if the user is purchased the app before and unlock it using customerInfo.originalApplicationVersion. That creates a conflict situation, I am unlocking the pro features for previous users and then there is no active subscription for that user in customerInfo, so the in this code:@Published var customerInfo: CustomerInfo? {didSet {if !customerInfo!.entitlements.active.isEmpty {print("UNLOCK PRO VERSION")} else {print("LOCK PRO VERSION")}}}I lock pro version for a user that hasn’t any subscription, it conflicts for previous user who bought the app. So I am looking for an API to lock the pro features only if the subscription is
Is there a way to display a specific product on the sales screen?The sales screen in my app is being controlled through my backend,with the way that the screen is built it’s important that i’ll have control over the specific In-App Purchase that’s being fetched.so if i can use the package identifier to fetch the product that would be great!unfortunately so far i haven't found this option or code in the docs...
Dear dev team,I noticed that when I use one paywall for both web and android, the dark mode seems have some issue with render all background. Please see below:This is how it looks like in my browser: there are 2 big white sections besides the major section this is how I set it in paywall editor, I am not sure if I missed any settings
Hello RevenueCat community 👋Kindly ask for your support or any ideas.I have a paywall with:• a toggle that switches between a yearly plan with 3-day free trial and a weekly plan without trial, and• package cards that the user can tap directly (yearly / weekly).When the user changes the toggle, the selected package and CTA text update correctly:• Yearly + trial → CTA: “Start free trial”• Weekly (no trial) → CTA: “Continue purchase”But if the user ignores the toggle and taps a package card directly, the toggle position and CTA text don’t update — they stay in the previous state, which breaks the business logic.How would you recommend structuring the logic / configuration so that the toggle and CTA always reflect the currently selected package, even when the user taps the package directly?I’m attaching screenshots of both the toggle and the direct package selection for context. Thanks in advance for any ideas and best practices!
I was just trying to configure Google subscriptions for a B2B app that I’m developing, and that’s when I realized that there were price limits on subscriptions.My first reaction was why? Why does Google impose such low limits. 350€ for a yearly subscription for a business app seems like a very low limit.But then I wonder if there is any way to work around this limit? Because right now, some of our monthly subscriptions are above 35€ and we have no way to incentivize people to pay for a year instead of a month.Note that this is the first time I monetize an app through IAP, so I have zero idea of what’s common or not.
The use case is simple. Let’s take my React Native iOS app as an example:A user who has already purchased a “Premium” subscription in my app goes to their iPhone Settings and unsubscribes Now they open my app and goes to the “Subscription” page to check the status My subscription page says that their sub is active AND will renew at date X, even if I run the getPurchaseInfo() again My user gets confused/angry and contacts my supportHow can I avoid the above? I’m new to RC and have just been playing around in the Sandbox environment. RC docs says certain attributes, like the “willRenew” could take multiple hours to sync. I have activated Platform Server Notifications but at least in Sandbox it seems like the info I get back from getPurchaseInfo()How can I avoid these delays and caches and whatnot, and always be sure that everything is updating instantly and the data is accurate and “fresh”?I asked the RC support about this, and they just copy/pasted the first two paragraphs of the “Webho
Hello, First of all I want to thank you for this great framework. My app has been downloaded more that 20K, now I am about to release the the new update, and also, I have read this article.Just have a question, my new update version for both app version and build is 11.0, so I need to detect if the originalApplicationVersion of previous users (who bought the app) is less than 11 the app should unlock the premium version. So I am doing it like this, and I was wondering am I doing it right?First setup configurations:init() { Purchases.logLevel = .debug Purchases.configure( with: Configuration.Builder(withAPIKey: "appl_mj*****") .with(usesStoreKit2IfAvailable: true) .build() ) Purchases.shared.delegate = PurchasesDelegateHandler.shared }and then detecting it using delegate:func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) { SubscriptionManager.shared.customerInfo = customerInfo if let version = Double(customerInfo.originalApplicationVe
I expected to logo to link to RC home page, just like docs.revenurcat.com, instead it links to forum home page.
Include refunds / refund info. Refunds should also appear in transactions Paginate transactions page so we can view more
As of today, if I want to run the same experiment in different countries and have separate data for each country, I have to run it as many time as there is countries. RevenueCat only allows one experiment per project at a time.So of I want to try the same 5 months experiment in 5 countries, it will take 25 months in total.Why not allow to filter a global experiment’s data by country on display?
I registered three subscriptions in the Google Play Console: monthly, 3-month, and yearly.However, in the app I only receive one subscription — the monthly one. What could be causing this issue?
I am building an iOS app using: SwiftUI Firebase backend RevenueCat Apple In-App Purchases The goal of the referral system is:“Invite a friend, they get 50% off a premium lifetime purchase, and once they successfully purchase, you also get access to the same 50% discounted purchase.”Importantly: users NEVER get premium access directly from a custom code premium access is ALWAYS granted through Apple IAP / RevenueCat entitlement the question is mainly about the referral mechanics and App Store guidelines compliance Scenario A — Apple-native offer codes Use Apple Offer Codes generated through App Store Connect API Store/generated codes are managed on my backend User A invites User B User B receives an Apple offer code for 50% off User B redeems through Apple redemption flow and purchases through normal Apple IAP RevenueCat webhook confirms purchase Backend then unlocks another Apple offer code for User A User A can then redeem their own 50% Apple offer code Scenar
I am having an issue with getting information from RevenueCat products and customer info. I have followed the guidelines step by step, but the delegate returns empty!First, configuring the SDK:@mainstruct ProjectApp: App { init() { Purchases.logLevel = .debug Purchases.configure( with: Configuration.Builder(withAPIKey: "PUBLIC_API_KEY") .with(usesStoreKit2IfAvailable: true) .build() ) Purchases.shared.delegate = PurchasesDelegateHandler.shared } . . .and then handling delegates using PurchasesDelegateHandler just like the official's sample demo:class PurchasesDelegateHandler: NSObject, ObservableObject { static let shared = PurchasesDelegateHandler()}extension PurchasesDelegateHandler: PurchasesDelegate { func purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) { SubscriptionManager.shared.customerInfo = customerInfo print(purchases) print(customerInf
I'm posting our experience to help clarify the (Apple) IAP release process for any other new developers.Our app (v1) was live on the App Store with one IAP, a yearly subscription. Yesterday we were approved to release v2, plus were approved for a new monthly subscription IAP. We released the app almost immediately after approval. After about 20 minutes, the new version was visible in the App Store.However, after downloading the app, we noticed that only the original annual subscription was showing up in the app. The new monthly IAP was not listed. After checking everything out (see below), we decided to wait it out before any real debugging. This morning, the app was listing both annual and monthly IAPs. So, apparently it takes some time, measured in hours, for Apple to 'activate' the SKProducts. NOTE: While the new IAP was unavailable in the app, the App Store listing was actually displaying both the annual and monthly options under: Information In-App Purchases (Yes)
Hi, Do we have a release date for the Billing Issue message sheet on iOS? I haven’t found anything better than “this summer”.https://developer.apple.com/documentation/storekit/message/reason/4123328-billingissue Also, has anybody already tested it in Sandbox? Thanks!
Hi, Is this normal to not having data at the Customers > Sandbox page?Thanks!
https://www.revenuecat.com/docs/integrations/webhooks/event-types-and-fieldsThe fields table says that subscriber_attributes is an ArrayIn the example below it is an Object
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.