Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Working with the Stripe Payouts API (chriswinn.com)
91 points by drusenko on June 19, 2013 | hide | past | favorite | 47 comments


> Their core product, enabling developers to charge credit cards, wasn’t the first to the market. It is, instead, the best.

This is what I love about stripe. It may seem to an outsider like HN is full of Stripe fanboys but to someone who has worked with 10-20 other payment gateways its a godsend. Documentation that is simple, a reliable api, webhooks that work and a fantastic team behind it make stripe so much better than the other big players.


I've said this before, but each payment provider out there has benefits the others don't, which is a little annoying. For example, Balanced is inferior in almost all regards to Stripe except in one major area: Payment speed. Stripe offers 7-day rolling payouts (shorter for larger merchants), but Balanced offers next day payments and same day for Wells Fargo customers!

Square offers same-day payouts and the best in-person dongle experience. But - and I have NO idea why this is - they offer no web API. Ridiculous.

Stripe has the best third-party plugin support and best documentation.

For now, I use Stripe, and they've worked with me to speed up payments. But you can't beat same-day payments that Balanced offers (I do use WF) and if Balanced ever starts funding and encouraging developers to work on plugins for major shopping carts, I will switch immediately.


How is Balanced inferior, exactly? I would call neither party inferior, but as far as I can see Balanced has the better product. Two things Balanced has that Stripe does not: ACH debit and credit, and programmatic merchant underwriting. Massive features IMO.


The big win Balanced has over Stripe is the ability to use their payouts API independently of whether you're using them to collect credit card and ACH debits or not. So you could be charging cards through Stripe and paying out via Balanced. Stripe forces you to charge cards through them in order to do any payouts.

It's true Stripe is integrated with more shopping carts and invoicing systems, but Balanced will get there. Personally, it would be great to see a Balanced credit card and ACH FreshBooks/Harvest integration because we're moving more into invoicing, as we're now dealing with larger companies and larger payments.


Oh, I didn't notice that stripe doesn't do the merchant underwriting. That's a non starter for us.


To clarify: Stripe underwrites you as the merchant. Balanced lets the API user underwrite anyone (yourself or someone else) as a merchant, allowing for example the operation of a marketplace, where each merchant has their own merchant account. Balanced allows you to underwrite an arbitrary number of merchants programmatically via API. Correct me if I am wrong, and I am sure pc will do if this is the case, but Stripe does not offer this functionality.


(I work at Stripe.) When you create a seller via the API, both Stripe and Balanced do the exact same thing: verify the identity of seller. You can run a marketplace on either.

Edit: I'm using the words seller and recipient interchangeably: https://stripe.com/docs/api#update_recipient


I'm sorry, I can't see any mention of a seller resource at https://stripe.com/docs/api, nor does the Ruby library seem to implement it. Is it called something other than Seller?


I am very curious about this as well.


Hm? We absolutely do perform the underwriting ourselves.


OH! Very interesting!


Want to drop me a note? patrick@stripe.com.


Third party plugins is not even close. Shopping carts overwhelmingly support Stripe and not Balanced.

EDIT: Not sure who downvoted you; it was a fair question. I countered it with an upvote.


Thanks. Shopping cart integration is first mover advantage. Stripe was the first to market with a product that dissolved two huge problems with accepting payments online: merchant underwriting and PCI-DSS compliance. Because of this it's unsurprising that i.) shopping carts rushed to integrate with them, and ii.) there is as much community good will toward Stripe as there is.

You could reach out to Balanced about API wrappers libs, I'm sure they would love someone to write language idiomatic libraries for them. It might be a nice contract gig.


>You could reach out to Balanced about API wrappers libs, I'm sure they would love someone to write language idiomatic libraries for them. It might be a nice contract gig.

I have, they suggested I open a ticket, and I did many months ago. No movement since.

I am not good enough to write a wrapper and frankly time/money preference dictates I spend it elsewhere, in any case.


I'd probably send them another note. They've been pretty good working with GitTip.


I've implemented Stripe, Stripe Connect and Balanced, and I consider them to be comparable in offerings if you are a traditional non-marketplace merchant. To say Balanced is inferior save for their Payout speed is not true. Their differences become more clear when you are operating as a marketplace.

It’s been stated before, and I’ll reiterate, Balanced’s merchant account underwriting for marketplaces is performed via their API. This means the marketplace retains complete visibility into the account signup process. With Stripe Connect, you are redirected to their website, which means your potential user may or may not ever make it back to your system for whatever reason.

During merchant underwriting, Stripe Connect requires each merchant to create an account on their system with their own username and password. This means they are free to access their account on Stripe outside of your system. While good for the merchant, it might not be so for the marketplace trying to ensure all transactions continue to run smoothly.

Also, because each merchant account in Stripe Connect is separate, the marketplace does not gain any economies of scale when it comes to pooling together all credit card transactions for volume pricing purposes. Balanced has a single escrow account that all funds are held in and does offer volume pricing based upon that.

