---
title: "Save bookkeepers"
method: POST
path: "/v6/bookkeepers"
tags: ["Bookkeepers"]
---

# Save bookkeepers

`POST /v6/bookkeepers`

Save new (or update existing) bookkeepers

## Request body

- MultiParamBookkeeperPostDto
  - `data` BookkeeperPostDto[], required
    - `id` string — Id of the accountant, required when updating an existing accountant
    - `userId` string — Id of the user associated with the accountant
    - `email` string — Email address of the accountant
    - `firstName` string — First name of the accountant
    - `lastName` string — Last name of the accountant
    - `role` 'ADMIN' | 'ACCOUNTANT' | 'BOOKKEEPER' | 'SUPPORT' — Role of the accountant
    - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED' — Status of the accountant

## Response `200`

Success

- ResponseListMultiResponseBookkeeperGetDto
  - `result` 'SUCCESS' | 'FAILURE' — The result of the action performed.
  - `data` MultiResponseBookkeeperGetDto[] — The data generated by the action performed.
    - `result` 'SUCCESS' | 'FAILURE' — The result of the action performed.
    - `statusCode` 200 | 400 | 401 | 403 | 404 | 500 — The HTTP status code for the action performed.
    - `data` BookkeeperGetDto — The data generated by the action performed.
      - `id` string, required — Id of the accountant
      - `userId` string, required — Id of the user associated with the accountant
      - `email` string, required — Email address of the accountant
      - `firstName` string, required — First name of the accountant
      - `lastName` string, required — Last name of the accountant
      - `role` 'ADMIN' | 'ACCOUNTANT' | 'BOOKKEEPER' | 'SUPPORT', required — Role of the accountant
      - `status` 'ACTIVE' | 'INACTIVE' | 'REMOVED', required — Status of the accountant
    - `error` ErrorItem[]
      - `type` 'UNKNOWN_ERROR' | 'INVALID_TOKEN' | 'EXPIRED_TOKEN' | 'FORBIDDEN' | 'BAD_REQUEST' | 'JSON_ERROR' | 'DUPLICATE' | 'REQUIRED' | 'INVALID_VALUE' | 'NOT_MODIFIABLE' | 'INVALID_FORMAT' | 'NOT_FOUND' — The type of the error. Safe for programmatic use.
      - `message` string — A human-readable message providing more details about the error. Safe for displaying to a user.
      - `param` string — If the error is parameter-specific, the parameter related to the error. This can be used to display a message near the correct form field.
  - `error` ErrorItem[]
    - `type` 'UNKNOWN_ERROR' | 'INVALID_TOKEN' | 'EXPIRED_TOKEN' | 'FORBIDDEN' | 'BAD_REQUEST' | 'JSON_ERROR' | 'DUPLICATE' | 'REQUIRED' | 'INVALID_VALUE' | 'NOT_MODIFIABLE' | 'INVALID_FORMAT' | 'NOT_FOUND' — The type of the error. Safe for programmatic use.
    - `message` string — A human-readable message providing more details about the error. Safe for displaying to a user.
    - `param` string — If the error is parameter-specific, the parameter related to the error. This can be used to display a message near the correct form field.

## Other responses

- `207` — Some bookkeepers failed to save. See response body for error details.
- `400` — All bookkeepers failed to save.
- `401` — Not authenticated
- `403` — Not authorized
- `404` — Endpoint not found
- `500` — Internal server error

---

[API](https://skmtc.net/tight/apis/tight-api.md) · [All operations](https://skmtc.net/tight/apis/tight-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tight/tight-api/revisions/e9f0790a89af/schema)
