---
title: "Apply a signed, relative stock movement to one (variant, outlet) tuple"
method: POST
path: "/v1/inventories/adjust"
tags: ["Inventories"]
---

# Apply a signed, relative stock movement to one (variant, outlet) tuple

`POST /v1/inventories/adjust`

## Request

- Base URL: `https://api.finalpos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.finalpos.com/v1/inventories/adjust`
- Auth: API key in header `x-api-key`

Applies a signed delta to the on-hand quantity of a single (variantId, outletId) tuple scoped to the API-key company. Negative deltas are booked as an EXTERNAL_SALE, positive as an EXTERNAL_RESTOCK; neither rejects on insufficient stock. `idempotencyKey` is required — a retry with the same key is a safe no-op. Returns the post-adjustment inventory state; advance your sync watermark from `quantity`. This is a routed sync-lane operation: it is only available when inventory writes are routed to the inventory service, and responds 501 Not Implemented otherwise.

## Request body

- AdjustInventoryDto
  - `variantId` string, required: Variant ID
  - `outletId` string, required: Outlet ID
  - `delta` number, required: Signed, non-zero stock movement. Negative decrements (booked as an EXTERNAL_SALE), positive increments (booked as an EXTERNAL_RESTOCK). Must be a non-zero integer.
  - `idempotencyKey` string, required: Caller-supplied idempotency key. REQUIRED: this endpoint exists for sync lanes, where a retry without a key would double-apply. The same key applied twice is a safe no-op on hub-api. Keys prefixed `sarnia:` are reserved for the FinalPOS sync lane.

## Response `200`

- AdjustInventoryResponseDto
  - `variantId` string, required: Variant ID
  - `outletId` string, required: Outlet ID
  - `quantity` number, required: On-hand quantity after the adjustment

## Other responses

- `400`
- `501`

---

[API](https://skmtc.dev/finalpos/apis/final-pos-public-api.md) · [All operations](https://skmtc.dev/finalpos/apis/final-pos-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/finalpos/apis/final-pos-public-api/revisions/6a6842dcb479?raw)
