Use the Dwolla API for faster payments to enable your application to take advantage of Same Day ACH credit or debit transfers on a per transfer request basis. A clearing
request parameter is supplied in the request to the Dwolla API which tells Dwolla to expedite clearing for the source or the destination account involved in the transaction. Same Day ACH is a simple and powerful feature for platforms looking to differentiate themselves, streamline cash flows, and improve their end user experiences.
There are two types of Same Day ACH transfers:
A few key differences between Standard ACH and Same Day ACH are:
$1 million
is enforced by NACHA.The table below includes transfer cutoff times for Same Day ACH along with the timing of when the funds are expected to be available at the destination account. For example, your application can initiate a debit or credit transfer with Same Day clearing prior to 3 PM Central Time and funds will be available in the destination account by the end of the same business day. For more information on the timing of transactions, reference our resource article on transaction timelines.
Transfer cutoff time | Availability of funds |
---|---|
9:00 AM | 11:30 AM |
1:00 PM | 5:00 PM |
3:00 PM | 5:00 PM |
All times are in Central Time.
Before you can initiate a debit or credit transfer using same-day clearing, you must first have a Customer created and a funding source attached for the user. If it’s a debit transfer, then the funding source must be verified
before you can pull funds. For a credit transfer, the funding source can be unverified
or verified
.
Once your customer has connected a bank account and/or verified it, you'll then want to store the funding source id (e.g. https://api-sandbox.dwolla.com/funding-sources/ecf993e2-fa22-4cea-8022-c7861200288f
) which will be used when specifying the bank account as the either the source or destination href in the request to the Transfers API.
In order to initiate a transfer with Same Day ACH processing, an optional clearing
JSON object must be included in the transfer request. The clearing object contains source
and destination
keys with respective values of standard
or next-available
and next-available
.
Specifying the destination clearing as next-available
will allow requests to default to the earliest available processing window based on the time submitted. In addition, transfers greater than $1 million
will default to a processing window permitting larger amounts.
The following example assumes the sending party has a verified funding source. We're receiving a pay-in from a Customer’s funding source to our Dwolla account balance, which represents the Dwolla Network.
var requestBody = {
_links: {
source: {
href: "https://api-sandbox.dwolla.com/funding-sources/b268f6b9-db3b-4ecc-83a2-8823a53ec8b7",
},
destination: {
href: "https://api-sandbox.dwolla.com/funding-sources/ecf993e2-fa22-4cea-8022-c7861200288f",
},
},
amount: {
currency: "USD",
value: "10000.00",
},
clearing: {
source: "next-available",
},
};
dwolla
.post("transfers", requestBody)
.then((res) => res.headers.get("location")); // => 'https://api.dwolla.com/transfers/636de847-7d02-e711-80ee-0aa34a9b2388'
The following example assumes the sending party has a verified account and a verified funding source. We're sending a payout from our Dwolla account balance to our Customer’s funding source which represents the receiving bank account.
var requestBody = {
_links: {
source: {
href: "https://api-sandbox.dwolla.com/funding-sources/b268f6b9-db3b-4ecc-83a2-8823a53ec8b7",
},
destination: {
href: "https://api-sandbox.dwolla.com/funding-sources/ecf993e2-fa22-4cea-8022-c7861200288f",
},
},
amount: {
currency: "USD",
value: "10000.00",
},
clearing: {
destination: "next-available",
},
};
dwolla
.post("transfers", requestBody)
.then((res) => res.headers.get("location")); // => 'https://api.dwolla.com/transfers/636de847-7d02-e711-80ee-0aa34a9b2388'
When retrieving the transfer from the API, the response should contain the clearing object with a source
or destination
key and a value of either same-day
or next-day
depending on if the transfer was initiated prior to the last same day processing window and the transfer amount is less than $1 million
(as mentioned above).
var transferUrl =
"https://api-sandbox.dwolla.com/transfers/636de847-7d02-e711-80ee-0aa34a9b2388";
dwolla.get(transferUrl).then((res) => res.body.status); // => 'processed'
var transferUrl =
"https://api-sandbox.dwolla.com/transfers/636de847-7d02-e711-80ee-0aa34a9b2388";
dwolla.get(transferUrl).then((res) => res.body.status); // => 'processed'
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.