Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: One curl command issues next-day ACH deposit
91 points by mahmoudimus on Jan 8, 2013 | hide | past | web | favorite | 60 comments
At Balanced Payments YC W2011, we've been working on simplifying ACH deposits and we've managed to boil it down to one curl command.

Tell us what you think! Ultimately, our goal with this is to provide ACH deposits for those who are already using existing processing solutions, but want to pay their users or vendors via ACH instead.

US only - we're cooking up something for international.

Without further ado:

    curl https://api.balancedpayments.com/v1/credits \
        -d amount=10000 \
        -d description="Math lesson" \
        -d bank_account[name]="Johann Bernoulli" \
        -d bank_account[account_number]=9900000001 \
        -d bank_account[routing_number]=121000358 \
        -d bank_account[type]=checking \
        -u 7b7a51ccb10c11e19c0a026ba7e239a9:
Try it out!

More about Balanced Payments here: https://balancedpayments.com

Why have you not been acquired by Stripe yet? This seems like a bug.

From https://balancedpayments.com "no redirects. no iframes. no external accounts." That's the unqiue, killer feature right there. If some M&A were to happen between those companies, the existence of this feature is imperative. Specifically, if I have a marketplace I don't want my customers to do any more than a) type their paypal email or b) type their bank account details.

Edit: if you happen to seriously be confused by what I've written, please visit the url and ctrl/cmd f for the quote. Then, take a look at what is below. That is,

  curl https://api.balancedpayments.com/v1/credits \
    -d amount=10000 \
    -d description="Math lesson" \
    -d bank_account[name]="Johann Bernoulli" \
    -d bank_account[account_number]=9900000001 \
    -d bank_account[routing_number]=121000358 \
    -d bank_account[type]=checking \
    -u 7b7a51ccb10c11e19c0a026ba7e239a9:
You can't do that in Stripe. If you want accomplish the same effect using Stripe, however, your customers will need some kind of account which is external to your site and/or a redirect. Does that help?

I'm confused... Stripe doesn't require redirects, iframes or external accounts.

As I understand Balanced Payments, it's for the other side of the transaction: Stripe is about people giving you money, but Balanced Payments is for sending others money (where you do a straight ACH deposit). (As opposed to paying them via Stripe, or PayPal, etc)

That's exactly right, but we do offer credit card processing as well. Our processing and payouts functionalities can be coupled or used separately. Check out the docs if you've got more questions: https://www.balancedpayments.com/docs/api

I believe you can send money to someone using Stripe Connect, but that would require them setting up a separate Stripe account.

You guys are fantastic. You documentation is clear. The fact that you all live on the IRC channels makes obtaining information and help super simple.

thanks wheaties. you can see a live stream of our IRC channel on our help and support page too: https://www.balancedpayments.com/help

This is sort of frightening. The obscurity of ACH was the only real security it had; now if I write a check, anyone who sees it can trivially withdraw whatever they want from my account using the above API, no? What sort of fraud protection is there?

> if I write a check, anyone who sees it can trivially withdraw whatever they want from my account using the above API, no

You always were able to do that - even before this post - using traditional online banking. I won't go into the details here, but trust me, it's frighteningly easy[1].

> What sort of fraud protection is there?

This isn't up to Balanced to solve. It's a banking system problem at its core.

[1] The problem is actually much worse, because it allows anyone to compromise your entire banking account (not just your checking account) trivially, but I'll leave that as an exercise to the reader!

If you're in SF, I'll buy you a coffee and we can talk about how terrible the ACH network is. I have very strong opinions on this. We're just trying to jump on the grenade and make it bearable for everyone else :)

Unfortunately I'm in NYC, though I'd love to hear your thoughts on ACH! Let me know if you happen to make your way out here at some point - my email is nqvgln@nqvglnzhxrewrr.arg (ROT13).

I'll buy you coffee AND hear what you have to say.


just read your CV. WF, Singly, Cars.com, you must know the pain of payments, marketplaces, and APIs very well.

Email me at my HN handle @balancedpayments.com

This end point only allows you to send money to a bank account.

Only to a bank account? haha and the money never comes from any bank account, huh? Again: what fraud prevention is there?

Presumably, they have some sort of funding system, where they can control/screen the intake and perform verification.

MichaelGG, you're correct. We verify the bank accounts of the companies that register w/ Balanced to use our ACH API.

Ah, I misunderstood. That makes sense.

Nice! Greatly resembles Stripe, which imo is a good thing. Look forward to using this next time I need ACH on a project.

Someone should integrate this with Splitwise and solve bill/rent/etc. splitting once and for all.

I tweeted at them. let's see if they reply :) https://twitter.com/balanced/status/288748033661870080

This is great! ACH is such a pain to deal with. This solves a real problem I have right now. I'm using Stripe for payments, but I want an easy way for me to send money via ACH. This looks like the ticket.

Looks great, but the terminology is slightly unclear. Is "Balanced Payouts" your product name or company name or both? But your URL is balancedpayments.com? Might want to sync the two up.

Balanced Payouts is the name of the product. Balanced is the name of the company. balancedpayments.com is better for SEO than balanced.com. We'll add some more info the site to better call out the different products we offer. Thanks for the feedback!

You should still be spending the $10 to register the other domain.

agree, but it's a bit more than $10

