# Create a bank account

When you create a new bank account, you must specify a `Customer` object on which to create it.

## Prerequisites

Before you can run the following code snippet, you need to call these APIs with the provided parameters to set up the prerequisite API object(s).

1. createCustomer
POST /v1/customers {"name":"Jenny Rosen","email":"jennyrosen@example.com"}

## Request

```curl
curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}}/sources \
  -u "<<YOUR_SECRET_KEY>>" \
  -d source=btok_1MvoS32eZvKYlo2CDhGTErAe
```

### Response

```json
{
  "id": "ba_1MvoIJ2eZvKYlo2CO9f0MabO",
  "object": "bank_account",
  "account_holder_name": "Jane Austen",
  "account_holder_type": "company",
  "account_type": null,
  "bank_name": "STRIPE TEST BANK",
  "country": "US",
  "currency": "usd",
  "customer": "cus_9s6XI9OFIdpjIg",
  "fingerprint": "1JWtPxqbdX5Gamtc",
  "last4": "6789",
  "metadata": {},
  "routing_number": "110000000",
  "status": "new"
}
```

## Returns

Returns the bank account object.

## Parameters

- [`source`](https://docs.stripe.com/api/customer_bank_accounts/create.md?query=source) (object | string, required)
  Either a token, like the ones returned by [Stripe.js](https://docs.stripe.com/js.md), or a dictionary containing a user’s bank account details (with the options shown below).

- `metadata` (map, optional)
  Set of [key-value pairs](https://docs.stripe.com/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
