Overview - Dwolla Developer Portal

Transfers

The Transfers resource in the Dwolla API enables you to programmatically move funds between accounts. Transfers represent the movement of money from a source (such as a bank or Dwolla balance/wallet) to a destination, and support a variety of use cases—including: pay-ins, pay-outs, facilitating payments between users and enabling transfers between a user’s own accounts (me-to-me). With the Transfers resource, you can initiate, track, and manage payments, handle cancellations, and view detailed transfer statuses and metadata. This resource is central to orchestrating payments, providing transparency and control over the flow of funds in your application.

Transfer Links

Link Description
self URL of the transfer.
source GET this link to retrieve the Customer that was the source of the transfer.
destination GET this link to retrieve the Customer that was the destination of the transfer.
source-funding-source GET this link to retrieve the funding source that was the source of the transfer.
destination-funding-source GET this link to retrieve the funding source that was the destination of the transfer.
cancel POST to this link to cancel the transfer.
fees GET this link to retrieve the facilitator fees associated with the transfer.

Transfer resource

Parameter Description
id Transfer unique identifier.
status Either processed, pending, cancelled, or failed.
amount An amount JSON object. See below.
created ISO-8601 timestamp.
metadata A metadata JSON object
clearing A clearing JSON object.
achDetails An achDetails JSON object. See below.
rtpDetails An rtpDetails JSON object. Included when the transfer was sent via RTP Network. See below.
fedNowDetails A fedNowDetails JSON object. Included when the transfer was sent via FedNow Service. See below.
correlationId A string value attached to a transfer resource which can be used for traceability between Dwolla and your application.
individualAchId A unique string value matching the value on bank line related to the transfer. Appears when the debit entry clears out of the bank. The individual identifier for that ACH entry.
processingChannel A processingChannel JSON object that contains a key-value pair with a string key and string value of destination and real-time-payments.

Source and destination types

Source types

Source Type URI Description
Funding source https://api.dwolla.com/funding-sources/{id} A bank or balance funding source.

Destination types

Destination Type URI Description
Funding source https://api.dwolla.com/funding-sources/{id} Destination of an Account or verified Customer’s own bank or balance funding source. OR A Customer’s bank funding source.

amount JSON object

Parameter Required Type Description
value yes string Amount of money. If the entered amount has more than two decimal places, Dwolla will automatically round it to the nearest even integer using Banker’s Rounding.
Maximum limit: Default transaction limits based on Customer type or custom transaction limits as defined in the services agreement with Dwolla.
Minimum limit: $0.01.
currency yes string Possible values: USD

Facilitator fee JSON object

The facilitator fee is a feature allowing for a flat rate amount to be removed from a payment as a fee, and sent to the creator of the Dwolla application. The fee does not affect the original payment amount, and exists as a separate Transfer resource with a unique transfer ID. Within a transfer request you can specify an optional fees request parameter, which is an array of fee objects that can represent many unique fee transfers. The fees array is supported on both ACH transfers and Instant Payments transfers.

Facilitator fee example:

"fees": [
  {
    "_links": {
      "charge-to": {
        "href": "https://api-sandbox.dwolla.com/customers/d795f696-2cac-4662-8f16-95f1db9bddd8"
      }
    },
    "amount": {
      "value": "4.00",
      "currency": "USD"
    }
  }
]

clearing JSON object

The clearing object is used in tandem with our expedited transfer feature. This object does not need to be included if not using expedited transfers. Source specifies the clearing time for the source funding source involved in the transfer, and can be used to downgrade the clearing time from the default of Next-day ACH or to upgrade it to Same-day ACH debit. Destination specifies the clearing time for the destination funding source involved in the transfer, and can be used to upgrade the clearing time from the default of Standard ACH to Same-day ACH.