In my opinion, Stripe’s focus originally seemed to be on the individual merchant and have recently made changes to make them more attractive to marketplaces. However, Balanced’s approach has been to offer a more complete solution for a marketplace, while still allowing for all the same features to be used as a single merchant.


> For example, Balanced is inferior in almost all regards to Stripe except in one major area: Payment speed.

We'll fix this.


This is something we experienced on The Wedding Favor. It was a trade-off we were aware of. On the other hand, it did trouble me that we were able to transfer money same-day to Chase bankholders with Balanced. It sounds great, but somewhere along the line that means that Balanced was "floating" our credit card charge and fronting the money to pay out to the end-recipient. While I appreciate this, and we benefit from very low chargeback rates (our users are friends and family), this seemed like a "too good to be true" risk.

In Stripe's case, you can make the business choice in your logic to pay out quicker to your end user, so long as you understand the risks (which you assume) and keep a comfortable account balance to cover it. Payouts to you, the Stripe account holder, is another matter!


That's great as this is one of the main reason we are using Balanced today for our soon to-be-launched marketplace.


We use it for the reddit marketplace and have loved it (balanced).


pc, nothing would make me happier. I cannot stress strongly enough how good your service is. That is literally the only thing I care about with regards to sustainment/upgrading of your service. (Not to say I haven't enjoyed the other things you've done, of course.)


We use balanced for reddit and I'm wondering if stripe works similarly such that from one incoming payment you can pay multiple bank accounts?



Thanks. Not sure I see any reason to switch but its interesting.


pc, any word on if you'll be supporting ACH debits through stripe api anytime soon? (aka charging customers via bank accounts).


brackishlake, your comment is dead and you are probably hellbanned (no one can see your posts outside of a few who turn them on).

You have some really good comments here, so maybe re-register and post them again. You were likely banned for submitting/spamming your chriswinn.com posts.


