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

# List banks

> Retrieve the banks available for bank transfer and USSD payments

Returns the banks you can offer the customer. Use it to populate a bank picker before calling
[Pay an order](/api-reference/orders/pay-order) with a bank-based method.

## Endpoint

```
GET https://api-v4.reeple.ai/charge/banks
```

Authenticate with your **public key**. See [Authentication](/api-reference/authentication).

## Query parameters

| Field           | Type   | Description                                                                                        |
| --------------- | ------ | -------------------------------------------------------------------------------------------------- |
| `paymentmethod` | String | Optional. Filter to the banks supporting a method — `bank-transfer` or `ussd`. Omit for all banks. |

<Note>
  The list is not the same for every method. `bank-transfer` returns the full set; `ussd` returns
  only banks with USSD enabled, which may be empty. Always filter by the method the customer
  actually chose.
</Note>

## Request example

```bash theme={null}
curl "https://api-v4.reeple.ai/charge/banks?paymentmethod=bank-transfer" \
  -H "api-key: YOUR_PUBLIC_KEY"
```

## Response

```json theme={null}
{
  "data": [
    {
      "name": "AB MICROFINANCE BANK",
      "countryId": 1,
      "bankCode": "090270",
      "isMicrofinance": null,
      "isMortgage": null,
      "ussdBankCode": null,
      "logo": "https://cdn.example.com/icons/Banks/090270.png",
      "id": 1,
      "dateCreated": "2024-03-06T08:48:45",
      "dateUpdated": null
    }
  ],
  "status": "success",
  "statusCode": "00",
  "message": "Operation successful"
}
```

### Response fields

| Field                           | Description                                                                          |
| ------------------------------- | ------------------------------------------------------------------------------------ |
| `name`                          | Display name. Returned in upper case — title-case it yourself if that suits your UI. |
| `bankCode`                      | **The value to send** as `BankTransfer.bankcode` on a bank transfer.                 |
| `ussdBankCode`                  | The equivalent for USSD. `null` where the bank has no USSD support.                  |
| `logo`                          | Bank logo URL, for a richer picker.                                                  |
| `countryId`                     | Reeple's internal country identifier.                                                |
| `isMicrofinance` / `isMortgage` | Bank category flags. Often `null`.                                                   |
| `id`                            | Reeple's internal row id — not a bank code, don't send it as one.                    |

<Warning>
  Send `bankCode` for bank transfers and `ussdBankCode` for USSD. Sending `id` — or the wrong one
  of the two codes — produces a payment that cannot be routed.
</Warning>

## Caching

The list is large and changes rarely. Cache it for a day rather than calling it on every page
load, but do refresh it — new banks are added over time.

<Tip>
  Filter out banks whose relevant code is `null` before rendering. A USSD picker showing banks
  with no `ussdBankCode` gives the customer a dead end.
</Tip>
