#
4. Update Price
Bulk Pricing Update — Async batch update of price/special price by sku or id. Emits events; track with requestId/batchId. Response includes acceptedRows, errors, and summary.
#
Rules
Identifiers: use
skufor variant products;idis allowed only for simple products. Ifidpoints to a product with variants, it is rejected.Target: pricing applies at the resolved level (
variantvia SKU,productviaidfor simple products).Async only: requests are queued; no synchronous price changes.
Overview
HMACASYNC
At a glance
- Runs asynchronously (batched).
- Bulk import in batches.
- Contains variant items detail.
- Track via
requestId/batchId.
- Auth
- HMAC Partner
- Method
PATCH
#
Path
https://partners-api.tocobagus.net/api/v1
/partner/stores/products/prices
#
Request
Query parameters: None.
#
Required Headers
#
Request Payload
Content-Type:
application/json
#
Example Body Payload
{
"items": [
{
"id": "015c28c3-b48c-4e1f-a8a1-9a1cc07022c5",
"price": 100000,
"specialPrice": 85000
},
{
"sku": "ABC",
"price": 10000,
"specialPrice": null
},
{
"sku": "SKU-GRY-XL",
"price": 120000,
"specialPrice": 100000
}
]
}
#
Example Request
curl -X PATCH "http:///partner/stores/products/prices" \
-H "Content-Type: application/json" \
-H "x-signature: bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80" \
-H "x-partner-client-id: 2025112012475048491498" \
-H "x-store-client-id: 638765489981529612855" \
-H "x-store-token: stkn__6AbJF05mjvxh7sh" \
-H "x-timestamp: 1758100350458" \
--data '{"items":[{"id":"015c28c3-b48c-4e1f-a8a1-9a1cc07022c5","price":100000,"specialPrice":85000},{"sku":"ABC","price":10000,"specialPrice":null},{"sku":"SKU-GRY-XL","price":120000,"specialPrice":100000}]}'
const qs = new URLSearchParams({});
const url = "http:///partner/stores/products/prices" + (qs.toString() ? "?" + qs.toString() : "");
const res = await fetch(url, {
method: "PATCH",
headers: {
"x-signature": "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80",
"x-partner-client-id": "2025112012475048491498",
"x-store-client-id": "638765489981529612855",
"x-store-token": "stkn__6AbJF05mjvxh7sh",
"x-timestamp": "1758100350458"
},
body: JSON.stringify({"items":[{"id":"015c28c3-b48c-4e1f-a8a1-9a1cc07022c5","price":100000,"specialPrice":85000},{"sku":"ABC","price":10000,"specialPrice":null},{"sku":"SKU-GRY-XL","price":120000,"specialPrice":100000}]})
});
const json = await res.json();
console.log(json);
qs := url.Values{}
u := "http:///partner/stores/products/prices"
if q := qs.Encode(); q != "" { u = u + "?" + q }
req, _ := http.NewRequest("PATCH", u, bytes.NewBufferString("{\"items\":[{\"id\":\"015c28c3-b48c-4e1f-a8a1-9a1cc07022c5\",\"price\":100000,\"specialPrice\":85000},{\"sku\":\"ABC\",\"price\":10000,\"specialPrice\":null},{\"sku\":\"SKU-GRY-XL\",\"price\":120000,\"specialPrice\":100000}]}"))
req.Header.Set("x-signature", "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80")
req.Header.Set("x-partner-client-id", "2025112012475048491498")
req.Header.Set("x-store-client-id", "638765489981529612855")
req.Header.Set("x-store-token", "stkn__6AbJF05mjvxh7sh")
req.Header.Set("x-timestamp", "1758100350458")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(string(b))
var client = java.net.http.HttpClient.newHttpClient();
var req = java.net.http.HttpRequest.newBuilder()
.uri(java.net.URI.create("http:///partner/stores/products/prices"))
.header("Content-Type","application/json")
.header("x-signature", "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80")
.header("x-partner-client-id", "2025112012475048491498")
.header("x-store-client-id", "638765489981529612855")
.header("x-store-token", "stkn__6AbJF05mjvxh7sh")
.header("x-timestamp", "1758100350458")
.method("PATCH", java.net.http.HttpRequest.BodyPublishers.ofString("{\"items\":[{\"id\":\"015c28c3-b48c-4e1f-a8a1-9a1cc07022c5\",\"price\":100000,\"specialPrice\":85000},{\"sku\":\"ABC\",\"price\":10000,\"specialPrice\":null},{\"sku\":\"SKU-GRY-XL\",\"price\":120000,\"specialPrice\":100000}]}"))
.build();
var res = client.send(req, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
#
Responses
#
Example Responses
{
"success": true,
"message": "Price update request accepted",
"requestId": "5df905d2-eaa4-40ab-83ec-14c83ab1a1b2",
"meta": {
"timestamp": "2026-02-04T20:00:53.729Z",
"dispatch": true
},
"data": {
"batchId": "5df905d2-eaa4-40ab-83ec-14c83ab1a1b2",
"summary": {
"total": 3,
"failed": 1,
"pending": 2
},
"acceptedRows": [
{
"target": "product",
"id": "015c28c3-b48c-4e1f-a8a1-9a1cc07022c5",
"rowIndex": 0,
"externalId": "bee2f8e5-ed8c-4b8e-97dc-208e45521909"
},
{
"target": "variant",
"id": "0b155cf3-c610-486f-b92b-d544ce45b28f",
"rowIndex": 2,
"sku": "SKU-GRY-XL"
}
],
"errors": [
{
"code": "PRD_016",
"message": "Invalid SKU",
"rowIndex": 1,
"sku": "ABC",
"details": {
"retryable": false,
"context": {
"reason": "Product SKU not found"
}
}
}
]
}
}
{
"success": false,
"error": {
"code": "AUTH_010",
"message": "Invalid signature",
"details": {
"timestamp": "2026-02-04T19:53:07.066Z",
"hint": "Invalid HMAC signature",
"context": {
"partnerClientId": "2025112512510620439726"
}
}
},
"requestId": "6cb51928-85b8-467b-8431-a211c96d77a1"
}
#
Dictionary
None for this endpoint.
#
Notes
None for this endpoint.