Introduction to Stripe

October 10, 2012 — 32 Comments
This entry is part 1 of 8 in the series Processing Payments with Stripe

I cannot state this more clearly: you should be thinking about using Stripe for every e-commerce project you do. Period. Exclamation mark. Although Stripe has only been around since 2011, it’s quickly made a name for itself as an excellent payment solution that is dead-simple to use. I first heard about Stripe in the winter of 2012, when a client wanted me to use Stripe for his e-commerce project. And I’ve since used it on a couple more projects.

Although Stripe is easy to use, I believe that more documentation, specifically a series that puts together the whole Stripe workflow, is warranted. In this first part of an exhaustive series, I’ll introduce Stripe for those not yet using this great service. In subsequent posts, you’ll learn everything you can ever possibly need to know to use Stipe today. Well, almost everything.

Note: As of August 2013, I am employed by Stripe. However, this entire series was written before I was employed by Stripe and no content has been significantly altered since my hiring. Also, I work for and write about Stripe because I’m quite impressed with their product, not the other way around.

What is Stripe?

In order to best understand what Stripe is, it helps to compare it to the alternatives. In an e-commerce site, you take a customer’s billing information and pass it, along with the order information (e.g., the total), to a payment gateway such as This an intermediary between the credit card companies and a merchant account. The payment gateway confirms that the charge can be made to the customer’s credit card and passes that charge information to the merchant account. The payment gateway will report the results back to your site, too (of course). The merchant account is what actually allows your business to accept credit card transactions. It coordinates the credit card transactions with your bank account (i.e., getting you your money).

A Conventional Payment Gateway-Merchant Account System

A Conventional Payment Gateway-Merchant Account System

This is the basic premise. Note that you can’t just mix and match pieces here willy-nilly. Different payment gateways and merchant accounts will accept different card types. And different payment gateways, merchant accounts, and bank accounts are setup to work together (or not). Your bank may also be able to act as the merchant account.

Oh, you should also know that there are many fees involved here. The payment gateway will charge a fee and the merchant account will, too.

A popular alternative, particularly for beginning developers, is to use PayPal. PayPal can be used in a couple of ways, but the older, traditional PayPal model has PayPal processing payments internally: from the customer’s PayPal account to yours. If you want to send the money to your bank account from PayPal, you can do that after the fact. Again, PayPal has services that can be used in other ways, including taking credit cards, but this is the standard PayPal model. The PayPal fees tend to be lower than the payment gateway-merchant account route, but your money ends up in PayPal at the end of the process, not in your bank account (until you transfer it).

So how is Stripe different? First, Stripe is a “full-stack” solution, meaning Stripe acts as both the payment gateway and the merchant account. Your website communicates the customer and order information to Stripe, Stripe clears the payment information with the associated credit card company, and Stripe puts the money in your bank account. And…that’s it. You don’t have to do anything special with your bank account to make this happen. You don’t need a special type of bank account. It just works.

How Stripe Processes Payments

How Stripe Processes Payments

Second, and this goes to my next topic of “Why Stripe?”, Stripe is crazy easy to use.

To clarify another point of confusion: different payment systems allow the customer to stay on your site or go to a third-party site and return. The traditional PayPal service takes the customer through PayPal’s site, but PayPal has another service that works behind-the-scenes, leaving the customer on your site the entire time (regardless of whether the customer is paying using her PayPal account or a credit card). Stripe’s system always keeps the customer on your site. Put another way, your customer won’t even know about Stripe.

Why Stripe?

You have many options when it comes to processing payments, so why should you consider Stripe? (And please note that I’m saying “consider” here: you shouldn’t always use Stripe, just like you pretty much shouldn’t always do anything; more on “Why Not Stripe?” next.)

First, and I cannot stress this enough: Stripe is crazy easy to use. Two questions:

  • Do you have a business and a bank account located in one of the countries that Stripe supports?
  • Do you have a smattering of Web development skills?

If you can answer “Yes” to both of these questions, you can start taking payments with Stripe today. Literally. Tomorrow, if you want to take your time. Or, if you want, you can be taking live payments within an hour from now. Yes: live payments…within an hour…from now.

