> ## Documentation Index
> Fetch the complete documentation index at: https://developers.dwolla.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transfer Failures

> Familiarize yourself with the unhappy path of transfers and build resilient practices to mitigate ACH returns. Learn about returns, why they happen and recommended actions your application can take based on the return code.

## Overview

There are several reasons bank transfers can fail, a few of which are outlined below. When a transfer fails it is usually a result of an ACH failure which is assigned an ACH return code after being rejected from the financial institution. A few common failure examples include:

* **Insufficient Funds (R01):** Pending transfers can fail due to insufficient funds from the source bank account.
* **No Account/Unable to Locate Account (R03):** The recipient of a transfer has closed their bank account or has incorrectly entered their bank account/routing number when attaching their funding source.
* **Customer Advises Not Authorized (R10):** The owner of a bank account has told their bank that this transfer was unauthorized.

### Retrieving the transfer

You can check the status of a transfer at any time by [retrieving the transfer via the API](/docs/api-reference/transfers/retrieve-a-transfer). When a bank transfer is unable to be completed, its status will be updated to `failed`. The response from the API when retrieving the transfer should contain a `"failure"` link that your application will follow to [retrieve the transfer failure reason](/docs/api-reference/transfers/retrieve-a-transfer-failure-reason) in the next step.

##### Example failure link

```json theme={"dark"}
"failure": {
    "href": "https://api-sandbox.dwolla.com/transfers/a1e58cd8-11ec-e811-8111-bec1f96924ed/failure",
    "type": "application/vnd.dwolla.v1.hal+json",
    "resource-type": "failure"
}
```

### Retrieving the reason for a failed bank transfer

If your application is subscribed to <Tooltip tip="A webhook is a notification sent from Dwolla to your application when certain events occur.">webhooks</Tooltip>, you'll receive either the `transfer_failed` event if the transfer belongs to a Dwolla account or the `customer_transfer_failed`/`customer_bank_transfer_failed`(*Verified Customer only*) event if the transfer belongs to an API Customer. The event contains a links to the associated account as well as the transfer resource. When retrieving the failed bank transfer reason, the response will contain information on the ACH return code and description, as well as `_links` to the Funding Source and Customer that triggered the bank transfer failure.

##### Request and response

<CodeGroup>
  ```bash HTTP theme={"dark"}
  GET https://api-sandbox.dwolla.com/transfers/8997ebed-69be-e611-80ea-0aa34a9b2388/failure
  Accept: application/vnd.dwolla.v1.hal+json
  Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

  {
      "_links": {
          "self": {
              "href": "https://api.dwolla.com/transfers/8997ebed-69be-e611-80ea-0aa34a9b2388/failure",
              "type": "application/vnd.dwolla.v1.hal+json",
              "resource-type": "failure"
          },
          "failed-funding-source": {
              "href": "https://api.dwolla.com/funding-sources/285ea6f4-c45d-4e15-ad33-21f51461f437",
              "type": "application/vnd.dwolla.v1.hal+json",
              "resource-type": "funding-source"
          },
          "customer": {
              "href": "https://api.dwolla.com/customers/be2d2322-fdee-4361-8722-4289f5601604",
              "type": "application/vnd.dwolla.v1.hal+json",
              "resource-type": "customer"
          }
      },
      "code": "R03",
      "description": "No Account/Unable to Locate Account",
      "explanation": "The account number does not correspond to the individual identified in the entry or a valid account."
  }
  ```

  ```ruby retrieve_transfer_failure.rb theme={"dark"}
  transfer_url = 'https://api-sandbox.dwolla.com/transfers/8997ebed-69be-e611-80ea-0aa34a9b2388'

  # Using DwollaV2 - https://github.com/Dwolla/dwolla-v2-ruby
  failure = app_token.get "#{transfer_url}/failure"
  failure.code # => "R01"
  ```

  ```php retrieve_transfer_failure.php theme={"dark"}
  <?php
  $transfer = '8997ebed-69be-e611-80ea-0aa34a9b2388';

  $TransfersApi = new DwollaSwagger\TransfersApi($apiClient);

  $failureReason = $TransfersApi->failureById($transfer);
  print($failureReason->code); # => "R01"
  ?>
  ```

  ```python retrieve_transfer_failure.py theme={"dark"}
  transfer_url = 'https://api-sandbox.dwolla.com/transfers/8997ebed-69be-e611-80ea-0aa34a9b2388'

  # Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python (Recommended)
  failure = app_token.get('%s/failure' % transfer_url)
  failure.body['code'] # => 'R01'
  ```

  ```javascript retrieveTransferFailure.js theme={"dark"}
  var transferUrl =
    "https://api-sandbox.dwolla.com/transfers/8997ebed-69be-e611-80ea-0aa34a9b2388";

  dwolla.get(`${transferUrl}/failure`).then((res) => res.body.code); // => 'R01'
  ```
