---
title: "Update an item"
method: PUT
path: "/companies/{companyId}/items/{itemId}"
tags: ["items"]
---

# Update an item

`PUT /companies/{companyId}/items/{itemId}`

## Request

- Base URL: `https://api.bokio.se/v1`
- URL: `https://api.bokio.se/v1/companies/{companyId}/items/{itemId}`
- Auth: HTTP bearer

Update an existing item for the company.

**Scope:** `items:write`

## Request body

- union
  - object
    - `id` string, uuid, nullable: Should not be set for new items
    - `description` string, required
    - `itemType` 'salesItem', required
    - `productType` 'goods' | 'services', required
    - `unitType` 'unspecified' | 'piece' | 'hour' | 'day' | 'month' | 'kilogram' | 'gram' | 'liter' | 'meter' | 'centimeter' | 'millimeter' | 'meterSquared' | 'meterCubic' | 'mile' | 'kilometer' | 'gigabyte' | 'hectar' | 'words' | 'year' | 'week' | 'minute' | 'megabyte' | 'ton' | 'custom', required: When set to `custom`, `customUnitType` is required; otherwise `customUnitType` must be omitted or null.
    - `customUnitType` string, nullable: Custom sales unit text. Required when `unitType` is `custom`; must be omitted or null otherwise.
    - `unitPrice` number, double, required
    - `taxRate` number, double, required
    - `bookkeepingAccountNumber` integer, nullable: The bookkeeping account number for this item. If not set, the account will be automatically selected based on the item productType, taxRate, customer and company settings.
  - object
    - `id` string, uuid, nullable: Should not be set for new items
    - `description` string, required
    - `itemType` 'descriptionOnlyItem', required

## Response `200`

Item updated

- union
  - object
    - `id` string, uuid, nullable: Should not be set for new items
    - `description` string, required
    - `itemType` 'salesItem', required
    - `productType` 'goods' | 'services', required
    - `unitType` 'unspecified' | 'piece' | 'hour' | 'day' | 'month' | 'kilogram' | 'gram' | 'liter' | 'meter' | 'centimeter' | 'millimeter' | 'meterSquared' | 'meterCubic' | 'mile' | 'kilometer' | 'gigabyte' | 'hectar' | 'words' | 'year' | 'week' | 'minute' | 'megabyte' | 'ton' | 'custom', required: When set to `custom`, `customUnitType` is required; otherwise `customUnitType` must be omitted or null.
    - `customUnitType` string, nullable: Custom sales unit text. Required when `unitType` is `custom`; must be omitted or null otherwise.
    - `unitPrice` number, double, required
    - `taxRate` number, double, required
    - `bookkeepingAccountNumber` integer, nullable: The bookkeeping account number for this item. If not set, the account will be automatically selected based on the item productType, taxRate, customer and company settings.
  - object
    - `id` string, uuid, nullable: Should not be set for new items
    - `description` string, required
    - `itemType` 'descriptionOnlyItem', required

## Other responses

- `400`: Missing required information

## Changes

- **2026-11-03** `9395020f3da2`: 1 warning, 3 info
  - added the new `custom` enum value to the `oneOf[subschema #1: item]/oneOf[subschema #1: salesItem]/unitType` response property for the response status `200`
  - added the new optional request property `oneOf[subschema #1: item]/oneOf[subschema #1: salesItem]/customUnitType`
  - added the new `custom` enum value to the request property `oneOf[subschema #1: item]/oneOf[subschema #1: salesItem]/unitType`
  - added the optional property `oneOf[subschema #1: item]/oneOf[subschema #1: salesItem]/customUnitType` to the response with the `200` status

[Operation history](https://skmtc.dev/bokio/apis/company-api/changes/companies/:companyId/items/:itemId/put.md)

---

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