Stripe was initially available only in the United States. Then Stripe expanded to Canada. At the time of this writing (this update in April 2015), Stripe is in private betas in other countries, too. Check out “What countries does Stripe support?” to see if you can use Stripe.

You probably can’t fully appreciate how easy Stripe is to use until you do use it, but know now that being easy to use is a core principle at Stripe. In fact, making Stripe easier to use is a recurring goal. Which seems insane to me, because it’s crazy easy to use. Not sure if I mentioned that. But if you’ve hesitated in implementing e-commerce because you thought it was too complicated (e.g., you didn’t understand how a payment gateway differs from a merchant account), then Stripe is your new best friend.

It should go without saying that Stripe offers all the functionality you would expect from any payment system, such as the ability to handle one-time payments or recurring ones (i.e., subscriptions).

Second, Stripe provides good libraries for interacting with the Stripe system in the most popular languages:

  • Python
  • Ruby
  • PHP
  • Java
  • Node.js
  • Go

Plus, there are third-party libraries available for use. Most decent payment systems offer some libraries and sample code, but in my experience, they’re often terribly outdated; not so with Stripe. Stripe actively maintains its libraries, keeping them up to date with the most current technologies and best practices.

Third, Stripe uses Ajax to transfer the credit card data to their system. Why is that a good thing (besides being all Web 2.0-y)? Through this approach (which I’ll explain in detailed code later in the series), the customer’s credit card data never touches your system. This means that so long as you use the Stripe Ajax system (aka Stripe.js) and load your payment page over SSL, you’ll limit your liability and meet PCI compliance requirements. If you’ve spent more than three minutes looking over PCI requirements, you’ll be able to appreciate this benefit. (Short version: limited PCI compliance burden saves you a ton of time and money.)

Fourth, Stripe’s documentation is very good. In fact, I hesitate to even write this series considering how good the documentation is. They must have some writers over there! This is another area in which Stripe really shines, particularly compared to PayPal. When I was writing my “Effortless E-commerce with PHP and MySQL” book, I spent hours poring through the documentation at different payment providers. More often than not, I was confused and frustrated (and let’s say I already know a few things about handling payments and e-commerce in general). Many companies have too much documentation and documentation that’s not updated. You can spend days weeding through the PayPal docs (literally), often in the format of outdated book-length PDF files. Further, these companies have the annoying habit of frequently changing the names of their services, which makes the outdated and overwhelming documentation even more useless. So not only is Stripe easy to use, but it’s also easy to figure out how to use.

(As an aside, I should say that when I wrote my e-commerce book and had to decide what payment systems to use, many, many, many people expressed great hatred for PayPal. I don’t personally hate PayPal, but I can understand that perspective. PayPal is well embraced by consumers, but often a nightmare for developers.)

Fifth, as if good documentation wasn’t enough (and sometimes it isn’t), Stripe provides excellent support, including live support. You can start with the Q&A section, which is searchable. If you’re still lost, you can use the #stripe channel on freenode to get live help. It’s actively staffed by the Stripe development team. And if that’s not enough, Stripe also welcomes emails. I’m pretty sure you’re not getting that kind of support from anyone else.

Sixth, for what it’s worth, I find the Stripe people to be very responsive to feedback: if there’s something you think they could do better, they really want to know.

The last reason I’ll mention is that Stripe’s fees are about as good as you’ll get in the industry: for each successful transaction, you pay 2.9% of the total charge plus 30 cents. So a $10 charge costs you 59 cents. A $100 charge costs you $3.20. (The minimum charge is 50 cents.) Again, these rates are fairly standard; I believe PayPal charges about the same. Stripe has no monthly fees or setup fees, and international charges are at the same rates, too. And you won’t be charged for failed payments. If you refund a charge, Stripe refunds its fees, too! (The rates for Stripe accounts in other countries differ slightly.)

