---
title: "Update employee bank account"
method: PUT
path: "/v1/employee/bank-account"
tags: ["Employee Bank Account"]
---

# Update employee bank account

`PUT /v1/employee/bank-account`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/employee/bank-account`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `bank_account:write`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `employments`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:write`

Upserts the authenticated employee's bank account details.

This endpoint requires and returns country-specific data. The exact fields vary depending on which
country the authenticated employee's employment is in. Query the
[Show form schema](#tag/Countries/operation/get_show_form_country) endpoint with `bank_account_details`
as the form name to discover the schema for a given country.

## Authentication

This endpoint accepts any one of the following token types:

- **Employee-scoped access token** (`OAuth2Assertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by the employee through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).

## Scopes

Any one of the scopes in a token type's row is enough. `all:write` works too.

| Token type | Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|---|
| Employee-scoped access token | Manage employments (`employments`) | - | Manage bank accounts (`bank_account:write`) |
| Company-scoped access token | Manage employments (`employments`) | - | - |

## Query parameters

- `bank_account_details_json_schema_version` union
  - integer: Specific version number
  - 'latest': Use latest version

## Request body

- EmploymentBankAccountDetailsParams: Employment bank account details params.
  - `bank_account_details` object, required: Bank account information. As its properties may vary depending on the country, you must query the [Show form schema](#tag/Countries/operation/get_show_form_country) endpoint passing the country code and `bank_account_details` as path parameters.

## Response `200`

Success

- EmploymentDetailsOnlyResponse: Response containing only the updated details struct plus base employment fields (id, status, type, updated_at, user_status). Exactly one of the details properties is present per response.
  - `data` object, required
    - `employment` object
      - `address_details` object, nullable: Home address information. Its properties may vary depending on the country. Null if the employee has not submitted their address yet.
      - `administrative_details` object: Administrative information. Its properties may vary depending on the country.
      - `bank_account_details` object[]
      - `basic_information` object: Basic information. Its properties may vary depending on the country. When present, `login_email` indicates which address the employee logs in with: `"personal"` or `"work"`.
      - `billing_address_details` object: Billing address information. Its properties may vary depending on the country.
      - `contract_details` object: Contract details information. Its properties may vary depending on the country.
      - `contract_origin` 'remote_contract' | 'custom_remote_contract' | 'provided_by_customer', nullable: Origin of the employment contract. Returned by the basic information endpoint.
      - `emergency_contact_details` object, nullable: Emergency contact information. Its properties may vary depending on the country. Null if the employee has not submitted their emergency contact yet.
      - `id` string, required: The unique identifier (UUID) of the employment.
      - `personal_details` object, nullable: Personal details information. Its properties may vary depending on the country. Null if the employee has not submitted their personal details yet.
      - `pricing_plan_details` object: Pricing plan information.
      - `status` 'active' | 'created' | 'created_awaiting_reserve' | 'created_reserve_paid' | 'initiated' | 'invited' | 'pending' | 'pre_hire' | 'review' | 'job_title_review' | 'pending_post_self_enrollment_actions' | 'archived' | 'deleted', required: The current status of the employment record. - `active`: The employee is fully onboarded and actively working. - `created`: The employment has been created but onboarding has not started. - `pre_hire`: A pre-hire employment record, created before formal onboarding begins. - `created_awaiting_reserve`: The employment is created but waiting for a risk reserve deposit to be paid. - `created_reserve_paid`: The risk reserve has been paid and the employment can proceed with onboarding. - `initiated`: Onboarding has been started by the employer. - `invited`: The employee has been invited to complete their self-enrollment on Remote. - `pending`: The employment is pending review or further action before it can become active. - `review`: The employment is under review by Remote (e.g., contract or compliance review). - `job_title_review`: The job title is pending verification by Remote; once approved, the employment returns to `created`. - `pending_post_self_enrollment_actions`: Self-enrollment is complete, but some actions are still missing before the employment can be activated. - `archived`: The employment has been terminated or offboarded. - `deleted`: The employment record has been deleted.
      - `type` 'employee' | 'contractor' | 'direct_employee' | 'global_payroll_employee', required: The type of employment.
      - `updated_at` string, required: The timestamp when this employment record was last updated.
      - `user_status` 'active' | 'created' | 'invited' | 'initiated' | 'cancelled' | 'inactive' | 'deleted', required: The status of the user account associated with this employment. - `active`: The user account is active and the user can log in. - `created`: The user account has been created but the user hasn't been invited yet. - `invited`: The user has been invited but has not accepted the invitation yet. - `initiated`: The user has been invited but has not completed registration. - `cancelled`: The user account was cancelled before activation. - `inactive`: The user account has been deactivated (e.g., after offboarding). - `deleted`: The user account has been deleted.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Unprocessable Entity

---

[API](https://skmtc.dev/remote-com/apis/employments.md) - [All operations](https://skmtc.dev/remote-com/apis/employments/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/employments/revisions/da61f6ebc73a?raw)
