---
title: "Update a consignment"
method: PUT
path: "/consignments/{consignment_id}"
tags: ["Consignments"]
---

# Update a consignment

`PUT /consignments/{consignment_id}`

Updates the given consignment.

If the type is SUPPLIER then:

- Cannot change from `SUPPLIER` to a different consignment type
- `SUPPLIER` workflow: `OPEN` -> `SENT` -> `DISPATCHED` -> `RECEIVED`
- Can be `CANCELLED` at any time, except from `RECEIVED`
- Cannot update a `SUPPLIER` consignment that has the status `RECEIVED` or `CANCELLED`
- Cannot update status if there are no products in the order
- At least one product should have non-zero received quantity before updating to `RECEIVED`

🔒 Requires: One of the following scopes:
- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments
- `consignments:write:stock_transfer` scope for `OUTLET` consignments
- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments

## Path parameters

- `consignment_id` string, uuid, required

## Request body

- ConsignmentRequest
  - `data` Consignment, required
    - `consignment_date` string, nullable — 11-28T19:02:15+00:00 (timestamp) - Consignment creation date.
    - `created_at` string, nullable — Creation timestamp in UTC.
    - `deleted_at` string, nullable — Deletion timestamp in UTC.
    - `due_at` string, nullable — 11-30T19:08:541+00:00 (timestamp) - Due date.
    - `id` string, uuid — Auto-generated object ID.
    - `name` string, required — Tue 29 Nov 2016 (string) - Consignment name. For orders, the note field in the UI will be the name value.
    - `outlet_id` string, uuid, required — A valid ID of an outlet where stock will be received.
    - `received_at` string, nullable — 11-30T19:08:541+00:00 (timestamp) - The date when consignment was received.
    - `reference` string, nullable — Order number.+ `total_count_gain` (number)
    - `source_outlet_id` string, uuid, nullable — A valid ID of an outlet where stock will come from. **Stock transfers only**.
    - `status` 'OPEN' | 'SENT' | 'DISPATCHED' | 'RECEIVED' | 'STOCKTAKE_IN_PROGRESS' | 'STOCKTAKE_SCHEDULED' | 'STOCKTAKE_IN_PROGRESS_PROCESSED' | 'STOCKTAKE_COMPLETE' | 'CLOSED' | 'CANCELLED' — * Supplier Order: One of `OPEN`, `SENT`, `DISPATCHED`, `RECEIVED`, `CANCELLED` * Outlet Transfer: One of `OPEN`, `SENT`, `RECEIVED`, `CANCELLED` * Return Order: One of `OPEN`, `SENT`, `CANCELLED` * Stocktake: One of `STOCKTAKE_SCHEDULED`, `STOCKTAKE_IN_PROGRESS`, `STOCKTAKE_IN_PROGRESS_PROCESSED`, `STOCKTAKE_COMPLETE`, `CLOSED`, `CANCELLED` This is not a definitive list and may be extended in future
    - `supplier_id` string, uuid, nullable — a valid supplier ID.
    - `supplier_invoice` string, nullable — Supplier invoice number.
    - `total_cost_gain` number, double, nullable — The cost of items over the expected level.
    - `total_cost_loss` number, double, nullable — The cost of items below the expected level.
    - `total_count_gain` number, double, nullable — The number of items over the expected level.
    - `total_count_loss` number, double, nullable — The number of items below the expected level.
    - `type` 'SUPPLIER' | 'OUTLET' | 'STOCKTAKE' | 'RETURN', required — One of `SUPPLIER`, `OUTLET`, `STOCKTAKE`, `RETURN`.
    - `updated_at` string — Last update timestamp in UTC.
    - `version` integer — Auto-incrementing object version number.

## Response `200`

- ConsignmentResponse
  - `data` Consignment
    - `consignment_date` string, nullable — 11-28T19:02:15+00:00 (timestamp) - Consignment creation date.
    - `created_at` string, nullable — Creation timestamp in UTC.
    - `deleted_at` string, nullable — Deletion timestamp in UTC.
    - `due_at` string, nullable — 11-30T19:08:541+00:00 (timestamp) - Due date.
    - `id` string, uuid — Auto-generated object ID.
    - `name` string, required — Tue 29 Nov 2016 (string) - Consignment name. For orders, the note field in the UI will be the name value.
    - `outlet_id` string, uuid, required — A valid ID of an outlet where stock will be received.
    - `received_at` string, nullable — 11-30T19:08:541+00:00 (timestamp) - The date when consignment was received.
    - `reference` string, nullable — Order number.+ `total_count_gain` (number)
    - `source_outlet_id` string, uuid, nullable — A valid ID of an outlet where stock will come from. **Stock transfers only**.
    - `status` 'OPEN' | 'SENT' | 'DISPATCHED' | 'RECEIVED' | 'STOCKTAKE_IN_PROGRESS' | 'STOCKTAKE_SCHEDULED' | 'STOCKTAKE_IN_PROGRESS_PROCESSED' | 'STOCKTAKE_COMPLETE' | 'CLOSED' | 'CANCELLED' — * Supplier Order: One of `OPEN`, `SENT`, `DISPATCHED`, `RECEIVED`, `CANCELLED` * Outlet Transfer: One of `OPEN`, `SENT`, `RECEIVED`, `CANCELLED` * Return Order: One of `OPEN`, `SENT`, `CANCELLED` * Stocktake: One of `STOCKTAKE_SCHEDULED`, `STOCKTAKE_IN_PROGRESS`, `STOCKTAKE_IN_PROGRESS_PROCESSED`, `STOCKTAKE_COMPLETE`, `CLOSED`, `CANCELLED` This is not a definitive list and may be extended in future
    - `supplier_id` string, uuid, nullable — a valid supplier ID.
    - `supplier_invoice` string, nullable — Supplier invoice number.
    - `total_cost_gain` number, double, nullable — The cost of items over the expected level.
    - `total_cost_loss` number, double, nullable — The cost of items below the expected level.
    - `total_count_gain` number, double, nullable — The number of items over the expected level.
    - `total_count_loss` number, double, nullable — The number of items below the expected level.
    - `type` 'SUPPLIER' | 'OUTLET' | 'STOCKTAKE' | 'RETURN', required — One of `SUPPLIER`, `OUTLET`, `STOCKTAKE`, `RETURN`.
    - `updated_at` string — Last update timestamp in UTC.
    - `version` integer — Auto-incrementing object version number.

---

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