Now, personally, I don’t worry about fees too much. As far as I’m concerned, paying too much in fees is a good problem to have. Why? Because it means you’ve got sales and money is coming in. I’m not saying you should be indifferent to the fees you’re paying, I’m just saying it should be near the least of your concerns. If you get to a situation where you’re bringing in so much money that the payment fees bother you, consider yourself blessed. Although, again, I’m pretty confident that Stripe’s fees are as competitive as anyones, if not better than most. And, if you’re quite active, Stripe can work with you on volume pricing.

To be fair, I should say that some of these reasons why you should use Stripe may only be possible because Stripe is still relatively new and not nearly as immense as the behemoths like PayPal. But I’m pretty sure that PayPal never offered this kind of support and there’s ample evidence to believe that Stripe will continue to strive towards ease of use and excellent support as they expand.

Why Not Stripe?

I really like Stripe: not just the service, but also the people behind Stripe and Stripe’s company ethics. I can readily recommend that everyone use Stripe, save for two specific situations:

  • If your business isn’t in a supported country.
  • You need to support PayPal or other non-credit card payment types.

As for the first situation, Stripe was originally only able to support businesses with United States addresses and bank accounts. They have expanded into Canada, Ireland, and the UK, then Australia, and most of Europe, and… Stripe is continuing to expand its availability around the world, but that’s both technically and legally difficult, so it may take some time to get to where you’re at.

As for the second situation, if, for whatever reason, you feel the need to support payments via PayPal, then it may not make sense to also implement Stripe. You could implement both–Stripe for credit cards and PayPal for only PayPal, but I’m not sure everyone people (although I’d be inclined to use both). Stripe also does not support some more esoteric payment options, such as eCheque.

At the time of this writing, Stripe supports Visa, Mastercard, American Express, JCB, Discover, and Diners Club in the United States; Visa, Mastercard, and American Express elsewhere (support doc).

Those, in my mind, are the two biggest reasons why Stripe may not be appropriate for your business. There are other more minor considerations, though.

For one, you can’t use Stripe if you do certain kinds of business. It’s an interesting list that shouldn’t apply to most people, but you can’t use Stripe if your business: is an airline or cruise line, sells age-restricted products, is a bankruptcy lawyer, sells counterfeit goods, is a fortune teller, offers gambling, sells illegal drugs and drug paraphernalia, is a telemarketer, is a pyramid scheme, sells weapons, is involved in pornography, or offers mail-order brides. It’s an interesting list, but someone at Stripe will actually confirm the nature of your business, so don’t think you can skirt this requirement.

You should also know that Stripe will deposit monies into your bank account a couple days after the transaction has occurred. This allows for refunds to be processed or fraudulent charges to be caught. Most payment systems do have a built-in delay, though, except for a PayPal to PayPal transaction. In that case, where money is going from one PayPal account to another, I believe the money gets deposited into your account more quickly, like at the end of the day (I forget, and it’s hard to find out such things in the PayPal documentation). But in that case, it’s still another delay before the money gets to your bank account after authorizing that transfer.

What’s Next?

Hopefully this post has managed to tempt you into learning more about Stripe and considering it for your next e-commerce project. If you’d like another developer’s perspective, check out this article (it’s a tad more technical than mine, but good). And, of course, you can just head over to Stripe and start going through the documentation.

In my next post, I’ll walk through setting up an account (which you can use for testing purposes, in case you don’t have a need to handle true payments right now).

If you enjoyed this post, then please consider following me using your favorite social media, the RSS feed, and/or by subscribing to my newsletter. Or go crazy, and buy one or more of my books . Thanks!

