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.
POST https://api.dwolla.com/customers/{id}/funding-sources
Parameter | Required | Type | Description |
---|---|---|---|
_links | conditional | object | A _links JSON object containing an on-demand-authorization and/or exchange link relation. See example bash request and response below. |
routingNumber | yes | string | A 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. |
accountNumber | yes | string | The bank account number. Note: The account number is validated to check if it is a numeric string of 4-17 digits. |
bankAccountType | yes | string | Type of bank account: checking , savings , general-ledger or loan . |
name | yes | string | Arbitrary nickname for the funding source. Must be 50 characters or less. |
plaidToken | no | string | A processor token obtained from Plaid for adding and verifying a bank. Reference our Plaid Link developer guide to learn more about this integration. |
channels | no | array | An 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 | Code | Description |
---|---|---|
400 | InactiveExchange | The Exchange was removed or disabled. |
400 | InvalidExchangeToken | The 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. |
400 | ValidationError | Can be: Duplicate funding source or validation error. Authorization already associated to a funding source. |
403 | Forbidden | Not authorized to create funding source. |
404 | NotFound | Customer ID not found. Check Customer ID. |
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
For an example of using on-demand authorization, see the example for adding a customer funding source using Plaid Link.
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
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
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.