We used to use PayPal to collect registration money for our 30x500 product class. We put a lot of money through it over the years and didn’t have any major disasters.
But PayPal is both irritating and scary when you’re running a launch that you expect to bring in over $150,000. We couldn’t afford to have our account locked simply because our success looked suspicious. So we talked to Stripe, and when they assured us they wouldn’t take that kind of action without cause, we switched.
By default, Stripe does automatic weekly deposits into your bank account. For a while, we let Stripe do its thing, into Amy’s business account, and then she’d transfer my portion through a bank transfer. But when Stripe announced the ability to transfer to multiple bank accounts, we thought “Sweet!” This would save us a step, save a $10-20 wire transfer fee, and save Amy some bookkeeping mess.
There was just one problem. Stripe’s “Transfers” feature was API only. No button in their dashboard, no simple configurator.
It wasn’t really a problem, though, at least for us. Amy and I were both originally developers by trade.
Except… There was just one two problems. When we got to Stripe’s docs, we were confused. Not the you’d-rather-smash-your-face-against-a-brick-wall kind of feeling that PayPal’s documentation delivers, but simply…lost. Steps seemed to be missing. We weren’t sure what to do in what order. At the end of the day, we wanted to do something relatively simple:
- Add my (Alex’s) bank account information to Stripe
- Initiate a transfer to my bank account
The docs were all geared towards setting up a form, taking in bank account information, validating it with JavaScript, tokenizing, storing, etc. A full stack.
There was just one two three problems. We didn’t really want to have to write an app, no matter how simple, just to do a simple money transfer. And it was making Amy tired and grumpy to think of adapting all the docs code to rig a one-off, instead of a complete app.
After a few stumbles and a fair amount of cursing (Amy, natch), we jumped into the Stripe IRC chat room. To the credit of Stripe, the two attendees in the room who helped us were attentive, and within 20 mins or so, we were able to successfully initiate our first manual transfer from Stripe. Without writing any real* code.
We had to wire together four different API calls before the deed could be done. It wasn’t clear what had to happen in what order. So, I thought we’d share it with you!
Our Step by Step Guide to Manual Transfers with Stripe
Everything below can be run from your terminal with just curl
installed. That’s it.
Step 1 - Create Recipient
- Make sure to replace line 2 with your live secret key, which you can get in your Stripe account settings.
- If the recipient’s account is personal, put their full name on line 3, “individual” as the type on line 4, and their social security number as the tax id in line 5.
- If the recipient is a business, put their full business name on line 3, “corporation” as the type on line 4 as shown above, and their business Tax ID number on line 5.
When you run this on the command line, you’ll get a response that looks like this:
The important bit to hang onto is the id (the piece that starts with rp_
). You’ll need that in a couple of steps.
Step 2 - Create a Bank Account Token
This was the part that confused us the most in the docs, since it wasn’t clear that it was an extra step:
- In this step, again, use your secret key on line 2.
- Set your routing number and account number in lines 4 and 5 respectively.
When you run this on the command line, you’ll get a response that looks like this:
And a whole lot more. The piece you want to hold onto, again, is the ID (the piece that starts with btok_
). You’ll need that in the next step.
Step 3 - Join the token to the recipient
- In line 1, use the recipient ID from Step 1 above at the end of the URL (replacing the part of the URL that starts with
rp_
) - In line 2, use your own secret key
- In line 3, use the Bank Token from Step 2 for the bank account field.
When you run this on the command line, you’ll get a response that looks like this:
And a whole lot more. There’s nothing else you have to save this time.
Step 4 - Initiate a manual transfer
With all of these pieces in place, you can finally initiate a transfer.
- In line 2, use your own secret key.
- In line 3, put in the amount in pennies. More simply said: put the amount you wish to transfer into full decimal format ($100.00) and then remove everything but the numbers (
10000
). - In the recipient field, use the recipient ID that you just joined the bank account token to.
And… done! Good news: Once you’ve set this up, you can create as many transfers as you like to this bank account with just step 4.
Why didn’t we just build an app for this?
Good question. When you take 30x500, the very first thing you learn is that there are more ways to fail than to succeed. Building a business is like trying to escape from a hungry bear. If you don’t drop all the unnecessary baggage you’re carrying, the bear will definitely catch up to you. And eat you. And then you die, metaphorically speaking.
Software is often unnecessary baggage…especially custom software.
Amy recently described custom software as trying to escape that hungry bear…by riding a pogo stick. You might be able to go faster…for a while. But over the long run, you’re more likely to trip, fall, and break an ankle. Then, gulp! - you’re bear food.
Amy says: It’s smarter and safer to “Flintstone” it — to do something manually, or semi-manually, until the point where you spend so much time doing it that it actually will be a savings to write custom code.
So, we hugely limit our use of custom code. We spend all our time working on the class itself and our students. We use Wufoo to run our application process, and to collect payments (via Stripe integration). We could have built a custom app. Certainly it could have been more streamlined. But how long would it take? How much would it distract us?
So when we realized we could simply use curl to transfer our money, we skipped the Ruby and the JavaScript entirely.
This tiny win is one that literally puts money into our bank account.
How do you make your first sale?
Follow our FREE roadmap from $0 to $10k and start your product business one small, achievable win at a time.
When you subscribe, you’ll also get biz advice, design rants, and stories from the trenches once a week (or so). We respect your email privacy.