The core Stripe product: payments infrastructure
Your typical developer doesn’t have experience working with payment processing, and your typical early stage startup doesn’t have a finance guru who can help that developer. Stripe takes care of all of this for you via really well designed APIs. You don’t need to worry about storing data, charging cards, or managing subscriptions.
Payments (accepting and managing card and customer info) and billing (subscriptions and invoices) are Stripe’s two primary product lines, and if I had to guess, account for the overwhelming majority of their revenue. But as any company does as they grow (a lot), Stripe has released new product lines that integrate with each other and draw companies further into their ecosystem.
The core: payments
Stripe offers a lot of products, which can make it difficult to understand what they do exactly. To avoid that problem, let’s pretend that we’re a company called Dubstack that lets people create and write newsletters (just an idea off the top of my head). In order to let our users get paid for their content, we need to do a bunch of things:
- Be able to store and charge a credit card number
- Allow users to select monthly or yearly plans, and charge them every interval
- Generate and send invoices (if so requested)
- Work with payment data ad hoc (refund a customer, etc.)
This is a lot of work. And it’s not the kind of developer work that’s straightforward and time consuming - it’s difficult and time consuming. Your typical developer doesn’t have experience working with payment processing, and your typical early stage startup doesn’t have a finance guru who can help that developer.
Stripe takes care of all of this for you via really well designed APIs. You don’t need to worry about storing data, charging cards, or managing subscriptions. Let’s walk through a couple of examples of API endpoints that we might use in our day-to-day at Dubstack.
An API takes input data and performs some sort of task for you, typically returning some new data. In Stripe’s case, you might tell one of their APIs to create a new customer in their system, and give them an email address to use. For more info, read .
Charging a credit card
When a user signs up for a paid plan, we need to charge their card so we can pay the rent. Stripe’s charge creation API lets you send a basic HTTP request with an amount and an optional customer ID.
curl https://api.stripe.com/v1/charges \
-u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
-d amount=2000 \
-d currency=usd \
All you need to do is make the request - Stripe takes care of everything else.
(Note: Stripe is migrating over to a new API called Payment Intents)
Instead of maintaining our own database of paying users and their card information, Stripe takes care of storing all of that securely, and gives us nice APIs to read and update that information. If one of our customers needs to change their credit card information (Citi Double Cash is giving 2% cash back on everything now so this is completely reasonable), we’d use Stripe’s customer endpoint:
curl https://api.stripe.com/v1/customers/cus_IHlSyIQldcZgPg \
-u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
-d "metadata[order_id]"=6735
Each customer in Stripe has a unique ID (cus_IHlSyIQldcZgPg in this example). To update that customer, we just need to find that ID, append it to the base endpoint, and send over what data we want to change. This API might power a simple form we have on our site that lets users input their new info.
Cancelling a subscription
If our loyal readers are dumb and want to unsubscribe from a paid plan, we need to stop charging them and refund their prorated balance. Stripe’s subscriptions endpoint lets you do that too:
curl https://api.stripe.com/v1/subscriptions/sub_AfFjc0iXtLSAxo \
-u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
-X DELETE
Like in the previous example, we need to specify to Stripe which subscription ID we want to cancel. We can also get into the details and decide to invoice the customer for their remaining balance, or prorate the cancellation.
---
So basically Stripe takes care of all of this annoying stuff that we would have to build in house otherwise. The three examples we gave here involve taking action (i.e. they’re POST requests), but Stripe APIs also allow you to read (i.e. GET) your data and use it across your application.
To use Stripe, you (generally - see below) still need to build a frontend on your site to actually ask your users for their name, email, credit card info, etc. But instead of storing that data yourself, you just send it right over to Stripe’s APIs from that form. This is usually what it means to be an “API company.”
Expanding product lines
Payments (accepting and managing card and customer info) and billing (subscriptions and invoices) are Stripe’s two primary product lines, and if I had to guess, account for the overwhelming majority of their revenue. But as any company does as they grow (a lot), Stripe has released new product lines that integrate with each other and draw companies like Dubstack further into their ecosystem.
On their site, Stripe organizes their products into 4 categories:
I think it’s actually simpler to organize them into 3 categories:
1) Payments
In addition to payments and billing, Stripe also offers:
- Terminal - a physical POS system to use in your donut shop or whatever
- Connect - lets you send payments out to your own customers (imagine you’re running a marketplace)
- Payouts - lets you programmatically pay out your freelancers, users, or whatever have you (some overlap with Connect here that I don’t understand)
Over the past 1-2 years, Stripe has released two new lil’ products under payments that I think are very important:
- Checkout - a fully out of the box, Stripe hosted checkout page for taking in credit card info from new customers
- Portal - a fully out of the box, Stripe hosted billing portal where customers can update their info and adjust / cancel their subscriptions
Generally, you need to build the frontend (a web page with a form) that you back with the Stripe APIs - these two products mean you barely have to build anything. These haven’t gotten a ton of fanfare yet, but I’ve used them personally and they’re pretty awesome if you’re resource constrained.
2) Financial Services
This has been Stripe’s most experimental area.
- Issuing - an API for creating credit cards (physical or digital)
- Corporate Card - lets you create and manage corporate cards for your company
- Capital - access to debt financing for growing businesses
- Atlas - easy company incorporation and formation (LLCs, C-Corps, etc.)
- Treasury - banking as a service (hold funds, payouts, etc.)
The overlap between Issuing and Corporate Cards can be a bit confusing, but you can think of Issuing as a service if you want to create external cards (e.g. Venmo releasing a Venmo card), and Corporate Cards as a service for creating internal company cards (so you can expense the “friday” happy “hour”).
As is often the case, each one of these product lines could be its own billion dollar business, which should be a reminder to all you kids of the power of product ecosystems when done right.
3) Working With Data
In addition to helping you do stuff - like charging cards and updating subscriptions - Stripe is also your system of record for payments. They store all of the data around who your customers are, what their payment info is, when they’ve been charged, and lots more like that. So naturally, Stripe offers tools for working with and understanding that data:
- Sigma - lets you write SQL against your Stripe data, and save and share queries with your team
- Radar - automatic fraud detection and alerting so you don’t get scammed
These two products have been around for a while. Coincidentally, the marketing page for Radar has one of my favorite pieces of headline copy - “Use ML that actually works”:
Shots fired, Stripe copywriting team.
These categories don’t map to what makes money for Stripe per se (you could organize products into loss leaders and money makers). They also recently added Climate, which doesn’t fit cleanly into any of these categories.