# Create a US Bank Account

Create a USBankAccount object.

## Request

```curl
curl -X POST https://api.stripe.com/v2/core/vault/us_bank_accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-03-25.preview" \
  -H "Stripe-Context: {{CONTEXT}}" \
  --json '{
    "routing_number": "110000000",
    "account_number": "000123456789",
    "bank_account_type": "checking"
  }'
```

### Response

```json
{
  "id": "usba_test_61OHSEF60mEpRiXpR16NqdMu76SQRZLd31xuji87MN5M",
  "object": "v2.core.vault.us_bank_account",
  "bank_account_type": "checking",
  "bank_name": "Test Bank",
  "created": "2023-05-15T16:29:15.738Z",
  "archived": false,
  "last4": "6789",
  "routing_number": "110000000",
  "verification": {
    "microdeposit_verification_details": null,
    "status": "unverified"
  },
  "livemode": true
}
```

## Parameters

- `account_number` (string, required)
  The account number of the bank account.

- `currency` (string, required)
  The currency of the bank account.

- `bank_account_type` (enum, optional)
  The type of the bank account (checking or savings).
Possible enum values:
  - `checking`
    Checkings account.

  - `savings`
    Savings account.

- `fedwire_routing_number` (string, optional)
  The fedwire routing number of the bank account. Note that certain banks have the same ACH and wire routing number.

- `routing_number` (string, optional)
  The ACH routing number of the bank account. Note that certain banks have the same ACH and wire routing number.

## Returns

## Response attributes

- `id` (string)
  The ID of the USBankAccount object.

- `object` (string, value is "v2.core.vault.us_bank_account")
  String representing the object’s type. Objects of the same type share the same value of the object field.

- [`alternative_reference`](https://docs.stripe.com/api/v2/core/vault/us-bank-accounts/create.md?query=alternative_reference&api-version=2026-03-25.preview) (object, nullable)
  The alternative reference for this payout method, if it’s a projected payout method.

- `archived` (boolean)
  Whether this USBankAccount object was archived.

- `bank_account_type` (enum)
  The type of bank account (checking or savings).
Possible enum values:
  - `checking`
    Checkings account.

  - `savings`
    Savings account.

- `bank_name` (string)
  The name of the bank this bank account belongs to. This field is populated automatically by Stripe based on the routing number.

- `created` (timestamp)
  Creation time of the object.

- `fedwire_routing_number` (string, nullable)
  The fedwire routing number of the bank account.

- `financial_connections_account` (string, nullable)
  The ID of the Financial Connections Account used to create the bank account.

- `last4` (string)
  The last 4 digits of the account number.

- `livemode` (boolean)
  Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.

- `routing_number` (string, nullable)
  The ACH routing number of the bank account.

- `supported_currencies` (array of strings)
  The list of currencies supported by this bank account.

- [`verification`](https://docs.stripe.com/api/v2/core/vault/us-bank-accounts/create.md?query=verification&api-version=2026-03-25.preview) (object)
  The bank account verification details.

## Error Codes

| HTTP status code | Code | Description |
| --- | --- | --- |
| 400 | blocked_us_bank_account | Returned in cases where the bank account cannot be used due to suspicious activity. |
| 400 | invalid_us_bank_account | Returned in cases where the bank account provided is not valid (wrong format of account number or a routing number that does not correspond to a banking institution). |
| 400 | limit_us_bank_account | Returned when the number of USBankAccount objects on a given V2 Account has exceeded the limit of 10. USBankAccount objects may be archived with /archive, at which point they will not count against the limit. If you are not passing a V2 Account ID in the Stripe-Context header you may receive this error since you are creating all your USBankAccount objects in your own workspace. |
| 400 | unsupported_us_bank | Returned in cases where Stripe is unable to support this bank at this time. |
| 400 | us_bank_account_incompatible_currency | Returned in cases where the currency provided is incompatible with US bank accounts. This occurs when the credentials provided do not match with the currency provided. |
| 400 | us_bank_account_unsupported_currency | Returned in cases where the currency provided is unsupported for US bank accounts. This occurs when the currency provided is not supported for US regardless of the credentials provided. |
| 409 | idempotency_error | An idempotent retry occurred with different request parameters. |
