Hello! What's your background, and what are you working on?
Since January, our SDK has shipped in 135 apps, we’re tracking subscriptions for 224k paying subscribers, and we made $6,811 in November.
What motivated you to get started with RevenueCat?
Before starting RevenueCat, Miguel and I worked together on the mobile brain training app, Elevate, Apple's App of the Year in 2014. Elevate made its money via App Store in-app subscriptions and, at some point, we realized we were spending a ridiculous amount of engineering time just making in-app purchase (IAP) subscriptions work for us. I specifically remember asking out-loud, "Why isn’t there a service to handle this?"
Fast forward a couple of years, I decided to leave Elevate to start my own company. I always had an itch to build something that was fully my own, and after some funemployment, I decided to get to work. Right around that time, I saw this post from Ulysses describing their switch to subscriptions and how it cost them more than a dev-year of effort. I once again found myself wondering, "Why isn’t there a service to handle this!?"
I searched the internet for anyone providing an IAP backend as a service, and, after coming up with nothing, I emailed a few people I knew working with in-app subscriptions. They had all built their own solutions and were pretty dissatisfied. Twelve days after seeing the Ulysses blog post, I committed RevenueCat's first line of code.
I also knew I needed a co-founder. Not every founder does, but I knew that I wouldn’t be able to build a successful company as a solo founder. At this point, I reached out to Miguel, who was still working at Elevate. Before I could even finish pitching him the idea, he wanted in.
What went into building the initial product?
The work really started in late September 2017 when we built a REST API to track and validate in-app subscriptions and an iOS software development kit (SDK) that would make the API easy to plug in and use in your app.
A month later, in late October, the first version of the SDK hit Github and CocoaPods. At this time, Miguel was still working full-time at Elevate and putting in crazy hours on nights and weekends working on RevenueCat's API.
The first SDK version barely did anything; we wrapped the on-device in-app purchase methods, fetched receipts, and sent the receipts to our API where we tracked them and kept subscriber records updated. There was no website or dashboard at this point. However, the SDK did solve a basic problem for in-app subscription developers, and I think it had a quantum of utility.
We got lucky that we had a friend that was adding in-app subscriptions to a new app at this point and was willing to try out our SDK. I offered to do all the subscriptions code for his app (including the UI) just to be allowed to integrate our very new SDK. Meanwhile, we spent November building the website and dashboard and covering more edge cases with the API.
On December 4th, 2017, we launched the RevenueCat private beta. From inception to beta, about three months had passed. At this point, I was living off of my wife’s income and savings and Miguel was still contributing code on nights and weekends. As you can see, the first iteration of the dashboard wasn’t very glamorous.
How have you attracted users and grown RevenueCat?
When we launched the beta, we required users to request access. RevenueCat is critical infrastructure, and we needed to build confidence. We shared it on reddit, my Twitter account, and on Medium. We had 13 people request invites and create accounts in the first two days! Huge launch!
When you're making a product that goes into someone's app, it can take weeks or months for it to actually ship. It wasn’t until late January that the first app using RevenueCat hit the App Store. The app was Design+Code, an excellent resource for developers and designers to learn code and design. It was very exciting to watch the API logs and see requests coming in from an app that wasn’t our own.
We decided to get out the word about RevenueCat by producing really good content about the problem we were solving, also known as content marketing. I have a lot of first-hand experience with the problem, so I set out to write about it. In January and February, I wrote a new blog post every week about in-app subscriptions, StoreKit, and app business models. Every week I’d spend 6-12 hours writing, re-writing, and editing, and then I'd publish to Medium, post to Twitter, and share on reddit.
Some posts did better than others, but some were picked up by prominent iOS newsletters. These blog posts provided just a trickle of sign-ups at the time, but the benefits have compounded over the year and still drive a significant amount of traffic to our site. I still get around 7k views a month across my Medium blog posts.
In April, with only seven apps using us in the App Store, we interviewed with and were accepted into Y-Combinator. At this point, Miguel quit his job, and we decided to revamp the dashboard, add Android support, and do an official launch in June. As you can see, version two of the dashboard was much sleeker.
Despite being heads-down on launching, the RevenueCat SDK organically shipped in 11 new apps in May and June. In late June, we officially launched on Product Hunt.
I spent most of July cold emailing companies with in-app subscriptions that I guessed might not be handling in-app subscriptions correctly. We scraped the App Store via the search API and combined it with data from Sensor Tower to find top subscription apps. I sent about 300 emails, got about 30 responses, and maybe five phone calls. A few of those turned into customers. Most of our traction during YC came from other YC companies. This is a terrific side effect of being a part of YC; if you sell to other YC companies, most of them will take your call and might even try your product just because they feel bad for you (kidding, not kidding).
What's your business model, and how have you grown your revenue?
RevenueCat makes money by charging our users to use our API. We've had a few iterations on pricing.
Originally, I tried to build a pricing scheme that was tied to an app's number of subscribers. Something like 0-10 subscribers: $1.99/mo, 10-100 subscribers: $4.99/mo, etc. The problem was, without taking into account the average revenue per subscriber, there was always some RevenueCat customer that was getting a bad deal.
The second iteration of our pricing was simpler. We would charge 3.5% of revenue tracked. If you made $100, you owe us $3.50. If you made $1,000, you owe us $35. Pretty simple. But this had problems too. We have a lot of apps in our system that make almost nothing, less than $100 a month. Charging these customers didn't seem to be worth the effort. On the other end of the spectrum, no customer with an app making a significant amount of money is going to give up 3.5% of their revenue for an infrastructure API. A successful subscription app, making $100k/mo, would owe us $3.5k. That seemed like a lot of money for our initial offering.
Our third iteration on pricing is to offer a fairly standard 3-tiered pricing scheme, where we offer a free tier, a medium tier, and a "contact us" upper tier. We made the basic features of the API free for apps making less than $10k/mo. With our middle tier, we provide access to our charts and webhooks for $119/mo, which includes $20k in tracked revenue every month. But, if an app makes more than $20k in a month, we charge a metered overage. This has a lot of benefits: we get some amount of predictable revenue from the fixed monthly amount, but we still have upside from breakout apps. Our top tier is priced similarly to our middle tier, with higher limits and additional features.
When we finished YC, we had three middle-tier subscribers and were making about $400/mo. Since then, we've added 21 paying customers and have grown our revenue to almost $7k/mo. About half of our revenue comes from our middle-tier customers, and the other half from a few top-tier customers. We've had one customer churn since August.
Pricing is hard. The best advice I ever heard was to be sure to price your product based on the value you provide, not on your costs to provide it. This is especially important in SaaS, where margins are typically high since you can't really count development costs. If you charged based on the cost to provide your service, it would likely be far too low. My other piece of advice would be to try to deliver pricing details in person, at least a few times. When you are selling to relatively few customers like we are, it's hard to get good, quantitative data on pricing, so qualitative data can be really informative.
What are your goals for the future?
We're pushing hard to get to $1M in ARR by next fall. That means we are going to have to increase our lead velocity quite a bit and make more sales. Right now, we provide a really nice implementation for a subscription backend. We do the bookkeeping part really well. However, most competent engineers can replicate what we've done if they really wanted to. In order to grow, we need to move the product from being a "painkiller" to being a "vitamin." This means building more tools on our platform that allow developers to improve how their apps are monetizing, including tools for price testing, price optimization, churn reduction, and more.
What are the biggest challenges you've faced and obstacles you've overcome? If you had to start over, what would you do differently?
I think one of my biggest mistakes was not taking RevenueCat that seriously until I got into Y-Combinator. The time between inception and getting accepted to YC was productive, but there was always a part of me thinking, "This thing will never take off and I'll just get another job." It was a stupid, completely psychological hurdle. I was waiting for somebody's permission to really start taking RevenueCat seriously.
I don't know if it was YC's permission that finally helped me clear that hurdle, or if it was just being thrust into an environment with a bunch of really smart, motivated people, but the doubt is gone now. So my advice: take your thing seriously, now. Having even just one pinky toe out the door will drag you down. Be all the way in or all the way out.
Have you found anything particularly helpful or advantageous?
We used Stripe Atlas to incorporate, and the community and resources they provide were great. We got @patio11 himself to help review our YC application, had a great mock interview with someone from Stripe, and they even sent us a cake when we were accepted. (This isn't a paid plug btw, it's just a really good service.)
Transitioning from an engineer and CTO to the CEO role was a little rough. It meant reprogramming my mind around time and priority management, and getting comfortable talking to people. For this, having mentors who have been CEOs themselves, or who have made a similar transition, was invaluable.
One thing I did early on, before we had shipped or had investors, was to ask a handful of friends to act as an advisory team, which I lovingly refer to as my A-team. I asked if I could send them monthly updates as if they were investors. It was a great practice for me to set monthly goals and to reflect on our progress once a month. I still write the monthly updates to this day, but now they also go to our big, fancy investors.
I think a lot of RevenueCat's success to this point comes from market trends: subscriptions are growing in mobile, people are using more APIs to build products, and the app stores are still growing. If I had infinite talent and resources, building mobile app billing software probably wouldn't be my first choice (I'd be out living my best Elon Musk life or whatever), but I picked something to work on where I have a vision (developers should make more money), knowledge of the problem, and a favorable market environment. I wanted to give myself as many advantages as possible. I recommend doing the same. While your social network for saltwater aquarium enthusiasts may align with your personal interests, you might want to consider other factors that make running a business interesting, like opportunity size and traction.
What's your advice for indie hackers who are just starting out?
Pick something you could work on for 10 years or more. Especially in SaaS, it takes a looooong time to build up anything significant. I've been working on RevenueCat for more than a year, and we still aren't making more than I was taking home in salary from Elevate. But, just keep pushing the world towards your vision using a couple of important metrics to measure your progress. Ship something concrete every day, week, and month that moves you forward.
Where can we go to learn more?
Check out RevenueCat! Our mission is to help developers make more money. I bet you like money.
Sometimes I write interesting things on my Twitter @jeiting.
I write about StoreKit, in-app purchases, and mobile business models on the RevenueCat Blog.
If you have questions, please ask away in the comments!
—, Co-Founder of RevenueCat
Want to build your own business like RevenueCat?
You should join the Indie Hackers community! 🤗
We're a few thousand founders helping each other build profitable businesses and side projects. Come share what you're working on and get feedback from your peers.
Not ready to get started on your product yet? No problem. The community is a great place to meet people, learn, and get your feet wet. Feel free to just browse!
—, Indie Hackers founder