Skip to main content

Adjust Store Product Inventory

Incrementally adjust the stock quantity of a store product. Use positive values to add stock and negative values to reduce stock.

This endpoint only works for products using group inventory tracking. For products using item tracking, manage individual inventory items instead.

Endpointโ€‹

POST /v1/store-products/{id}/inventory

Authenticationโ€‹

Requires an API key with the store:write scope.

Parametersโ€‹

ParameterTypeLocationDescription
idintegerpathThe store product ID

Request Bodyโ€‹

FieldTypeRequiredDescription
quantity_changeintegerYesAmount to adjust by (positive to add, negative to remove)
variation_idintegerConditionalThe variation to adjust. Required when the product has variations โ€” see the note below. Must belong to this product.
location_idintegerNoThe location to stock. Must belong to your supplier. Defaults to your default location when omitted.
reasonstringNoReason for the adjustment (max 255 characters, default: "API adjustment")
Variation products require variation_id

A variation product's stock lives on its variations โ€” the parent product's stock_quantity is the sum of them. Omitting variation_id for such a product returns a 422 inventory_error rather than silently adjusting nothing.

Call Get Store Product to list the variations and their IDs. Each call adjusts one variation at one location, so stock several combinations with one call each.

Responseโ€‹

Success (200 OK)โ€‹

{
"data": {
"product_id": 1,
"variation_id": 12,
"new_variation_stock": 10,
"new_stock_quantity": 35
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-02-13T12:00:00+00:00"
}
}

new_variation_stock is the adjusted variation's new total across all locations, or null when the product has no variations. new_stock_quantity is the product total โ€” for a variation product that is the sum across every variation.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks store:write scope
404resource_not_foundStore product does not exist
422inventory_not_trackedProduct does not have inventory tracking enabled
422item_trackedProduct uses item-level tracking -- use the inventory items endpoints instead
422inventory_errorvariation_id omitted for a product that has variations, or the location does not belong to your supplier
422validation_errorInvalid request body
note

If an adjustment would result in negative stock, the quantity is clamped to 0 rather than returning an error. The response will show new_stock_quantity: 0.

tip

To set stock to an exact value (rather than adjusting incrementally), use the Update Store Product endpoint with the stock_quantity field.

Example Requestsโ€‹

Add stockโ€‹

curl -X POST "https://app.equipdash.com/api/v1/store-products/1/inventory" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"quantity_change": 10,
"reason": "Restocked from supplier delivery"
}'

Remove stockโ€‹

curl -X POST "https://app.equipdash.com/api/v1/store-products/1/inventory" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"quantity_change": -3,
"reason": "Damaged items written off"
}'

Add stock to a specific variation at a specific locationโ€‹

curl -X POST "https://app.equipdash.com/api/v1/store-products/1/inventory" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"quantity_change": 10,
"variation_id": 12,
"location_id": 3,
"reason": "Restocked from supplier delivery"
}'