---
title: "Add a Bank Account"
method: POST
path: "/v1/users/{userId}/bankAccounts"
tags: ["User Management"]
---

# Add a Bank Account

`POST /v1/users/{userId}/bankAccounts`

Create a bank account for the user

## Path parameters

- `userId` string, required

## Request body

- CreateBankAccountRequest
  - `routingNumber` string, required — Bank account routing number
  - `accountNumber` string, required — Bank account number
  - `accountType` 'CHECKING' | 'SAVINGS' — Bank account type
  - `telephoneBankingPin` string — The telephone banking pin associated with the user's account

## Response `201`

Successful response

- CreateBankAccountResponse
  - `status` ResponseStatus, required
    - `code` number
    - `desc` string
    - `messages` Message[]
      - `desc` string, required
      - `type` 'ERROR' | 'WARN' | 'INFO'
  - `data` CreateBankAccountResponseData, required
    - `bankAccountId` string, required — Id of the created bank account
    - `userId` string, required — The id of the user for which the bank account was created
    - `accountNumberLastFourDigits` string, required — Bank account number's last 4 digits
    - `accountType` 'CHECKING' | 'SAVINGS' — Bank account type
    - `createdOn` number, required — Bank account created on timestamp
    - `updatedOn` number, required — Bank account updated on timestamp
    - `capabilities` CapabilityMatrix, required
      - `payments` PaymentsCapability
        - `billPayment` Capability, required
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
        - `pushToCard` Capability
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
        - `receiveOnlyPayment` Capability
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
      - `data` DataCapability
        - `realtimeBalance` Capability, required
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
        - `payoffSummary` Capability
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
        - `liabilityGroupPayoffQuote` Capability
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
        - `statementSummary` Capability
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.
        - `annualPercentageRate` Capability
          - `availability` 'NOT_SUPPORTED' | 'SUPPORTED' | 'FIELD_ERROR', required — The availability status of a capability
          - `fieldErrors` FieldError[] — Field-level errors if applicable.
            - `field` string, required — The field associated with the error.
            - `error` string, required — The reason for the error.
          - `description` 'INSTITUTION_NOT_SUPPORTED' | 'INSTITUTION_DISABLED' | 'REFRESH_EXHAUSTED' | 'NOT_PRIMARY_ACCOUNT_HOLDER' | 'ACCOUNT_TERMINATED' | 'CLOSED_ACCOUNT_NO_BALANCE' | 'CLOSED_ACCOUNT' | 'ACCOUNT_NUMBER_VERIFICATION_FAILED' — Description of why the capability is not supported, if applicable.
          - `nextEligibleRefreshOn` number — The earliest timestamp that the capability will be available, if applicable.
          - `liabilityGroupId` string — Unique identifier of the liability group for the capability.

## Other responses

- `400` — Bad Request
- `409` — Conflict

---

[API](https://skmtc.dev/spinwheel/apis/discover.md) · [All operations](https://skmtc.dev/spinwheel/apis/discover/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/spinwheel/discover/revisions/55b90a2e1dd4/schema)
