> ## Documentation Index
> Fetch the complete documentation index at: https://docs.r28.ai/charter/llms.txt
> Use this file to discover all available pages before exploring further.

# inventory_adjust_quantities

> Move stock by a relative amount: `delta` of 5 adds five, -5 removes five. This is not a way to set an absolute count. Every change must also carry `change_from_quantity`, the count you expect to be overwriting — read it with `variant_inventory_level` immediately before — so two adjustments racing each other cannot both win. `committed` is never writable, and `on_hand` cannot be named here although adjusting `available` moves it by the same delta. The result reports the deltas applied and leaves `quantity_after_change` null, so read the level back for the new count. Since 2026-04 adjusting an item that is not stocked at the location succeeds and creates an inactive level, so a success does not prove the stock is sellable.

<div className="tool-route"><span className="tool-row-method" data-method="POST">POST</span><code>{"/admin/api/2026-07/graphql.json"}</code></div>

```python shopify_inventory_adjust_quantities.py theme={null}
from charter.packs import shopify

result = await shopify.inventory_adjust_quantities.ainvoke({"variables": ...})
```

<Note>
  Posts a GraphQL document to `POST /admin/api/2026-07/graphql.json`, as every tool in this pack does.
</Note>

## Body

<div className="reference-table">
  | Field                                                             | Type                                                                                | Description              |
  | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------ |
  | `variables` <span className="required" title="required">\*</span> | [InventoryAdjustVariables](/charter/charter/packs/shopify/objects#inventoryadjustvariables) | The adjustment to apply. |
</div>
