8 ms·
Stripe’s payments APIs: the first ten years
- bcx 6y agoI remember /dev/payments back in Summer of 2009 when were were in YC with the Collisons I am curious if any of the APIs are actually 11 years old ;) (that said, I am curious what happened in S09, we wanted /dev/payments badly, but nothing really happened as far as we could tell, and Stripe went through a future YC batch again)
- pjg 6y agoAFAIK Stripe (/dev/payments back then ) never demo'd on the demo day of either S09 or S10. YC had/has a deal with Sequoia that Sequoia gets first dibs on the companies in each batch before demo day. Stripe presented to a bunch of VCs but got picked up before the demo day. Basically they had funding before the demo day. Also they stayed in "beta" all the way until Sept/Oct 2011 when they formally launched on Techcrunch. That gave them enough time to hone the basic API, work out a TPPP (Third party payment processor ) deal with Wells Fargo and actually try it out before launching.
- jariel 6y agoPrevious APIs were an afterthought of the business process. Developers weren't first class citizens in the process. With Stripe, the product was built around the API experience, which would engage a new world of users. It's an important lesson in product management.
- jeffnappi 6y agoStripe's beautiful API design and documentation, along with their highly reliable service have had a profound impact on my life :)
- Wonnk13 6y agoI can hack some python, but I am not really a SWE. I came up just short in a Stripe interview a couple months ago- the whole thing was really pleasant and I'm going to try again in the spring. I didn't really realize what it meant to build the product around the APIs until I looked at similar companies and their API guides... yikes. Stripe really is in a class of their own :)
- rory_isAdonk 6y agowas the interview similar to how its documented on their website?
- jflans 6y agoSeconded! I would love to hear about the Stripe interview process from someone who came up just short but had a good experience - I've not seen many accounts like that for any company.
- louisvgchi 6y agoI'm very happy with Stripe's API; it's one of their best selling points. I'm very unhappy with their support, which is automated by bots and I've gone around in circles with such a bot. Unfortunately their support plans are between a rock and a hard place. It's either[1]: (1) Free, but garbage. (2) Starting at £1,400 per month. The reason I chose Azure for my cloud provider was because Microsoft are obsessed with support, and I can get[2]: Free, £21.62 per month, £74.54 per month, £745.31 per month for different levels of availability, response times, and assistance type. I wish I could pay Stripe some amount per month to talk to a human who speaks English when I need it. Or else, the first competitor to Stripe that offers this and I will jump ship. I already took a look at Paddle, but their approach with customers is equally appalling. [1]: https://stripe.com/en-gb/support-and-services#compare-plans https://stripe.com/en-gb/support-and-services#compare-plans [2]: https://azure.microsoft.com/en-gb/support/plans/ https://azure.microsoft.com/en-gb/support/plans/
- deleted 6y ago[deleted]
- aketchum 6y agoIve been very happy with Dwolla and their level of support is wonderful. Our small team gets a slack channel with our rep and a few others and they respond quickly.
- ruffrey 6y agoAnother data point. I have not used phone support, but been a customer since 2013 and have used the live chat quite a bit. It has always been extremely good. Never gone around with a bot. Last chat was maybe 1 month ago.
- wallawe 6y agoSame, I've used both phone and chat many times and every time it's been a wonderful experience.
- newsbinator 6y agoRecently I’ve had nothing but bad experiences with Stripe live chat. Several times agents didn’t understand English well enough to process the specifics of my issue, so they gave canned generic replies. Other times they weren’t familiar with Stripe’s own UI (I’m not talking some little-known API- I’m saying the Stripe Checkout config Dashboard). I learned to stop wasting time hoping to get a live chat agent who works at Stripe (rather than what appears to be an outsourced VA engaged for quick replies on live chat in my timezone), and instead ask questions on Stripe’s IRC support channel.
- charliebrownau 6y agoStripe supports Censorship Deplatforming Outrage Mob Anti Whiteism Time to look into non judo-mainstream services, companies and platforms
- cj 6y agoPSA: Be careful with ACH payments on Stripe. We had a customer one time who sent us $20k via ACH via Stripe. The customer insisted they sent the money, but it was nowhere to be found in our Stripe account. It took months to track down the money working with Stripe support (Stripe indeed received it, but failed to actually payout to our account) After that experience, we pull customers out of the Stripe ecosystem as soon as they want to pay by any method other than credit card. Also saves on fees.
- justin66 6y ago> Stripe indeed received it, but failed to actually payout to our account That's astonishing. Did they ever explain what link in the chain failed?
- sudhirj 6y agoIsn’t this all the more reason to use it for those who need automated ACH? I’d assume they fixed the bug. It seems counterintuitive but like AWS, Stripe is anti fragile. Each problem makes the system better the next day, and so more worthy of continued use.
- gideonatstripe 6y agoHi cj, thanks for sharing this. I think one of my colleagues already reached out, but just in case I wanted to stop by and make sure everything is getting resolved here. Additionally, we have a totally new ACH credit transfer product in beta right now that's built on our new Payment Intents API. If you (or anyone else) would like to try it out, we think all the improvements we've made will help eliminate all the headaches the old implementation may have caused. Please reach out to me at gideon+hn @ stripe.com (+hn adds a tag and helps avoid the spam filter) and I'd love to continue the conversation.
- aarondf 6y agoStripe's culture of writing well is really quite impressive. Everything they publish (in my opinion) is top notch and super readable.
- Zee2 6y agoDo you know what software/tools they use to draw their diagrams in this blog? They're super beautiful and highly readable, with a unified art style/branding. I'm curious if its something one of their designers cooked up by hand in Illustrator or Figma/Sketch, or if it is some specialized diagramming tool that they use.
- napoleond 6y agohttps://whimsical.com/ https://whimsical.com/ :)
- Zee2 6y agoAh, thank you!
- twostorytower 6y agoI've used Whimsical a ton in the past year and it's magical software.
- neom 6y agoMichelle Bu the engineer who wrote this is probably the kindest person I've met in startup. In 2014/15 when I as working on DigitalOcean we decided to switch to Stripe, based in NYC I went to SF to meet the Stripe folks and get to know them a little. They partnered me with Michelle who not only went out of her way to spend an afternoon with me, feeding me lunch, and telling me anything I needed to know about Stripe, but also as a talented engineer; made me feel really confident that moving to Stripe was the right thing to do! Shout out to Michelle.
- pc 6y agoMichelle is shockingly kind and has shaped Stripe's culture very considerably in this and other regards.
- firloop 6y agoAgreed! When I worked at Stripe, Michelle was my "spin-up buddy", and getting the chance to work with her was one of the highlights of my time at the company. Strong second that she is extremely kind and embodies the best of Stripe's culture.
- cperciva 6y agoan afternoon with me feeding me I'm... honestly not sure if this is metaphorical. Did she take you to a cafe and give you literal food, or was she "feeding" you information?
- leftnode 6y agoNot the OP, but I visited the Stripe HQ back when they were around 50 people and they had a full time chef on staff. I spent an afternoon with them, which included a free lunch.
- deleted 6y ago[deleted]
- jackconsidine 6y agoI've used Stripe through three of these APIs (v1, then sources / charges, and now PaymentIntents). Since the Stripe docs began recommending intents, I've used them 2-3 times; I found them to be more complicated (the flow now starts on the server which means exposing more endpoints on my project) and I misunderstood their purpose. I thought they were meant to be more end-user friendly since you have to basically declare on the server what a charge is for prior to taking their payment details. That might have been a foil against "we have your card and can charge any amount we want now!". However, from reading this well-written article, I see that intents were actually the resolution to a crisis of abstractions. Stripe wants payments to feel unified and hence has brainstormed the best model to fit different types of synchronous and asynchronous methods. I'm curious as to what percent of Stripe usage is American credit card charges and subscriptions vs ACH, Bitcoin, OXXO and the rest.
- oakesm9 6y agoConsidering that every online card transaction within Europe now requires the more complicated payment intents model (because of the SCA, Strong Customer Authentication, requirements) I would imagine that it's a fairly significant percentage.
- Silhouette 6y agoConsidering that every online card transaction within Europe now requires the more complicated payment intents model (because of the SCA, Strong Customer Authentication, requirements) I would imagine that it's a fairly significant percentage. Just as an anecdotal data point, this is not actually true in practice, at least not yet for us. We abandoned our considerable efforts to move to Stripe's new API during its catastrophic phase, for reasons I've mentioned in past HN discussions and won't rehash here. The bottom line is that anything that required 3D Secure would presumably now fail for us. However, as a UK business with customers in several other EU member states as well, we have yet to notice any significant failure rate when signing up new customers. This may be because we charge relatively low subscription fees and qualify for one or more of the exemptions most or all of the time. In any case, we keep being told it will change one of these days but so far the sky has not fallen and we're still using Stripe when taking card payments.
- LeonM 6y agoI guess this article sums up why we've had a rather bad experience with stripe so far: the API constantly changes, and the documentation or even Googling for a solution seems to be more confusing than ever since most articles you'll find are about some older API. It initially took us much more engineering hours to integrate Stripe into our processes then expected. Granted, we do worldwide sales, with multiple tax-flows and we accept multiple payment methods in both euros and USD. This was during the Charges/Sources days. Then this year we had to go through all that again to migrate from the Charges/Sources model to the PaymentIntent model. This was a pain as the popular payment method in our own country was still very much in beta for the PaymentIntent flow. Documentation was all over the place and customer service often did not know answers to implementation questions (though I must say, they always followed up eventually with some good pointers). Now we are receiving scary emails about how much money we'll lose if we are not SCA compliant. But following the link in that email shows we are SCA compliant... Confusing stuff. Let's just hope we don't have to go through a migration again. Disclaimer: I don't have any meaningful experience with other payment providers, so a can't really tell if Stripe is better or worse than others. I guess accepting payments is just really hard if you want to do anything beyond the 'hello world' (which is: credit cards in the US only).
- mastre_ 6y ago> I guess this article sums up why we've had a rather bad experience with stripe so far: the API constantly changes, and the documentation or even Googling for a solution seems to be more confusing than ever since most articles you'll find are about some older API. Just a note, one of the things they got right with their API is versioning. Until you decide to upgrade to a newer version of their API, nothing changes for you, and you can test out compatibility in dev/staging by simply specifying a flag on each API call (which is easy to do if they all go thru a central class that handles the Stripe API calls for your app). Their changelog also takes a "from -> to" flag which will show you the exact changes that are between the version you're on and the latest (or any other). All in all, for this specific part of it, I wish more places handled evolving APIs the way Stripe does.
- novaleaf 6y ago
- 120bits 6y agoStripe is my favorite startups ever. I have been following them for sometime now and I have learned lot about APIs and documentation. I have said this earlier and never fail to mention that their API documentation is really really good. Also, their website and product launch pages are just beautiful. Wish I was that talented. My sincere thanks to stripe engineering team, I have learned lot from you.
- LordOfWolves 6y agoI really liked Stripe until recently. Their support and “code of ethics” completely failed me however in a recent startup. A cofounder was able to remove me from our Stripe account, and despite having another account linked to nearly 10 sub-accounts (for different businesses/clients), support essentially completely ignored me. I sent all documentation you can imagine, including legal documents showing my ownership in the business, all to no avail. Never have I felt more powerless and betrayed.
- nickjj 6y agoTheir API is good but I hope they let you configure webhook API versions from their UI or even tie them into the API version used to trigger the webhook because webhooks do not respect the API version you used to call an API endpoint that triggered the webhook at the moment. It will use the API version you defined when you created the webhook endpoint, but the UI to create the webhook endpoint also doesn't let you pick a specific API version. It will use their latest API version. It's really non-intuitive because it means you have to set webhook endpoints using Stripe's API because only then the API version is configurable, but it also makes deploying Stripe API changes kind of complicated because you need to create multiple webhook endpoints in parallel to not throw exceptions due to your code expecting webhooks with different properties based on API differences. I emailed Stripe about this once and support had to forward the request to someone higher up but ultimately my feedback got put into the "Dear valued customer, thanks for the feedback" bucket which means nothing will probably come of it. I wish I knew the technical details on why webhooks aren't sent using the same API version that was used to call the API endpoint that triggered it. Stripe engineers are a lot smarter than me and I can't imagine they didn't think of this already. Is there a technical limitation or downside to this strategy?
- Androider 6y agoYou can have multiple clients at different API versions interacting with Stripe, with a single webhook in your service to receive the callback. Even if you had a single integration, you cannot usually guarantee an atomic switch to the newer API version across all servers, so you either have separate versioned endpoints or your webhook endpoint has to deal with multiple versions. That said, I do agree you should be able to specify the exact version for a webhook in the Stripe admin UI. But I also wouldn't worry about trying to track the versions too much, Stripe is great in that your integration from 5 years ago will still work just fine today unless you need the newer payment methods.
- boucher 6y agoThe simplest answer is probably that events aren't really generated in a one-to-one relationship with API calls, so it's very non obvious at that point what behavior you would expect. I believe the logic behind associating the current API version with the endpoint you are adding is that you are adding it now so you should use the current API. Perhaps they should let you choose an older version, but there's always some desire to get people to upgrade to the latest version of things.
- deleted 6y ago[deleted]
- didip 6y agoIt's quite insane how well Stripe executes their strategies. Their API docs set examples to all the other startups.
- Zee2 6y agoDoes anybody know if Stripe uses some specific tool to draw their diagrams, like those on this blog? They're very well made and the branding is consistent and beautiful. I'd be curious if it was something one of their designers does by hand, or if they have some tool that allows them to create their (block) diagrams with such unified branding.
- sholladay 6y agoI generally like Stripe's API, and this blog post gives me some hope, but the complexity of their system and documentation has definitely been growing a lot more than I'd like. These days, I end up attaching `expand` to most API requests, because they've become addicted to overly nested data structures. And for some reason you have to include array brackets within the parameter name, so really it's `expand[]`, which is awkward in many contexts. The length of property names has gone up significantly and now often use multiple words separated by underscores, e.g. `statement_descriptor_suffix`, which is also awkward, especially in JavaScript. The docs still mention Sources and Tokens in many cases, without a clear translation to Payment Methods and usually without even mentioning that those concepts are deprecated or outdated. Tangential to that, while the post seems to hint at trying to make a unified and cohesive experience, I can only see that happening for simple one-time payments. Subscriptions and Connect still seem like an afterthought. For the longest time, you could do destination charges for one-time payments but not subscriptions. Additionally, when using subscriptions with Connect, you have to specify the application fee as a percentage, which is painful for us because we want to charge a flat rate, so we have to fudge it with some math using hardcoded values to properly take into account coupons and Stripe's fees and we end up having to round to the nearest penny. It's just an unnecessarily messy headache. One-time payments are pretty easy with Stripe, the rest seems bolted on.
- redkoala 6y agoIs Stripe planning to support additional crypto currencies like ETH, Nano, Monero etc in addition to Bitcoin? It seems like the same user initiated payment flow and merchant to validate receipt in their blockchain account would apply to other cryto currency payment methods as well.
- michaelmu 6y agoThey no longer support Bitcoin. See: https://stripe.com/blog/ending-bitcoin-support https://stripe.com/blog/ending-bitcoin-support
- keyle 6y ago> Close laptops. When working together in the same room, we found the fastest way to be fully present and attentive was to close our computers. When we did, we felt more listened to and could more clearly and easily explain our reasoning to each other. > Pace your questions. Start each session with a set of questions you want to answer. Write down any new questions that arise in a working session for the next session. Try to avoid discussing them in the moment. In the time between sessions, you’ll get some distance from those questions, collect new information, and meditate more on the topic. End each session with clear answers and questions to explore in the next session. Simple and brilliant.
- zed88 6y agoNo complaints about the product, but not happy with Stripe's ever increasing transaction cost.
- switch11 6y agoVery happy with Stripe. A customer for 3.7 years now 1) Their customer service has been good. However, I've never had to use it for anything serious 2) Their API is awesome 3) Their level of complexity is slowly increasing. This is something very dangerous for them and they need to look into it. Their biggest advantage is/was - super simple to set up everything 4) Like many others, not happy that costs are slowly increasing. 5) Perhaps I'm the only person who falls into the camp that Stripe doing things like Atlas and Stripe Capital is somewhat unnecessary and takes away from their focus on Payments 6) Don't really understand why they are doing the whole Platform of Platforms thing i.e. Stripe customers can now offer stuff like Bank Accounts to their customers Seems like adding needless risks and complexity 7) Anyways, I miss having Stripe be really simple and really focused on one thing. Hope they can at least be like Apple and Microsoft where they keep laser sharp focus on their money makers/core competencies and have dedicated teams and the best people on it and they don't shift over their best people to pie in the sky stuff like Platform of Platforms