Docs
Get API Keys

Create a funding source for a customer #

There are multiple methods available for adding a bank or credit union account to a Customer. This section outlines how to create a funding-source via the API.

Before a Dwolla account or Dwolla API Customer is eligible to transfer money from their bank or credit union account they need to verify ownership of the account. For more information on bank account verification, reference this funding source verification resource article.

Virtual Account Numbers

Just as your Verified Customers can add bank accounts as Funding Sources, they also have the ability to add Virtual Account Numbers, or VANs as Funding Sources. VANs will have a status of verified by default.

Bank #

HTTP request - bank funding source #

POST https://api.dwolla.com/customers/{id}/funding-sources

Request parameters - bank funding source #

ParameterRequiredTypeDescription
_linksconditionalobjectA _links JSON object containing an on-demand-authorization and/or exchange link relation. See example bash request and response below.
routingNumberyesstringA bank routing number that identifies a bank or credit union in the U.S. Note: Validation of the routing number includes: a checksum, the first two digits of the routing number must fall within the range "01" through "12", or "21" through "32", and the string value must consist of nine digits.
accountNumberyesstringThe bank account number. Note: The account number is validated to check if it is a numeric string of 4-17 digits.
bankAccountTypeyesstringType of bank account: checking, savings, general-ledger or loan.
nameyesstringArbitrary nickname for the funding source. Must be 50 characters or less.
plaidTokennostringA processor token obtained from Plaid for adding and verifying a bank. Reference our Plaid Link developer guide to learn more about this integration.
channelsnoarrayAn array containing a list of processing channels. ACH is the default processing channel for bank transfers. Acceptable value for channels is: "wire". e.g. “channels”: [ “wire” ]. A funding source (Bank Account) added using the wire channel only supports a funds transfer going to the bank account from a balance. As a result, wire as a destination funding source can only be added where the Customer account type is a Verified Customer. Note: channels is a premium feature that must be enabled on your account and is only available to select Dwolla customers.

HTTP status and error codes - bank funding source #

HTTP StatusCodeDescription
400InactiveExchangeThe Exchange was removed or disabled.
400InvalidExchangeTokenThe exchange token is not valid to perform this operation. Either the token is expired, invalid, or the products permissions to the token are invalid or expired.
400ValidationErrorCan be: Duplicate funding source or validation error. Authorization already associated to a funding source.
403ForbiddenNot authorized to create funding source.
404NotFoundCustomer ID not found. Check Customer ID.

Request and response - bank funding source #

Raw
POST https://api-sandbox.dwolla.com/customers/99bfb139-eadd-4cdf-b346-7504f0c16c60/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
{
  "routingNumber": "222222226",
  "accountNumber": "123456789",
  "bankAccountType": "checking",
  "name": "Jane Doe’s Checking"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C

Request and response - using on-demand authorization #

For an example of using on-demand authorization, see the example for adding a customer funding source using Plaid Link.

Raw
POST https://api-sandbox.dwolla.com/customers/99bfb139-eadd-4cdf-b346-7504f0c16c60/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
{
  "_links": {
    "on-demand-authorization": {
      "href": "https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388"
    }
  },
  "routingNumber": "222222226",
  "accountNumber": "123456789",
  "bankAccountType": "checking",
  "name": "Jane Doe - Checking"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C

Request and response - using an exchange resource #

Raw
POST https://api-sandbox.dwolla.com/customers/99bfb139-eadd-4cdf-b346-7504f0c16c60/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
{
  "_links": {
    "exchange": {
      "href": "https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65"
    }
  },
  "bankAccountType": "checking",
  "name": "Jane Doe - Checking"
}

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C

Virtual Account Number #

HTTP request - VAN funding source #

POST https://api.dwolla.com/customers/{id}/funding-sources

Request parameters - VAN funding source #

ParameterRequiredTypeDescription
nameyesstringArbitrary nickname for the funding source.
typeyesstringDenotes that this is a virtual funding source being created (VAN). Value must be virtual.
bankAccountTypeyesstringValue must be checking. VANs with a bankAccountType of savings are not currently available.

HTTP status and error codes - VAN funding source #

HTTP StatusMessage
403Virtual account numbers are not enabled for this account.

Request and response - VAN funding source #

Raw
POST https://api.dwolla.com/customers/fd7c402f-cd33-4333-9be4-54414e39f844/funding-sources
Content-Type: application/vnd.dwolla.v1.hal+json
Accept: application/vnd.dwolla.v1.hal+json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
{
 "name": "My First VAN",
 "type": "virtual",
 "bankAccountType": "checking"
}

...

HTTP/1.1 201 Created
Location: https://api-sandbox.dwolla.com/funding-sources/04173e17-6398-4d36-a167-9d98c4b1f1c3
Test in the Sandbox for free today.
Use sandbox environment to test API requests.
Get API Keys
2024 All Rights Reserved
Financial institutions play an important role in our network.

All funds transfers made using the Dwolla Platform are performed by a financial institution partner, and any funds held in a Dwolla Balance are held by a financial institution partner. Learn more about our financial institution partners.