# Link bank accounts

> Step-by-step guide to linking a bank account to a Moov account as a source with the API, SDKs, or Moov.js, then starting verification.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

Link a bank account to a Moov account with its routing and account number. A linked bank account can receive funds right away; verify it before you debit it.

If you use Plaid or MX, skip this page: [Plaid](/guides/sources/bank-accounts/verification/index.md#plaid) and [MX](/guides/sources/bank-accounts/verification/index.md#mx) link and verify the bank account in one request. Supported bank account types are listed in [bank accounts](/guides/sources/bank-accounts/index.md#account-types).

## Link and verify a bank account

### Get accountID

Retrieve the `accountID` for the Moov account you want to link a bank account to.

**cURL**

List accounts [reference](/api/moov-accounts/accounts/list/index.md)

```zsh
curl -X GET "https://api.moov.io/accounts" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00"
```

**Go SDK**

List accounts [reference](/api/moov-accounts/accounts/list/index.md)

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

mc.ListAccounts(ctx)
```

### Link a bank account

For the purposes of this example, we are adding a bank account to an `individual` Moov account. If you are adding a bank account to a business Moov account, pass `business` as the `holderType` instead.

The response includes the `bankAccountID` and a `status` of `new`. The bank account can now receive funds, and Moov creates its credit payment methods.

**cURL**

Link a bank account [reference](/api/sources/bank-accounts/create/index.md)

```zsh
curl -X POST "https://api.moov.io/accounts/{accountID}/bank-accounts" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "account": {
      "accountNumber": "0004321567000",
      "bankAccountType": "checking",
      "holderName": "Jules Jackson",
      "holderType": "individual",
      "routingNumber": "123456789"
    }
  }'
```

**Go SDK**

Link a bank account [reference](/api/sources/bank-accounts/create/index.md)

```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())
```

**Moov.js**

Link a bank account [reference](/api/sources/bank-accounts/create/index.md)

```javascript
const moov = Moov(token);

const accountID = "accountID";
const bankAccountPayload = {
  accountNumber: "0004321567000",
  bankAccountType: "checking",
  holderName: "Jules Jackson",
  holderType: "individual",
  routingNumber: "123456789"
};

moov.accounts.bankAccounts.link({accountID, bankAccount: bankAccountPayload});
```

### Verify the bank account

Start [instant micro-deposit verification](/guides/sources/bank-accounts/verification/index.md#instant-micro-deposits) with the `bankAccountID`. Moov sends a $0.01 credit with a 4-digit code that the account holder enters in your app. When verification succeeds, the bank account `status` changes to `verified` and Moov creates its debit payment methods.

See [verify bank accounts](/guides/sources/bank-accounts/verification/index.md) for the steps, code samples, and other methods.

## Manage bank accounts

- **List or get:** use the list bank accounts `GET` [endpoint](/api/sources/bank-accounts/list/index.md), or pass the `bankAccountID` to the retrieve a bank account `GET` [endpoint](/api/sources/bank-accounts/get/index.md).
- **Delete:** pass the `bankAccountID` to the delete a bank account `DELETE` [endpoint](/api/sources/bank-accounts/delete/index.md).
- **Track status:** subscribe to the `bankAccount.updated` [webhook](/guides/webhooks/webhook-events/index.md), and see [bank account status](/guides/sources/bank-accounts/bank-account-status/index.md) for what each status means and how to handle failed verification.

## Next steps

- [Verify bank accounts](/guides/sources/bank-accounts/verification/index.md)
- [Accept payments](/guides/accept-payments/index.md)
- [Send payouts](/guides/send-payments/index.md)

