# Funding Sources

The Funding Sources resource represents payment accounts that can be used to send and/or receive funds. Funding sources are relational to either a [Dwolla Main Account](https://developers.dwolla.com/docs/api-reference/accounts/create-a-funding-source-for-an-account) or [Customer](https://developers.dwolla.com/docs/api-reference/funding-sources/create-customer-funding-source) and can be used to reference details on a payment account.

### Funding source types

The three funding source types available with a Dwolla integration include a `bank`, and the Dwolla `balance` account. Type `bank` represents any bank account attached as a funding source to Account and Customer resources. Type `balance` represents the Dwolla Balance made available to Account and Verified Customer resources.

##### Bank funding source

Funding sources of type `bank` include an additional attribute, `bankAccountType`, denoting the type of the bank account being attached. The bank account types currently supported by Dwolla include `checking`, `savings`, `general-ledger` and `loan`.

- `checking`, `savings` - Checking and savings accounts can be attached to any Customer type. These account types are enabled for all Accounts and Customers, by default.
- `general-ledger` - General ledger accounts can only be attached to exempt Business Verified Customers. **Note**: Enabling this account type requires additional Dwolla approvals before getting started. Please contact [Sales](/content/contact?b=apidocs/index.html) or your account manager for more information on enabling this account type.
- `loan` - Loan accounts can only be attached to Verified Customers. These funding-sources can only be credited, meaning funds can only be sent to these accounts. **Note**: Enabling this account type requires additional Dwolla approvals before getting started. Please contact [Sales](/content/contact?b=apidocs/index.html) or your account manager for more information on enabling this account type.

##### Balance funding source

The [Dwolla Balance](https://developers.dwolla.com/docs/balance-funding-source) can be utilized as a digital “wallet”, storing USD funds for the Customer or Account with Dwolla’s financial institution partners. Additionally, the Dwolla Balance can be pre-loaded with funds for quicker outgoing ACH transfers to destination funding sources. To get a more in-depth overview of the Dwolla Balance, including functionality and other benefits, check out our [developer resource article](https://developers.dwolla.com/docs/balance-funding-source) or view our [webinar](/content/resources/balance-webinar/index.html).

### Funding source links

| Link | Description |
| --- | --- |
| self | URL of the funding source resource. |
| customer | GET this link to [retrieve details](https://developers.dwolla.com/docs/api-reference/customers/retrieve-a-customer) of the Customer. |
| remove | POST to this link to [remove the funding source](https://developers.dwolla.com/docs/api-reference/funding-sources/update-or-remove-a-funding-source) from the Customer. |
| balance | (Verified Customer only) GET this link to [retrieve the amount available in the balance](https://developers.dwolla.com/docs/api-reference/funding-sources/retrieve-funding-source-balance) of the Customer’s Balance funding source. |
| transfer-from-balance | (Verified Customer only) if this link exists, the Customer can transfer funds from their balance. |
| transfer-to-balance | (Verified Customer only) if this link exists, funds can be transferred to the Customer’s balance. |
| transfer-send | If this link exists, the Customer can send funds to another Customer. |
| transfer-receive | The Customer can receive funds from another Customer. |
| initiate-micro-deposits | POST to this link to [initiate micro-deposits](https://developers.dwolla.com/docs/api-reference/funding-sources/initiate-or-verify-micro-deposits) on an unverified funding source. |
| verify-micro-deposits | Micro-deposits have completed to this funding source and are eligible for verification. POST to this link with the [verify micro-deposit amounts](https://developers.dwolla.com/docs/api-reference/funding-sources/initiate-or-verify-micro-deposits) and complete bank funding source verification. |
| failed-verification-micro-deposits | Micro-deposits attempts have failed due to too many failed attempts. [Remove the bank and re-add to attempt verification again.](https://developers.dwolla.com/docs/micro-deposit-verification) |

### Funding source resource

| Parameter | Description |
| --- | --- |
| id | The funding source unique identifier. |
| status | Possible values are `unverified` or `verified`. Determines if the funding source has completed verification. |
| type | Type of funding source. Possible values are `bank` or `balance`. |
| bankAccountType | An attribute for `bank` funding sources that determines the type of account. Possible values are `checking`, `savings`, `general-ledger` or `loan`. |
| name | Arbitrary nickname for the funding source. |
| created | ISO-8601 timestamp for when the funding source was created. |
| balance | An optional object that includes `value` and `currency` parameters. `value` is a string value for the amount available and `currency` is a string value currency code. Only returned for a Dwolla API Customer account balance. |
| removed | Determines if the funding source has been [removed](https://developers.dwolla.com/docs/api-reference/funding-sources/update-or-remove-a-funding-source). A boolean `true` if the funding source was removed or `false` if the funding source is not removed. |
| channels | List of processing channels. ACH is the default processing channel for bank transfers. Possible values are `ach`, `real-time-payments` or `wire`. |
| bankName | The financial institution name. This value is generated from its routing number by Dwolla when a funding source is created; it cannot be specified manually. |
| iavAccountHolders | An optional object that includes optional `selected` and `other` parameters. `selected`, a string with the account holder name(s) on file with the financial institution for the IAV selected account. `other`, a list of strings with name(s) of other accounts on file. Only returned for a Customer that added a bank using Dwolla IAV, and if names are returned for the selected bank account. |
| fingerprint | Fingerprint is an optional unique identifying string value returned for funding sources of type `bank`. This attribute can be used to check across all Dwolla API Customers if two bank accounts share the same account number and routing number. Removing a funding source does not remove the `fingerprint`. |

#### Funding source resource example

```json
{
    "_links": {
        "self": {
            "href": "https://api-sandbox.dwolla.com/funding-sources/fc84223a-609f-42c9-866e-2c98f17ab4fb",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "funding-source"
        },
        "customer": {
            "href": "https://api-sandbox.dwolla.com/customers/241ec287-8d7a-4b69-911e-ffbea98d75ce",
            "type": "application/vnd.dwolla.v1.hal+json",
            "resource-type": "customer"
        }
    },
    "id": "fc84223a-609f-42c9-866e-2c98f17ab4fb",
    "status": "verified",
    "type": "bank",
    "bankAccountType": "checking",
    "name": "Your Account #1 - CHECKING",
    "created": "2017-08-16T20:06:34.000Z",
    "removed": false,
    "channels": [
        "ach",
        "real-time-payments"
    ],
    "bankName": "SANDBOX TEST BANK",
    "iavAccountHolders": {
        "selected": "account holder",
        "other": [
          "Jane Doe",
          "GeneriCompany LLC"
        ]
    },
    "fingerprint": "4cf31392f678cb26c62b75096e1a09d4465a801798b3d5c3729de44a4f54c794"
}
```
