API ReferenceInventory

Raise or lower prices by a percentage or an amount

POST /rest/v1/inventory/price_adjustment

POST
/inventory/price_adjustment

Re-prices EVERY variant of up to 100 products. percentage: price × (1 + value/100); absolute: price + value (store currency); negative values lower prices. With rounding, results are rounded to the nearest whole amount minus 0.01 (e.g. 17.62 → 17.99). The new prices are pushed to every channel the product is live on (channel price rules still apply on top).

One operation result per variant and per live channel (like POST /inventory/batch: pending, then succeeded or failed for that channel) carries previous_price and price, the undo record. Send the previous prices back with POST /inventory/batch. A product whose new price would go below 0.01 is left untouched (price_below_minimum); unknown products fail per item. Requires inventory:write.

AuthorizationBearer <token>

Authorization: Bearer nbl_live_... (or nbl_test_... for test mode). Test-mode writes are validated and simulated but never persisted and never touch channels; simulated results are marked simulated.

In: header

Header Parameters

Idempotency-Key?string

Unique client-generated key (max 255 chars), stored 24h.

Lengthlength <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/inventory/price_adjustment" \  -H "Content-Type: application/json" \  -d '{    "product_ids": [      "prod_66a1f0",      "prod_66a1f1"    ],    "mode": "percentage",    "value": -15,    "rounding": true  }'
{  "id": "op_8fd2c1",  "object": "operation",  "type": "string",  "status": "pending",  "resource_type": "string",  "resource_id": "string",  "results": [    {      "channel_account_id": "string",      "product_id": "string",      "listing_id": "string",      "sku": "string",      "variant_id": "string",      "previous_price": "19.90",      "price": "19.90",      "status": "pending",      "error": {        "code": "string",        "message": "string",        "details": {}      }    }  ],  "import": {    "source": "channel",    "channel_account_id": "string",    "filters": {},    "warnings": [      "string"    ],    "processed": 0,    "total": 0,    "created": 0,    "updated": 0,    "unchanged": 0,    "linked": 0,    "not_imported": 0,    "requires_attention": 0,    "error": "string",    "undone_at": "2019-08-24T14:15:22Z",    "undo": {      "removed": 0,      "unlinked": 0,      "kept": {        "live_on_a_channel": 0,        "modified_after_import": 0      }    }  },  "created_at": "2019-08-24T14:15:22Z",  "completed_at": "2019-08-24T14:15:22Z"}

Last updated on October 16, 2026

Need help?

Email us and a human replies, usually within one business day.