# Retrieve a bank account

Retrieve bank account details (i.e. routing number or account type) associated with a specific 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/{bankAccountID}

### Ask

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

### Ask

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

var accountID string
var BankAccountID string

mc.GetBankAccount(ctx, accountID, BankAccountID)
```

### Ask

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

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

async function run() {
  const result = await moov.bankAccounts.get({
    accountID: "32ac681d-3244-4673-8541-362e40b7677a",
    bankAccountID: "dd241177-be83-4aad-80f8-31aded5f3616",
  });

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->get(
    accountID: '32ac681d-3244-4673-8541-362e40b7677a',
    bankAccountID: 'dd241177-be83-4aad-80f8-31aded5f3616'
);

if ($response->bankAccount !== 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.GetBankAccountResponse;
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();

GetBankAccountResponse res = sdk.bankAccounts().get()
                .accountID("32ac681d-3244-4673-8541-362e40b7677a")
                .bankAccountID("dd241177-be83-4aad-80f8-31aded5f3616")
                .call();

if (res.bankAccount().isPresent()) {
            System.out.println(res.bankAccount().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.get(account_id="32ac681d-3244-4673-8541-362e40b7677a", bank_account_id="dd241177-be83-4aad-80f8-31aded5f3616")

# 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.get(account_id: '32ac681d-3244-4673-8541-362e40b7677a', bank_account_id: 'dd241177-be83-4aad-80f8-31aded5f3616')

unless res.bank_account.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.GetAsync(
    accountID: "32ac681d-3244-4673-8541-362e40b7677a",
    bankAccountID: "dd241177-be83-4aad-80f8-31aded5f3616"
);

// handle response
```

The request completed successfully.

### Example

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

### Response headers

A unique identifier used to trace requests.

### Possible values:

`v2026.04.00`

Describes a bank account linked to a Moov account.

The bank account type.

Possible values:
- `checking`,
- `savings`,
- `general-ledger`,
- `loan`

Once the bank account is linked, we don't reveal the full bank account number.

The fingerprint acts as a way to identify whether two linked bank accounts are the same.

The type of holder on a funding source.

Possible values:
- `individual`,
- `business`,
- `guest`

Possible values:
- `new`,
- `verified`,
- `verificationFailed`,
- `pending`,
- `errored`

Reasons related to an `errored` or `verificationFailed` bank account status.

The return code of an ACH transaction that caused the bank account status to change.

Possible values:
- `R02`,
- `R03`,
- `R04`,
- `R05`,
- `R07`,
- `R08`,
- `R10`,
- `R11`,
- `R12`,
- `R13`,
- `R14`,
- `R15`,
- `R16`,
- `R17`,
- `R20`,
- `R23`,
- `R29`,
- `R34`,
- `R38`,
- `R39`

The rejection code of a FedNow transaction that caused the bank account status to change.

Possible values:
- `AC02`,
- `AC03`,
- `AC04`,
- `AC06`,
- `AC07`,
- `AC10`,
- `AC11`,
- `AC13`,
- `AC14`,
- `AG01`,
- `AG03`,
- `BE06`,
- `DUPL`,
- `MD07`,
- `NOAT`,
- `RC02`,
- `RC03`,
- `RC04`

The rejection code of an RTP transaction that caused the bank account status to change.

Possible values:
- `AC03`,
- `AC04`,
- `AC06`,
- `AC14`,
- `AG01`,
- `AG03`,
- `MD07`

### Includes any payment methods generated for a newly created bank account, removing the need to
call the List Payment Methods endpoint following a successful Create BankAccount request.

**NOTE: This field is only populated for Create BankAccount requests made with the `X-Wait-For` header.**

### Show child attributes

ID of the payment method.

The payment method type that represents a payment rail and directionality

Possible values:
- `moov-wallet`,
- `ach-debit-fund`,
- `ach-debit-collect`,
- `ach-credit-standard`,
- `ach-credit-same-day`,
- `rtp-credit`,
- `card-payment`,
- `push-to-card`,
- `pull-from-card`,
- `apple-pay`,
- `card-present-payment`,
- `instant-bank-credit`,
- `push-to-apple-pay`,
- `pull-from-apple-pay`,
- `google-pay`,
- `push-to-google-pay`,
- `pull-from-google-pay`

The reason the bank account status changed to the current value.

Possible values:
- `bank-account-created`,
- `verification-initiated`,
- `micro-deposit-attempts-exceeded`,
- `micro-deposit-expired`,
- `max-verification-failures`,
- `verification-attempts-exceeded`,
- `verification-expired`,
- `verification-successful`,
- `ach-debit-return`,
- `ach-credit-return`,
- `rtp-credit-failure`,
- `fednow-credit-failure`,
- `micro-deposit-return`,
- `admin-action`,
- `other`
