# Link a bank account

Link a bank account to an existing Moov account. Read our [bank accounts guide](https://docs.moov.io/guides/sources/bank-accounts/) to learn more.

It is strongly recommended that callers include the `X-Wait-For` header, set to `payment-method`, if the newly linked bank account is intended to be used right away. If this header is not included, the caller will need to poll the [List Payment Methods](https://docs.moov.io/api/sources/payment-methods/list/) endpoint to wait for the new payment methods to be available for use.

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.write` scope.

## POST

/accounts/{accountID}/bank-accounts

### Ask

```shell
curl -X POST "https://api.moov.io/accounts/{accountID}/bank-accounts" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00" \
  -d '{
  "account": {
    "holderName": "string",
    "holderType": "individual",
    "accountNumber": "string",
    "bankAccountType": "checking",
    "routingNumber": "string"
  }
}'
```

### Ask

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

var accountID string

mc.CreateBankAccount(ctx, accountID, moov.WithBankAccount(moov.BankAccountRequest{
  AccountNumber: "0004321567000",
  AccountType:   moov.BankAccountType_Checking,
  HolderName:    "Jules Jackson",
  HolderType:    moov.HolderType_Individual,
  RoutingNumber: "123456789",
}), moov.WaitForPaymentMethod())
```

### Ask

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

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

async function run() {
  const result = await moov.bankAccounts.link({
    accountID: "b326319d-6118-4921-8d82-d5810d562eef",
    linkBankAccount: {
      plaidLink: {
        publicToken: "<value>",
      },
    },
  });

console.log(result);
}

run();
```

### Ask

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\