</CodeGroup>

### What occurs in the Dwolla system when a bank transfer fails?

When a bank transfer failure occurs there is a subset of systematic actions Dwolla may take on the Customer and/or the funding source based on the ACH return code. It is recommended to have an active [webhook subscription](/docs/api-reference/webhook-subscriptions/create-a-webhook-subscription), which is used to listen for events relating to any Customer or funding source state change. Please refer to the table below to understand the systematic actions that Dwolla may take for Customer and funding source resources, as well as the events that are created.

#### Systematic actions taken against the Customer

| Customer action | Description                                                                | Webhook Event          |
| --------------- | -------------------------------------------------------------------------- | ---------------------- |
| None            | No action taken against the Customer account as result of transfer failure | N/A                    |
| Deactivated     | Customer account has been deactivated                                      | `customer_deactivated` |
| Suspended       | Customer account has been suspended (R10 only)                             | `customer_suspended`   |

#### Systematic actions taken against the bank funding source

| Funding Source action | Description                                              | Webhook Event                        |
| --------------------- | -------------------------------------------------------- | ------------------------------------ |
| None                  | No action taken against the Customer bank funding source | N/A                                  |
| Unverified            | A Customer's bank has been unverified, but not removed   | `customer_funding_source_unverified` |
| Removed               | A Customer's bank has been removed                       | `customer_funding_source_removed`    |

### Why does Dwolla automatically take these actions?

Being able to catch and take action errors can be beneficial on many levels. For instance, if your Customer initiates a transaction which fails with an R10 (Customer Advises Not Authorized) return code, Dwolla will automatically put the suspected Customer in a `suspended` status, thereby not allowing them to initiate or receive more transfers. This gives you the ability investigate the Customer to determine if they are a valid party without worrying about them sending funds. Other return codes may result in the Customer being `deactivated`, or may only affect bank funding sources in which Dwolla may automatically unverify or remove a bank in response to various return codes.

### List of possible return codes, descriptions, and actions