32 responses to Introduction to Stripe

  1. Another great article Larry, thanks. As for using Stripe in countries other than USA and Canada, their website explains all; good news for us in the UK

    My copy of “Advanced PHP” has arrived so the final forlorn hopes of keeping up with your writing — Yii Book on the way, and Javascript still to spend time on — have well and truly been extinguished! ;0)

  2. Enjoyed the post Larry, but I have to admit that as a consumerI like to see the PayPay logo among the payment methods. PayPal is more like paying cash.

  3. Great article! Can’t wait to have Stripe here in Europe.

  4. Thanks for the tip Larry! Here I was, adding PayPal Express checkout to a client site, and now I have a reliable Credit Card processing solution to run parallel to it. I can attest to Stripe’s ease-of-use, it took about an hour (maybe less) to get transactions processing nicely in my test account, whereas I am still tweaking the PayPal API to do what I want it to (after a few days of on and off work on implementation)… PayPal Documentation *facepalm*.

    The speed of Stripe is great, and not having to bounce back and forth between PayPal and my server makes for a much better user experience.

    Something tells me (though still great) is going to get the boot if you do an updated release of Effortless E-Commerce.

    • Thanks, Eric. Sorry for the delay in expanding on this; been busy! Thanks for sharing your experience. I just setup Stripe for my Yii book site and it also took me less than an hour. Will definitely be using Stripe when I update the e-commerce book!

  5. Larry thanks for the information. I will look into Stripe for non-reoccurring transactions. Does anyone know how they stack up against Square?

    Different animal and use that strict ecommerce but worth considering under the right circumstances is Dwolla. My situation has about 35 to 50 regular accounts paying me monthly. Dwolla is not cc but bank to bank. If a client has their bank info handy it takes them about 7 min to setup an account and is done only once. There after each transaction cost $0.25 period. Allow me to say that again ONE quarter to transfer thousand$. If you deal with the same clients on a regular basis this might be an option worth considering. A quarter vs. $30 plus per $1k makes sense with the right client relationship.

    • Hey Tray. Thanks for the comment. To be clear, you can use Stripe for recurring (aka subscription) billing, too. As for a comparison to Square, it’s a different model. Square allows you to accept payments via a mobile device. Stripe does not (currently) have that capability. But I don’t think Square lets you take payments online (although I could be wrong).

      I had not heard of Dwolla but I could see it being great in very specific instances.

  6. Thanks a TON for this series!

  7. Thank you for this article, it is a helpful explanation for someone new to e-commerce.

    As I understand stripe now does allow you to charge later using a customer objet. Hmmm might be confused with all the reading I’ve been doing.

  8. I am looking at stripes right now and I would love to hear from current customers of theirs. I run a online website and due to the nature of our business just was informed we can’t use PayPal’s gateway and merchant together to keep the user on our site.

  9. Thanks for introducing Stripe. I have few questions: Do I need to initiate a transfer process or does Stripe transfers funds to my bank account seven days after EVERY transaction? If it is automatic, can I delay or choose to manually do the transferring process? The reason I ask is because my bank charges a handling fee every time a deposit is made. So instead of doing the transfer of $?? every time X 20 times, can I manually do just one transfer (sum of $?? X 20) at a time I choose? Thanks. By the way, good to know you find Stripe and glad you share Stripe with us!

  10. i thought this was a step by step guide im still confused how 2 seup stripe it has no examples ujst snippets here and there :) help lol

  11. Awesome articles, thanks Larry.

    Question: Does Stripe support the ability for merchants to sell and redeem virtual gift certificates/gift cards?

  12. Thanks for a sorely needed series of articles. Personally I found Stripe’s documentation totally confusing, illogical and frustrating. So I greatly appreciate your series. I’ve put together more than a few websites, but I got stumped at the first step with Stripe’s docs. I found your series much more user friendly and logical.

  13. Is all the user who is using typical website will have account in stripe? if no how will they pay to website owner ?

  14. it’s a little difficult to go with stripe when their reviewer can’t even spell their name correctly… has to wonder what else you failed to check.

  15. Great Larry..!
    I am new for this, and working on the e-commerce portal. I have to developed it in python. Can you suggest in what direction I should go. We dont want to use the any type of form. we will call the API which pass the credit card details. Please suggest the way that I can follow. Thanks in Advance.

Trackbacks and Pingbacks:

  1. Creating a Stripe Payments Test Account | Larry Ullman - November 7, 2012

    […] entry is part 2 of 2 in the series Processing Payments with StripeProcessing Payments with StripeIntroduction to StripeCreating a Stripe Payments Test AccountWhen you go to use any payment system for the first time on a […]

  2. What Is Larry Thinking? #65 => Me! | Larry Ullman - February 18, 2013

    […] Introduction to Stripe […]

Comments are great, but I'd strongly prefer any requests for assistance get made in the support forums. Thanks!