Parameter Required Type Description
source no string Represents a clearing object for debits into the Dwolla network.
Possible values: standard, next-available
standard - Used to downgrade the clearing time of debits from the default of Next-day ACH (if enabled) to Standard ACH.
next-available - Used to upgrade the clearing time of debits to Same-day ACH.
destination no string Represents a clearing object for credits out of the Dwolla network to a bank funding source.
Possible values: next-available
next-available - Used to upgrade the clearing time of credits to Same-day ACH.

achDetails and addenda object

Note: This feature is only supported for business Customer records.

The addendum record is used to provide additional information to the payment recipient about the payment. This value will be passed in on a transfer request and can be exposed on a Customer’s bank statement. Addenda records provide a unique opportunity to supply your customers with more information about their transactions.

achDetails object

Parameter Required Type Description
source no object Represents information that is sent to a source/originating bank account along with a transfer. Include information within this JSON object for customizing details on ACH debit transfers. Can include an addenda JSON object.
destination no object Represents information that is sent to a destination/receiving bank account along with a transfer. Include information within this JSON object for customizing details on ACH credit transfers. Can include an addenda JSON object.

addenda object

Parameter Required Type Description
addenda no object An addenda object contains a values key where its value is an array containing a single string addenda value. Addenda record information is used for the purpose of transmitting transfer-related information from a business.
Addenda value must be less than or equal to 80 characters and can include spaces.
Acceptable characters are: a-Z, 0-9, and special characters - _ . ~ ! * ' ( ) ; : @ & = + $ , / ? % # [ ].
Transfers must be sent to/from a business entity’s bank to guarantee addenda delivery.

achDetails with addenda example:

"achDetails": {
  "source": {
    "addenda": {
      "values": ["ABC123_AddendaValue"]
    }
  },
  "destination": {
    "addenda": {
      "values": ["ZYX987_AddendaValue"]
    }
  }
}

rtpDetails and fedNowDetails objects

When retrieving a transfer from the API, the response will contain either an rtpDetails object or a fedNowDetails object depending on which payment network was used:

rtpDetails / fedNowDetails object

Parameter Required Type Description
destination no object Represents information that is sent to a destination/receiving bank account along with an Instant Payment credit transfer. Contains network-specific identifiers and optional remittance data.

destination object

Parameter Type Description
remittanceData string Contains a string value. Used for the purpose of transmitting Instant Payment transfer-related information to the recipient’s bank account.
Remittance data value must be less than or equal to 140 characters and can include spaces.
networkId string A unique identifier for the transfer within the payment network (RTP or FedNow). Appears when the credit entry clears into the destination bank account.
endToEndReferenceId string An end-to-end reference identifier for the transfer. Appears when the credit entry clears into the destination bank account.

rtpDetails example (RTP Network response):

"rtpDetails": {
  "destination": {
    "remittanceData": "ABC_123 Remittance Data",
    "networkId": "20210617021214273T1BG27487110796028",
    "endToEndReferenceId": "E2E-RTP-20210617-001"
  }
}

fedNowDetails example (FedNow Service response):

"fedNowDetails": {
  "destination": {
    "remittanceData": "ABC_123 Remittance Data",
    "networkId": "20240115123456789FEDNOW123456",
    "endToEndReferenceId": "E2E-FEDNOW-20240115-001"
  }
}

instantDetails object (request only)

The instantDetails object is the recommended way to provide remittance data when initiating an Instant Payment transfer. This object can be used in transfer creation requests regardless of whether the payment ultimately routes via RTP or FedNow.

instantDetails object

Parameter Required Type Description
destination no object Represents information that is sent to a destination/receiving bank account along with an Instant Payment credit transfer. Contains a key-value pair for remittanceData.

destination object

Parameter Required Type Description
remittanceData no string Contains a string value. Used for the purpose of transmitting Instant Payment transfer-related information to the recipient’s bank account.
Remittance data value must be less than or equal to 140 characters and can include spaces.

instantDetails example:

"instantDetails": {
  "destination": {
    "remittanceData": "ABC_123 Remittance Data"
  }
}