# List bank accounts

List all the bank accounts associated with a particular Moov account.

Read our [bank accounts guide](https://docs.moov.io/guides/sources/bank-accounts/) to learn more.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts/{accountID}/bank-accounts.read` scope.

## GET

`/accounts/{accountID}/bank-accounts`

### Ask

```shell
curl -X GET "https://api.moov.io/accounts/{accountID}/bank-accounts" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.04.00"
```

### Ask

```go
mc, _ := moov.NewClient()

var accountID string

mc.ListBankAccounts(ctx, accountID)
```

### Ask

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.bankAccounts.list({
    accountID: "85539920-22dd-4900-a07e-7a88268456d9",
  });

console.log(result);
}

run();
```

### Ask

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$response = $sdk->bankAccounts->list(
    accountID: '85539920-22dd-4900-a07e-7a88268456d9'
);

if ($response->bankAccounts !== null) {
    // handle response
}
```

### Ask

```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.operations.ListBankAccountsResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

ListBankAccountsResponse res = sdk.bankAccounts().list()
                .accountID("85539920-22dd-4900-a07e-7a88268456d9")
                .call();

if (res.bankAccounts().isPresent()) {
            System.out.println(res.bankAccounts().get());
        }
    }
}
```

### Ask

```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.bank_accounts.list(account_id="85539920-22dd-4900-a07e-7a88268456d9")

# Handle response
    print(res)
```

### Ask

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)
res = s.bank_accounts.list(account_id: '85539920-22dd-4900-a07e-7a88268456d9')

unless res.bank_accounts.nil?
  # handle response
end
```

### Ask

```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

var res = await sdk.BankAccounts.ListAsync(accountID: "85539920-22dd-4900-a07e-7a88268456d9");

// handle response
```

### Response example

```json
[
  {
    "bankAccountID": "833fa3ef-14d3-4c97-ba45-6af66f739832",
    "fingerprint": "dd4cbfe5fbaf47b392770b5b595bec604fd99394749b7d017153e2b9cfbea40e",
    "status": "new",
    "holderName": "John Doe",
    "holderType": "individual",
    "bankName": "Gringotts Bank",
    "bankAccountType": "checking",
    "routingNumber": "123456780",
    "lastFourAccountNumber": "6789",
    "updatedOn": "2024-11-26T22:37:06Z",
    "statusReason": "bank-account-created"
  }
]
```

### Possible values for error reasons
- R02: Account Closed
- R03: No Account/Unable to Locate Account
- R04: Invalid Account Number
- R05: Improper Debit to Consumer Account
- R07: Authorization Revoked by Customer
- R08: Payment Stopped
- R10: Customer Advises Originator is Not Known or Authorized to Receiver
- R11: Customer Advises Entry Not in Accordance with the Terms of the Authorization
- R12: Branch Sold to Another DFI
- R13: RDFI not qualified to participate
- R14: Representative payee deceased or unable to continue in that capacity
- R15: Beneficiary or bank account holder
- R16: Bank account frozen
- R17: Entry with Invalid Account Number Initiated Under Questionable Circumstances
- R20: Non-payment bank account
- R23: Credit entry refused by receiver
- R29: Corporate customer advises not authorized
- R34: Limited participation RDFI
- R38: Stop Payment on Source Document (Adjustment Entry)
- R39: Improper Source Document
