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:

  1. 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.
  2. 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.
  3. 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.
  4. 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
email 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:

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.