Send Money - Dwolla Developer Portal
Overview
This guide is designed to get you up and running quickly with digital disbursements by creating a one-time transfer to an end user via the Dwolla API. In this guide we’ll cover the basics of integrating the most lightweight payment flow, sending funds (also referred to as “payouts”), by outlining and walking through the necessary steps to create a bank transfer. For simplicity, we’ll represent a one-to-one transfer between two users, where the source user is identified as the Master Dwolla account and the destination user is an individual or business that has been on-boarded via the Dwolla API. If your use case involves sending several digital disbursements in a single batch, it’s recommended that you leverage our Mass Payment API, which allows you to send up to 5,000 payments with a single API request.
Key Concepts
In this quickstart guide, you’ll learn the key concepts involved with sending money to a recipient’s bank account via digital disbursements:
- Choose and create the Customer type for your recipient: Select the appropriate Customer type (receive-only, verified, etc.) and create a new Customer record through the Dwolla API to represent your recipient.
- Attach a funding source: Add a bank account as a funding source to your recipient’s Customer record, which will serve as the destination for the funds transfer.
- Retrieve available funding sources: Get a list of verified funding sources from both your Dwolla account and the recipient’s account to use as source and destination for the transfer.
- Send funds: Initiate a transfer from your verified funding source to the recipient’s bank account using the Dwolla API.
Before You Begin
We encourage you to create a sandbox account if you haven’t already. This will allow you to follow along with the steps outlined in this guide. Check out our Sandbox guide to learn more. After creating a sandbox account, you’ll obtain your API Key and Secret, which are used to obtain an OAuth access token. An access token is required in order to authenticate against the Dwolla API. If you haven’t already, run through the Quickstart to get your first token, or see the Authentication guide for OAuth details. Lastly, in this sandbox walkthrough, we recommend having an active webhook subscription. This will help notify your application of various events that occur within Dwolla. Check out our guide to learn more.
Let’s get started!
Step 1 - Create a recipient
Before your end user can receive funds to their connected bank account, they must be created as a Customer via the Dwolla API. The ability to send funds to end users is very flexible in that all Customer types can be used to leverage this funds flow. To learn more about the different types of Customers and the capabilities of each, check out our developer resource article.
Create the Customer
While you can use any Customer type for this funds flow, we will be creating a receive-only user in this guide, as it offers a lightweight onboarding experience for users. Just as the name implies, receive-only users are only eligible to receive funds into their attached bank account.
Providing the IP address of the end user accessing your application as the ipAddress parameter enhances fraud detection and tracking.
Request Parameters - Receive-only User
| Parameter | Required? | Type | Description |
|---|---|---|---|
| firstName | yes | string | Customer’s first name |
| lastName | yes | string | Customer’s last name |
| yes | string | Customer’s email address | |
| type | yes | string | Value of receive-only |
| businessName | no | string | Customer’s registered business name (optional if not a business entity) |
| ipAddress | no | string | Customer’s IP address |
Request Body Example
POST https://api-sandbox.dwolla.com/customers
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer ACCESS_TOKEN
{
"firstName": "Jane",
"lastName": "Merchant",
"email": "jmerchant@nomail.net",
"type": "receive-only",
"ipAddress": "99.99.99.99"
}
Step 2 - Adding a Funding Source
After creating our receive-only User, the next step is to attach a bank funding source. This will be the funding source where they will receive funds.
Bank Addition and Verification methods
Within Dwolla, the sending party must always verify their bank account in order to be eligible to create a transfer. Although it’s recommended, the party that is receiving the funds does not need to undergo bank verification. There are three ways of adding a bank to a Customer with the Dwolla API:
| Bank Addition Method | Will the bank be verified? |
Required Information |
|---|---|---|
| API - Account & Routing Number | Optional - With Microdeposits | Bank Account and Routing Number |
| Dwolla + Open Banking | Yes | Online banking credentials |
| Drop-in components | Optional - With Microdeposits | Bank Account and Routing Number |
| Third Party - Plaid ( Example) | Yes | Online Bank Credentials |
Adding a Bank to the Receive-only User
In this step, we will be adding a bank account to our receive-only user by collecting their bank details within a form on our application. After initial validation of the form fields, the user’s bank details will be submitted to our back-end server where the API request is made to Dwolla to add a bank account.
Request Parameters - Create a Funding Source
| Parameter | Required? | Type | Description |
|---|---|---|---|
| routingNumber | yes | string | The bank routing number |
| accountNumber | yes | string | The bank account number |
| bankAccountType | yes | string | Type of bank account: checking or savings |
| name | yes | string | Arbitrary nickname for the funding source |
POST https://api.dwolla.com/customers/CUSTOMER_ID/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer ACCESS_TOKEN
{
"routingNumber": "222222226",
"accountNumber": "123456789",
"bankAccountType": "checking",
"name": "Jane Merchant - Checking 6789"
}
Step 3 - Retrieve funding sources
Now that you’ve created a Customer and associated its funding source, you are close to being able to initiate your first transfer. The transfer requires the following information:
- The funding source to pull the funds from (a bank attached to your Dwolla Master Account)
- The funding source to push the funds to (a bank attached to your created Customer)
Dwolla uses URLs to represent relations between resources. Therefore, you’ll need to provide the full URL of the funding source when creating the transfer.