---
title: "Create a company bank account"
method: POST
path: "/v1/companies/{company_id}/bank_accounts"
tags: ["Bank Accounts"]
---

# Create a company bank account

`POST /v1/companies/{company_id}/bank_accounts`

## Request

- Base URL: `https://api.gusto-demo.com`
- URL: `https://api.gusto-demo.com/v1/companies/{company_id}/bank_accounts`
- Auth: HTTP bearer

This endpoint creates a new company bank account.

Upon being created, two verification deposits are automatically sent to the bank account, and the bank account's verification_status is 'awaiting_deposits'.

When the deposits are successfully transferred, the verification_status changes to 'ready_for_verification', at which point the verify endpoint can be used to verify the bank account.
After successful verification, the bank account's verification_status is 'verified'.


>🚧 Warning
>
> If a default bank account exists, it will be disabled and the new bank account will replace it as the company's default funding method.
>
> A new bank account cannot replace the default if the current default has unprocessed payments. In that case, a 422 `invalid_operation` error is returned. To resolve, fund or cancel the pending payments first.

scope: `company_bank_accounts:write`

## Path parameters

- `company_id` string, required

## Headers

- `X-Gusto-API-Version` '2026-06-15'

## Request body

- CompanyBankAccountRequest
  - `routing_number` string, required: The bank routing number
  - `account_number` string, required: The bank account number
  - `account_type` 'Checking' | 'Savings', required: The bank account type

## Response `200`

Bank account unchanged

- CompanyBankAccount: The company bank account
  - `uuid` string, required: UUID of the bank account
  - `company_uuid` string: UUID of the company
  - `account_type` 'Checking' | 'Savings': Bank account type
  - `routing_number` string: The bank account's routing number
  - `hidden_account_number` string: Masked bank account number
  - `verification_status` 'awaiting_deposits' | 'ready_for_verification' | 'verified': The verification status of the bank account. 'awaiting_deposits' means the bank account is just created and money is being transferred. 'ready_for_verification' means the micro-deposits are completed and the verification process can begin by using the verify endpoint. 'verified' means the bank account is verified.
  - `verification_type` 'bank_deposits' | 'plaid' | 'plaid_external': The verification type of the bank account. 'bank_deposits' means the bank account is connected by entering routing and accounting numbers and verifying through micro-deposits. 'plaid' means the bank account is connected through Plaid.
  - `plaid_status` 'connected' | 'disconnected', nullable: The Plaid connection status of the bank account. Only applies when verification type is Plaid.
  - `last_cached_balance` string, nullable: The last fetch balance for the bank account. Please be aware that this amount does not reflect the most up-to-date balance and only applies when the verification type is Plaid.
  - `balance_fetched_date` string, nullable: The balance fetch date associated with the last_cached_balance. Only applies when verification type is Plaid.
  - `name` string: Name of bank account
  - `reverse_wire_enabled` boolean, nullable: Whether the company has at least one bank account with active reverse-wire funding. The same value is returned on every bank-account row in this response.

## Other responses

- `201`: created
- `404`: Not Found
- `422`: Cannot replace default bank account with unfunded payments

---

[API](https://skmtc.dev/gusto/apis/gusto-api.md) - [All operations](https://skmtc.dev/gusto/apis/gusto-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gusto/apis/gusto-api/revisions/f98575fa2a5e?raw)
