All Posts

The Case for Stripe in MVP Apps

With so many options available for online payments, I wanted to summarize the reasons why I feel strongly that it makes sense to use Stripe when building minimum viableproducts.

Focus on your business, not onpayments

In a recent startup, we integrated with an internal paymentsystem.

We probably lost 6 man-months of productivity. At times, it felt like we were in the payment business – not in the business we were trying tobuild.

Focusing on the wrong thing is what killsstartups.

Mature, easy, and well documentedAPIs

Stripe has top-notch APIs, but their documentation and libraries are some of the best for any SaaS that I have ever seen. On several projects we’ve used Stripe’s docs as the model, but it’s deceivingly difficult to produce something so complete and so simple todigest.

Easy to finddevelopers

Along with excellent mature APIs comes an army of developers who can help work on your Stripe integrations. For non-technical founders, you will not have a hard time finding people with extensive Stripe experience (likeme!).

The best userinterface

People can forget that there’s a lot more to a payment provider than the APIs,too.

With Stripe’s UI, you can answer common business questions really easily. Things that you would have to build in your web app. Things that help you assess your startup’s burn rate. Things that help you service customers without wastingtime.

What was the paymentlifecycle?

How much has this customer payedme?

Do I have customers with the same email but different customerIds?

How many customers do Ihave?

When is a customer’s next invoice? When was their last invoice? Did they payit?

Who has expired creditcards?

How much revenue did I have in the pastweek?

How much have I paid in credit cardfees?

How much money do I have in escrow withStripe?

Try to answer all of these questions on another provider in less than a minute – you can do it withStripe.

The user interface is so good that you can just give customer service reps limited access. No technical knowledgerequired.

Easy international charges

Stripe does the currency conversions automatically and you never really have to think about it. I can’t express how much time this saves over other options, and allows your startup to charge internationally muchearlier.

Bitcoin

Stripe is a mature payment provider that offers BTC integration. Other providers of Bitcoin billing are not as mature, but they do work prettywell.

Excellent webhook support

For any action on Stripe, you can get a POST webhook event to your server. This is incredibly useful for building all kinds of custom integrations with your CRM, doing additional billing, tracking internal analytics, andmore.

Stripe will keep sending webhooks in case your server goes down, ensuring you get the data and respond with a success code. That saves you from having to implement a message queue (MQ) for paymentthings.

Recurring payments andtrials

Stripe squarely handles this exceedingly complex trap-of-a-feature that plagues many SaaS services. I continue to be impressed how easy they make recurringpayments.

Because of the payment lifecycle in Stripe, you can also do advanced billing prettyeasily.

Advanced billing and storingmetadata

I worked with a startup that had plans with tiers of service credits. So they wantedto:

charge a monthly servicefee

give X credits with theplan

track credit usage during themonth

bill all customers on the 1st of themonth

calculate any credit overage and add that to the invoice before the customer wascharged

This whole billing lifecycle took only about 25 hours to implement from start to finish. Doing the same thing on other providers isn’t really possible, or requires hacky workarounds. With Stripe, it was a natural part of the recurring billing lifecycle – that means we could produce clean code without dangerous hacks. Trust me, you don’t want hacky asynchonous checks in your billingsystem.

Every “object” in Stripe – plan, charge, customer, etc. – can have stored metadata in the form of a simple JSON object hash. We just stored the plan limits inside the Stripe plan.metadata – so all the plan data was in one place. Then we used webhook events to add additional line items for plan overages. Stripe gives you a chance to update an invoice generated by recurring billing, before they actually charge thecustomer.

Where it fallsshort

Bank account charges. There are really limited options on the internet for charging bank accounts directly. Stripe is not one of those options. eCheck payment kind of suck though because you typically have to first have the customer verify their details withmicro-deposits.

3rd party transfers. Stripe did away with their transfers API and is pushing Stripe Connect. Stripe Connect is a an excellent service, but it’s not as easy as it used to be – a simple ACH transfer by providing the routing number and account number. I miss thosedays.

Fees (maybe). The fees are about average. However, in my opinion they more than justify the time savings during development, the UI tools, and the customer service (yes, it’s pretty good, I have usedit).