There are two methods available for adding a bank or credit union account to a Customer. You can either collect the Customer's bank account information and pass it to Dwolla via the Create a Customer Funding Source endpoint, or you can send the Customer through the the Instant Account Verification (IAV) flow which will add and verify a bank account within seconds.
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, either via Instant Account Verification (IAV) or micro-deposits. For more information on bank account verification, reference this funding source verification resource article.
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. Similarly, VANs that your VCRs create will also have a status of verified
by default.
POST https://api.dwolla.com/customers/{id}/funding-sources
_links
JSON object containing an on-demand-authorization
link relation. See example bash request and response below.checking
, savings
, general-ledger
or loan
.adding and verifying
a bank. Reference our Plaid Link developer guide to learn more about this integration.“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.// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var customerUrl =
"https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C";
var requestBody = {
routingNumber: "222222226",
accountNumber: "123456789",
bankAccountType: "checking",
name: "Jane Doe’s Checking",
};
dwolla
.post(`${customerUrl}/funding-sources`, requestBody)
.then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'
// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var customerUrl =
"https://api-sandbox.dwolla.com/customers/AB443D36-3757-44C1-A1B4-29727FB3111C";
var requestBody = {
_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’s Checking",
};
dwolla
.post(`${customerUrl}/funding-sources`, requestBody)
.then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/375c6781-2a17-476c-84f7-db7d2f6ffb31'
POST https://api.dwolla.com/customers/{id}/funding-sources
virtual
.checking
. VANs with a bankAccountType
of savings
are not currently available.// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node
var requestBody = {
name: "My First VAN",
type: "virtual",
bankAccountType: "checking",
};
dwolla
.post(`${customerUrl}/funding-sources`, requestBody)
.then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/funding-sources/04173e17-6398-4d36-a167-9d98c4b1f1c3'
Use sandbox environment to test API requests.
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.