How so? dynadot.com - $9.99.

Edit: oh, you were talking about balanced.com. Yeah, I meant balancedpayouts.com. :)

Ah, I'll look into that.

Hi thematt,

Actually, Balanced Payouts is the product that we're showing HN here today.

Balanced Payments is the umbrella payment company that arches over Balanced Processing, the credit card processing/ach debit arm, and Balanced Payouts, the ach credit arm.

I'm happy to take suggestions on how to clarify that, if that wasn't clear from the homepage.

Love the ach feature except that we need to receive payments in addition to making them.

Our payment sizes are in the 5-7 figure range and checks take too long. Will you have the ability to receive via verified ACH in the future?

We're testing that functionality out right now. And trust me, we're well aware that this is a highly demanded feature. We've discussed it at length with our community on github: https://github.com/balanced/balanced-api/issues/2

Thanks for the link; looking forward to using the platform :)

/me registers balancedpayouts.com

(just kidding, but this is why you probably should put all your products under one domain)

At NextProof, we use BrainTree and ACH funds to our photographers. This looks cool but I'm trying to understand how it's different/better than what we do now.

Last I heard, Braintree discontinued their ACH API. Are you still using it?


Cool looking product! I'll note that the GoDaddy cert on the homepage is a bit cheesy, although I don't know if your target audience cares or notices.

If I embed this request onto an HTML form, what would be the name attribute on input element? Is it going to be like name="bank_account[type]" ?

Hi there! Thanks for inquiring!

Here's a simple jsfiddle: http://jsfiddle.net/KRFtB/

Obviously - you wouldn't encode your secret key, etc in production, but this is an example.

If you want to tokenize it properly, try:


We don't support CORS yet, but we're planning to do that shortly :)

Our company runs like an open source project, so anything you might have thoughts on, we discuss publicly here:


We are also on IRC providing real-time support: irc.freenode.net #balanced


What exactly is an ACH deposit btw? (sorry, German reader here)

Can one only send money with an ACH deposit or also pull money from an account?

hey seb, ACH = automated clearing house[1]. It's the US network for moving funds between two bank accounts. ACH is a push & pull system, but our API only supports push.

[1] http://en.wikipedia.org/wiki/Automated_Clearing_House

Great to see -- this has been a giant pain in the past! Happy to see you guys taking this on (so I don't ever have to :)

Thanks! We think of pain tolerance as a core competency. ;)

ACH is way too slow. It is really an artifact of a slow moving banking industry. Dwolla has made some limited strides with their 'Instant' product but asking new customers to go through the signup process is also cumbersome.

Is Balanced Payments working on something that can put funds into someones bank account within the hour?


ACH, wire transfers, etc. - it is amazing how much of our "modern" banking practice is still defined by the constraints of (literally) horses and buggies.

3pm cutoff times, overnight settlement, multi-day wire settlement ... what a clown show.

FedWires are almost instant... depending on your bank, receiving bank, etc.

For most B2B FedWires, it's pretty much instant. Yay Treasury.

The cutoffs do suck, however.

The US needs to catch up to the rest of the world with regards to banking. And also kill off checks.

What's the cost for FedWire?

The nominal cost (cost to the bank) is here:


It costs less than $1 to send a FedWire. The FedWire can be up to $1BN. :)

The FedWire system is actually very similar to transfer systems in other countries. I'm not sure why ACH is still in use apart from as a way to digitize checks.

That said, most banks charge, at minimum, $12 per wire in/out for personal accounts. Most business/corporate accounts get wires free since that's how people pay each other (something like $1TN in wires is processed every day).

Heh, Morgan Stanley ran into this when the were trying to stay afloat after the 2008 crash:

> At this point, under any other circumstances, the $9 billion would be wired electronically from one bank to the other. But there were a few problems with wiring the money. First off, it was a holiday weekend and banks would be closed in both countries until Tuesday. Secondly, wiring any amount of money usually takes 2-3 days and Morgan Stanley may not have survived another 24 hours! Finally, Morgan Stanley was itching to make a formal announcement of the merger as soon as possible in order to stop their stock price from plummeting any further. ... A few hours later, the Mitsubishi bankers returned to Morgan Stanley’s headquarters with what will likely go down in history as the biggest check ever written.



don't get me started!! I rage so hard at the US banking system. I laugh/cry every time I have to tell a customer we can't make deposits on weekends or holidays.

We're always trying to speed up the flow of funds, which is why we offer next-day ACH transfers rather than 3-5 days. Also, our original product used to do instant account-to-account transfers, but that product couldn't scale. We may dust off that tech though if we can find a way to make it work at scale.

So if I understand the product correctly, I have to give you the money first, wait 3-5 days, and then I can pay people?

That's why there is no way to specify the source account?

Yeah, unfortunately we can't speed up the process for bringing money into the system like we can for sending money out (i.e. next-day deposits). You'd have to fund your Balanced account first before sending payouts.

As an alternative to the ACH approach, Bitcoin offers this

bitcoind sendtoaddress <bitcoin address> <amount>

Works anywhere in the world, not just USA.

Does this work with Savings accounts?

Yep. You'll notice a 'type' field on the bank account resource. You can set it to 'checking' or 'savings' https://www.balancedpayments.com/docs/api?language=bash#crea...

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