Update price only
PATCH/v1/products/{id}/price
scope products.write
The cheap path for the field ERPs push most often — one UPDATE, no attribute or shipping rewrite. Amount in minor units.
Request body#
| Field | Type | Required | Description |
|---|---|---|---|
price | integer | optional | The new price in minor units — 179900 is 1 799,00. A non-negative integer; anything else is invalid_price (400). {"price": {"amount": 179900}} is accepted too, so the same shape as POST /v1/products works here. |
stock | integer | optional | This route accepts stock as well, so one call can move both. At least one of the two must be present, or you get nothing_to_update (400). |
Example
{
"price": 179900
}Response#
Example
{
"id": 237224,
"external_id": "ERP-1001",
"sku": "MTB-29-001",
"gtin": null,
"mpn": null,
"ean": null,
"title": "Bicicleta MTB Hardtail 29 inch",
"description": "A hardtail mountain bike in very good condition, barely used.",
"category_id": 4291,
"status": "active",
"is_reviewed": true,
"price": {
"amount": 249900,
"currency": "RON",
"negotiable": true
},
"stock": 4,
"shipping": {
"ship_with_us": true,
"free_shipping": false,
"shipping_class": "bike",
"parcel_tier": "large",
"weight_kg": 14.5,
"width_cm": 80,
"height_cm": 120,
"length_cm": 180
},
"group_id": null,
"images": [
{
"id": 108876841,
"position": 0,
"path": "files/237224/mtb-front.jpg",
"source_url": null
}
],
"attributes": [
{
"field_id": 32,
"option_id": 226,
"value": null
}
],
"created_at": "2026-09-01T08:14:22Z",
"updated_at": "2026-09-11T16:02:51Z"
}