

Working with the Stripe Payouts API - drusenko
http://blog.chriswinn.com/working-with-stripe-payouts

======
joonas
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](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.

~~~
mrcwinn
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](http://blog.chriswinn.com/working-with-stripe-payouts)

------
tomschlick
> 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.

~~~
icelancer
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.

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

We'll fix this.

~~~
Kickmr
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?

~~~
pc
Yup. See [https://stripe.com/blog/send-payouts-with-
stripe](https://stripe.com/blog/send-payouts-with-stripe) for more details.

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

------
zrail
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](http://www.petekeen.com/mastering-modern-payments)

</plug>

------
kevinwmerritt
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.

------
bifrost
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](http://privacy.cryptoseal.com)).

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

------
aquark
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?

~~~
collision
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.

~~~
aquark
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.

------
hayksaakian
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 == ???

~~~
brackishlake
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

~~~
dclausen
> 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?

------
ejain
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).

~~~
forman00
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.

