Skip to main content

Documentation Index

Fetch the complete documentation index at: https://gusto-preview.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Bank accounts are verified through micro deposits, ensuring a secure and reliable connection to the company’s funding source.

1. Create a bank account

Create and connect a new bank account for a company using the POST /v1/companies/{company_id}/bank_accounts endpoint. If a default bank account exists, the new bank account will replace it as the company’s default funding method. You can also connect a bank account from Plaid using the POST plaid/processor_token endpoint. When testing in Demo: Use the sample routing number 102001017. The API checks that the routing number is a valid US routing number, and therefore will reject false inputs. Sample request
curl --request POST \
     --url https://api.gusto-demo.com/v1/companies/{company_uuid}/bank_accounts \
     --header 'accept: application/json' \
     --header 'authorization: Bearer {{company_access_token}}' \
     --header 'content-type: application/json' \
     --data '
{
     "routing_number": "102001017",
     "account_type": "Checking",
     "account_number": "9775014007"
}
'
Sample response
{
  "uuid": "{{uuid}}",
  "company_uuid": "{{company_uuid}}",
  "account_type": "Checking",
  "routing_number": "102001017",
  "hidden_account_number": "XXXX014007",
  "verification_status": "awaiting_deposits",
  "verification_type": "bank_deposits",
  "name": "Employer Funding Account"
}
Two verification deposits are automatically sent to the new bank account in 1-2 business days. During this stage, the bank account’s verification_status is awaiting_deposits. When the deposits are successfully transferred, the verification_status changes to ready_for_verification.

2. Verify a bank account

At this point, call the PUT /v1/companies/{company_id}/bank_accounts/{bank_account_uuid}/verify to verify the bank account. After a successful verification, the bank account’s verification_status is returned as verified. Sample request
curl --request PUT \
     --url https://api.gusto-demo.com/v1/companies/{company_uuid}/bank_accounts/{bank_account_uuid}/verify \
     --header 'accept: application/json' \
     --header 'authorization: Bearer {{company_access_token}}' \
     --header 'content-type: application/json' \
     --data '
{
     "deposit_1": 0.02,
     "deposit_2": 0.42
}
'
Sample response
{
  "uuid": "{{uuid}}",
  "company_uuid": "{{company_uuid}}",
  "account_type": "Checking",
  "routing_number": "102001017",
  "hidden_account_number": "XXXX014007",
  "verification_status": "verified",
  "verification_type": "bank_deposits",
  "name": "Employer Funding Account"
}

Validation in Demo

For testing in Demo, use the POST companies/{company_id_or_uuid}/bank_accounts/{bank_account_uuid}/send_test_deposits endpoint simulate micro-deposit transfers.

Manage company locations Create company benefits