This section covers how to initiate a transfer from either a Dwolla Account or Dwolla API Customer resource.
To prevent an operation from being performed more than once, Dwolla supports passing in an Idempotency-Key
header with a unique key as the value. Multiple POSTs
with the same idempotency key won't result in multiple resources being created.
For example, if a request to initiate a transfer fails due to a network connection issue, you can reattempt the request with the same idempotency key to ensure that only a single transfer is created.
Refer to our idempotency key section to learn more.
POST https://api.dwolla.com/transfers
source
and destination
of a transfer. Reference the Source and Destination object to learn more about possible values for source
and destination
.source
and destination
keys to slow down or expedite a transfer. Reference the clearing JSON object to learn more.a-Z
, 0-9
, -
, .
, and _
. destination
and real-time-payments
.source
funding source must be verified in order to send funds. Make sure your source
funding source is verified
.source
or destination
Customer is either deactivated
or suspended
and not eligible for transfers.facilitate
/receive
/send
) to be enabled.The reference example below shows what a request looks like when sending a transfer. Please note this example is using same-day clearing to a Dwolla API Customer's bank account, part of Dwolla's API.
var requestBody = {
_links: {
source: {
href:
"https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4",
},
destination: {
href:
"https://api-sandbox.dwolla.com/funding-sources/AB443D36-3757-44C1-A1B4-29727FB3111C",
},
},
amount: {
currency: "USD",
value: "1.00",
},
metadata: {
paymentId: "12345678",
note: "payment for completed work Dec. 1",
},
clearing: {
destination: "next-available",
},
achDetails: {
source: {
addenda: {
values: ["ABC123_AddendaValue"],
},
},
destination: {
addenda: {
values: ["ZYX987_AddendaValue"],
},
},
},
correlationId: "8a2cdc8d-629d-4a24-98ac-40b735229fe2",
};
dwolla
.post("transfers", requestBody)
.then((res) => res.headers.get("location")); // => 'https://api-sandbox.dwolla.com/transfers/74c9129b-d14a-e511-80da-0aa34a9b2388'
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.