I agree that Stripe has built a great product, and they have a great team. I too have had the absolute displeasure of working with a host of other gateways, and it's easy to separated Balanced & Stripe from the rest of the pack. They are both in another league when it comes to ease of use, integration and features. However, for a marketplace with any volume, the ability to change the soft descriptor for charges across different merchant accounts is a non-negotiable necessity. You can find this gem in Balanced Docs: appears_on_statement_as: optional string. Text that will appear on the buyer's statement. Characters that can be used are limited to...:(https://docs.balancedpayments.com/current/api?language=bash#...) Just try charging a few hundred credit cards with a generic descriptor and the wave of charge-backs will help you to understand the importance.


Yeah, getting the statement text right makes a big difference. FWIW, Payouts was mostly designed for user-facing services (Lyft, Exec, Homejoy et al) where they want their own name to appear on card statements. If you're using Connect, each seller would have their own Stripe account and could have different card statement text.


We use stripe for our app, http://follower.io, and it was sooo simple to get setup! I love how their docs even adapt to your account, showing you API calls with your keys already in it!


Stripe team will give a talk about it Saturday in SF, on Building APIs for Developers, with design best practices explanations http://sf.apidays.io


I love how simple Stripe's APIs are. This is a great overview of Payouts, thanks for posting.

<shameless plug>

I'm working on a guide to integrating Stripe with Rails and I'll be covering Payouts and Stripe Connect in a whole section about building marketplaces.

http://www.petekeen.com/mastering-modern-payments

</plug>


From my reading of Balanced documentation, its on_behalf_of parameter allows a fledgling app to lean on Balanced for accounting.

"in order to determine how much money you owe a specific merchant, you can easily query and all the outstanding debits tied to this merchant and subtract the payouts you've already done to the merchant."

This seems like a nice advantage of Balanced especially if you don't want to go the Stripe connect route.


I love Stripe, they're so easy and so fast and SO PAINLESS. I've had to deal with "legacy" solutions and I basically hate them all. Stripe saved me significant implimentation time, so they are currently the ones to beat IMHO.

Frankly they are what makes the easy user experience possible @ CryptoSeal (http://privacy.cryptoseal.com).


As someone who has previously used Balanced and played around with Stripe enough to get a feel for it, I feel like I need to chime in here.

Balanced initially reached out to me, and I initially somewhat dismissed them, because I didn't have the time to look in to their platform as I was busy building a marketplace product for which we thought we had already picked the payment provider for, PayPal.

However, few weeks later I decided to take the time to investigate Balanced's offering and I was quite simply blown away by what they had to offer at the time (since then their offering has significantly expanded). As a result, I decided to make some time to rewrite our payments to use their APIs, because they solved the one hard problem I had yet to solve, which is the payouts.

I distinctly remember that I had just spent the earlier part of that week going over the various alternatives to how we could handle payout, and none of them seemed optimal. While paypal certainly would've gotten the job done, it was far from ideal especially considering that our merchants would've had to sign up for a paypal account and the fact that they have a track record of mistreating individuals and businesses by freezing accounts and funds. The other alternatives I had considered would've been much more work to integrate with and would've probably eventually driven me up a wall.

This was the first thing that struck me as the truly valuable feature of their product.

When I actually began integrating with Balanced, my "developer relations" experience with Balanced has been quite the opposite. Heck, I had a phone call with one of the Balanced founders (Jareau) where he took the time to answer all of my questions and explain to me how everything worked. In addition, I was able to simply hop on to Balanced's IRC channel (#balanced on Freenode) and talk to their whole team right there and then in real time. When I had questions about any of the functionality, there would always be someone from Balanced's team available to answer my questions. I should also mention that even some people outside of Balanced (i.e. customers) are also helping out on that channel.

Yet again, I was impressed. I never had issues with getting the kind of support I needed from Balanced, they are very responsive and helpful in solving any problems I have encountered.

Not to knock on Stripe or anything, but I never quite felt like their product was suitable for the situation that Balanced is suitable, a marketplace that needs to do payouts (or nowadays I suppose anything that needs to payouts). I feel like Balanced really hits the sweet spot when it comes to payouts, and they continue to work hard on making sure that their product is the best that there is in that category, and I certainly think that is the case right now.

One thing that I think bears mentioning is the fact that Balanced is also very receptive to customer feedback. In my experience, they are constantly weighing out what's the next thing they should be building/doing to make their customer's lives easier, and so their process is very much driven by the feedback provided by their customers (check out their API docs github to see the process in action, https://github.com/balanced/balanced-api/issues)

Overall, I do think that Stripe and Balanced to have overlap in what they do for you (charging a credit card), but I also feel like both of them have their strengths in differing features. I do think that for marketplaces that need payouts, Balanced is vastly superior because of the feature set that they have built, but if you had to something like subscriptions, then Stripe would be the way to go.


There's plenty of good people at Balanced, but Stripe's Payout API is very capable and, in my experience, much more elegant to work with. To imply that Stripe is built just for charging cards is no longer true, as you can see in my review of the two APIs:

http://blog.chriswinn.com/working-with-stripe-payouts


That's nice, but https://www.theweddingfavor.com/ is down. At least replace your default nginx 5xx pages people!!


How do you deal with fraud in this type of site?

It seems like anytime you are offering a conduit between a credit card number and a bank account you are at risk of someone push a large number of fraudulent transactions through and hoping to cash out before the chargebacks start.

Payment providers clearly have this problem (ie. Stripe does itself), but as a small startup it seems like a pretty daunting risk. Why not use Stripe connect in this case and simply get the couple to sign up for their own Stripe account?


It's user-dependent. Stripe provides users with some protections (e.g. against card-testing), and then users will verify their platform's sellers in a way that makes sense for them. Lyft and Sidecar collect drivers' licenses from drivers, and only pays them out in proportion to the amount they drive. Homejoy trains cleaners, and each user rates the cleaner. And so on. Fraud is heterogenous by nature.


Thanks for responding. It certainly makes a lot of sense for a business model like Lyft or Sidecar where their is a significant relationship between the company facilitating the payment and the service providers receiving payment.

For the OPs case though there seems to be a huge amount of risk: a 'couple' sign up, then other 'friends' start sending them money.


This is pretty neat. I wonder what the economics of this system will look like though.

(100$ - Stripe fee to accept money) - Stripe fee to give money == ???


Right, so the important thing to keep in mind (and this is different from Balanced), is that you are making a standard Charge object. It's business as usual.

When you pay money out to users, it is deducted from your Stripe balance. In that sense, the initial charge, and the transfer later, are not explicitly connected to each other. It's up to you to persist some business logic on the application side.

In our case, we build in Stripe's fees (the standard 2.9% + $0.30) and make an assumption about our transfer fees (25 cents per transfer) to make sure we come out on top. The payer (when we create the Charge object) is paying this fee.

That way, when I gift money to a couple, they are receiving EXACTLY what I intended to send them. We don't want the couple feel in any way like there's a "gotcha" — someone sent you $25, but you can withdrawal only $22! We are, of course, transparent to the payer about the additional fees they're covering.

We let users withdrawal their full amount. This is in part to encourage fewer transfer fees, but it also simplifies things for our end-user.

It's been great to work with Stripe. I can't say enough about the quality of their staff and the love and care they put into their API. It's something we should all appreciate and replicate.

Chris


> Right, so the important thing to keep in mind (and this is different from Balanced), is that you are making a standard Charge object. It's business as usual.

From your example, Balanced will also let you factor in the cost of the processing and include it in your total e.g. 25 + 2.9% + 0.30 + 0.25. Then, you can specify the amount to pay out that is completely independent of the total amount processed.

How is that different?


@brackishlake your account appears shadow/banned and your comment shows up as dead to most users. I wouldn't know why, but that's how it seems to me.


the bank transfer fee is $0.25 USD. pretty standard for ACH

https://stripe.com/us/help/pricing#transfers


BrainTree is another option to consider: Their API seems to be as simple as Stripe's, and their pricing looks better (quicker payouts, volume pricing).


I talked with BrainTree's customer support yesterday. They currently have a "payouts"/"marketplace" in beta. He should they should officially release it in the next few months.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: