Ask AI or search...
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.

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 #

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
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.