Below are tables of the most common return codes we see involved in transactions, organized by category. For a full list of return codes, you can check out the ACH return code [list on our blog](https://www.dwolla.com/ach/ach-return-codes/).

<Tip>
  As a best practice, we recommend handling any systematic actions that trigger
  webhooks as a result of a transfer failure rather than relying on the specific
  actions as referenced below. We do not recommend building a workflow around
  each individual return code in the tables below. These tables are solely meant to be
  a reference for you to be aware of actions Dwolla may take on common transfer
  failures.
</Tip>

#### Administrative Returns

Administrative returns occur when there's an issue with the account itself—such as insufficient funds, a closed account, or invalid account information. These are typically returned within **2 banking days** and generally don't indicate fraudulent activity.

| Code | Reason & Description                                                                                                                                                                                                                                                                                                                                                               | Return Time Frame  | Triggered Action(s)                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| R01  | **Insufficient Funds**<br />Available balance is not sufficient to cover the dollar value of the debit entry.                                                                                                                                                                                                                                                                      | 2 banking days     | None                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| R02  | **Bank Account Closed**<br />Previously active account has been closed.                                                                                                                                                                                                                                                                                                            | 2 banking days     | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                     |
| R03  | **No Account/Unable to Locate Account**<br />Account number structure is valid, but does not match individual identified in entry or is not an open account.                                                                                                                                                                                                                       | 2 banking days     | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                     |
| R04  | **Invalid Bank Account Number Structure**<br />Account number structure is not valid.                                                                                                                                                                                                                                                                                              | 2 banking days     | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                     |
| R08  | **Payment Stopped**<br />The Receiver has requested the stop payment of a specific ACH debit entry.                                                                                                                                                                                                                                                                                | 2 banking days     | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                     |
| R09  | **Uncollected Funds**<br />Sufficient balance exists, but value of uncollected items brings available balance below amount of debit entry.                                                                                                                                                                                                                                         | 2 banking days     | None                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| R12  | **Branch Sold to Another DFI**<br />A financial institution received an entry to an account that was sold to another FI (typically due to a merger).                                                                                                                                                                                                                               | 2 banking days     | <ul><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                                                                                                                        |
| R13  | **Invalid ACH Routing Number**<br />Entry contains a receiving DFI identification or gateway identification that is not a valid ACH routing number.                                                                                                                                                                                                                                | Next file delivery | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul>                                                                                 |
| R14  | **Representative Payee Deceased or Unable to Continue in That Capacity**<br />The representative payee is a person either deceased or no longer able to continue in original capacity (i.e. legally incapacitated adults or minors), while the beneficiary is not deceased.                                                                                                        | 2 banking days     | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                                        |
| R15  | **Beneficiary or Account Holder Deceased**<br />(1) The beneficiary is deceased, or (2) The account holder is deceased.                                                                                                                                                                                                                                                            | 2 banking days     | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R16  | **Account Frozen/Entry Returned per OFAC Instruction**<br />(1) Access to the account is restricted due to specific action taken by the RDFI or by legal action; or (2) OFAC has instructed the RDFI to return the entry.                                                                                                                                                          | 2 banking days     | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R17  | **File Record Edit Criteria/Entry with Invalid Account Number Initiated Under Questionable Circumstances**<br />(1) Field(s) cannot be processed by RDFI; or (2) The entry contains an invalid DFI Account Number (account closed/no account/unable to locate account/invalid account number) and is believed by the RDFI to have been initiated under questionable circumstances. | 2 banking days     | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R20  | **Non-Transaction Account**<br />ACH entry to a non-transaction account (typically due to account holder exceeding their monthly withdrawal threshold under Regulation D).                                                                                                                                                                                                         | 2 banking days     | <ul><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul>                                                                                                                                                                                    |
| R22  | **Invalid Individual ID Number**<br />The Receiver has indicated to the RDFI that the number with which the Originator identified is not correct.                                                                                                                                                                                                                                  | 2 banking days     | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li></ul>                                                                                                                                                                                                                                                                                                                                  |
| R23  | **Credit Entry Refused by Receiver**<br />Any credit entry that is refused by the Receiver may be returned by the RDFI.                                                                                                                                                                                                                                                            | 2 banking days     | <ul><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                     |

#### Unauthorized Returns

Unauthorized returns occur when the account holder claims they did not authorize the transaction. These are more serious and can be returned up to **60 calendar days** after the settlement date. Due to the nature of these returns, Dwolla takes protective actions on the Customer account.

<Warning>
  Unauthorized returns may indicate potential fraud or disputes. Dwolla automatically suspends or deactivates the Customer to protect against further unauthorized activity.
</Warning>

| Code | Reason & Description                                                                                                                                                                                                                                                                                            | Return Time Frame | Triggered Action(s)                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| R05  | **Unauthorized Debit to Consumer Account Using Corporate SEC Code**<br />A CCD or CTX debit entry was transmitted to a consumer account and was not authorized by the Receiver. Written Statement is required.                                                                                                  | 60 calendar days  | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R07  | **Authorization Revoked by Customer**<br />Consumer who previously authorized entries has revoked authorization with the Originator. Written Statement is required.                                                                                                                                             | 60 calendar days  | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                     |
| R10  | **Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver's Account**<br />Receiver has no relationship with the Originator or has not authorized the Originator to debit the account. Written Statement is required.                            | 60 calendar days  | <ul><li>[Customer Suspended](/docs/webhook-events#param-customer-suspended)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul>     |
| R11  | **Customer Advises Entry Not in Accordance with the Terms of the Authorization**<br />The debit entry was inaccurate or improperly initiated. Other reasons include source document was ineligible, notice was not provided to the receiver or amount was inaccurately obtained. Written statement is required. | 60 calendar days  | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                     |
| R29  | **Corporate Customer Advises Not Authorized**<br />The RDFI has been notified by the Receiver (non-consumer) that a specific entry has not been authorized by the Receiver.                                                                                                                                     | 2 banking days    | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |

#### General Returns

These returns are initiated by the originating or receiving financial institution, or relate to specific transaction types like source documents or permissible returns. Return time frames vary.

| Code | Reason & Description                                                                                                                                                                | Return Time Frame | Triggered Action(s)                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| R06  | **Returned per ODFI's Request**<br />The ODFI has requested that the RDFI return an erroneous entry, or a credit entry originated without the authorization of the Originator.      | Varies            | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R31  | **Permissible Return (CCD and CTX only)**<br />The RDFI may return a CCD or CTX entry that the ODFI agrees to accept.                                                               | Varies            | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R37  | **Source Document Presented for Payment**<br />Source document to which an ARC, BOC, or POP entry relates has been presented for payment. Written Statement is required.            | 60 calendar days  | <ul><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li></ul>                                                                                                                                                                                                                                                                                                                                        |
| R38  | **Stop Payment on Source Document**<br />The RDFI indicates a stop payment order has been placed on the source document the ARC or BOC entry relates to.                            | 60 calendar days  | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
| R51  | **Item Related to RCK Entry is Ineligible or RCK Entry is Improper**<br />The RDFI notifies that the RCK entry is considered ineligible or improper. Written Statement is required. | 60 calendar days  | <ul><li>[Customer Deactivated](/docs/webhook-events#param-customer-deactivated)</li><li>[Funding Source Unverified](/docs/webhook-events#param-customer-funding-source-unverified)</li><li>[Funding Source Removed](/docs/webhook-events#param-customer-funding-source-removed)</li><li>Funding Source <Tooltip tip="Contact your Customer Excellence Manager to remove a funding source from the blocklist.">Blocklisted</Tooltip></li></ul> |
