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

# List funding sources

> GET /v1/funding-sources lists what the business can pay from on both rails, with the exact fields to send on POST /v1/payments.

```
GET /v1/funding-sources
```

**Scope:** `payments:initiate`, `bank-accounts:read` or `bank-accounts:write`

Lists the Cleo Pay balance and the bank linked to Cleo Pay (when the business has a Cleo Pay account) and each verified Dwolla bank, side by side. The default rail's sources come first. Nothing is hidden because of the default rail.

```bash theme={null}
curl https://api.stg.cleo-pay.com/v1/funding-sources \
  --header "Authorization: Bearer $CLEO_API_KEY"
```

## Response

`200` with `{ items }`.

<ResponseField name="id" type="string">`balance`, `linked_bank`, or a Dwolla bank account id.</ResponseField>
<ResponseField name="rail" type="string">`DWOLLA` or `CLEO_PAY`.</ResponseField>
<ResponseField name="kind" type="string">`balance`, `linked_bank` or `bank` (a Dwolla bank).</ResponseField>
<ResponseField name="name" type="string | null">The bank's name, or `Cleo Pay balance`.</ResponseField>
<ResponseField name="last4" type="string | null">Last 4 digits of the bank account.</ResponseField>

<ResponseField name="availableCents" type="integer | null">
  What the balance can spend now. Balance only, and `null` unless the key can read payments or the balance.
</ResponseField>

<ResponseField name="isDefault" type="boolean">The source a payment uses when it names nothing.</ResponseField>
<ResponseField name="canPay" type="boolean">Whether a payment can be funded from this source now.</ResponseField>

<ResponseField name="unavailableReason" type="string | null">
  Why `canPay` is `false`: `cleo_pay_not_ready`, `no_linked_bank`, `bank_funding_unavailable`, `bank_reauth` or `rail_not_ready`. New reasons may be added.
</ResponseField>

<ResponseField name="actionUrl" type="string | null">A Cleo web page where your user fixes the block.</ResponseField>

<ResponseField name="pay" type="object">
  The fields to send on `POST /v1/payments`: `paymentRail`, and `fundingSource` or `bankAccountId`. It never includes `achAuthorizationAccepted`; add that yourself after your user accepts the ACH debit authorization.
</ResponseField>

The linked bank currently lists with `canPay: false` and `unavailableReason: "bank_funding_unavailable"`, because paying from it is not available through the API yet.

See [Funding sources](/concepts/funding-sources) for an example and the rail rules.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.