InventoryAdjustments

Create a new inventory adjustment

Records a stock adjustment — a positive or negative change to the quantity of a product at a location. The adjustment is timestamped and attributed to the calling user for audit.

post/inventory/adjustments

Request body

product_idstring uuid required

Product whose stock level is being adjusted. The product must be configured on the same brand as the caller; cross-brand adjustments are rejected with 422.

quantityinteger required

Signed change to the on-hand stock count. Positive values increase stock (e.g. a receipt or correction upwards); negative values decrease it (e.g. waste, transfers out).

reason_codestring

Machine-readable reason for the adjustment, used for reporting. Common values are waste, transfer, correction and theft. Free text — define your own codes as needed.

reason_descriptionstring

Optional human-readable explanation that staff and auditors see alongside the adjustment. Use this to add detail that the reason_code doesn't capture.

location_idinteger nullable

InventoryLocation the stock is moving from. Optional for sites that don't track per-location stock; required when the product is location-aware.

site_idstring uuid

Site the adjustment is recorded against. Used for site-level inventory reporting and to enforce the caller's site permissions.

Example request

{
  "product_id": "5f8a1b2c-9d3e-4a5b-8c6d-7e8f9a0b1c2d",
  "quantity": -3,
  "reason_code": "waste",
  "reason_description": "Damaged in transit — three units written off.",
  "location_id": 12,
  "site_id": "5dcb47800000000000000010"
}

Response

A single inventory adjustment.

Example response

{
  "data": {
    "id": "10000000-0000-0000-0000-000000000000",
    "organisation_id": "20000000-0000-0000-0000-000000000000",
    "site_id": "30000000-0000-0000-0000-000000000000",
    "product_id": "30000000-0000-0000-0000-000000000000",
    "created_at": "2019-01-15T12:00:00.000Z"
  }
}

Changes