Pricing
Base price, special price with date range and customer group pricing — with index consistency for promotions and countdown.
Overview
Pricing flows were hardened for higher consistency on base, special and group prices. Changes to special_price trigger the selective reprocessing needed to keep the Countdown index coherent.
On top of the update endpoints, the /api2/price route now also serves a read-only lookup of a product price, with an explicit store and customer group context.
Product price lookup New
Read-only operation: it does not change prices, does not enqueue anything and does not trigger reindexing.
Fetch the price of a product by SKU or ID, in the requested context.
GET /api2/price?id=3291&type=sku
Authorization: Bearer {access_token}
GET /api2/price?id=2074&type=id
Authorization: Bearer {access_token}
GET /api2/price?id=3291&type=sku&store_id=1&customer_group_id=0
Authorization: Bearer {access_token}
Parameters
type.id is interpreted: id or sku.0.Response example
{
"success": true,
"product_id": 2074,
"sku": "3291",
"type": "simple",
"context": {
"store_id": 1,
"website_id": 1,
"customer_group_id": 0,
"store": {"id": 1, "code": "default", "name": "Português (Brasil)"},
"website": {"id": 1, "code": "cafe", "name": "Main Website"},
"customer_group": {"id": 0, "name": "Guest"}
},
"pricing": {
"price": "28.9000",
"special_price": "25.9000",
"final_price": "25.9000",
"currency": "BRL",
"special_from_date": "2025-12-01",
"special_to_date": null,
"group_prices": [],
"tier_prices": [],
"tax_class_id": 0,
"tax_class": {"id": 0, "name": "None"},
"msrp_enabled": "use_config",
"msrp_display_actual_price_type": "use_config",
"msrp": null,
"desconto_boleto": null
}
}
Pricing concepts
special_to_date
YYYY-MM-DD format. They return null when no value is set.tax_class
{"id": 0, "name": "None"}.yes, no and use_config.final_price.Reading without reindexing
The lookup is read-only and does not force reindexing. Therefore final_price reflects the latest valid state of the platform indexes.
Group and tier prices
Entries in group_prices keep the original identifiers and add the readable entities whenever applicable.
{
"website_id": 1,
"website": {"id": 1, "code": "cafe", "name": "Main Website"},
"customer_group_id": 3,
"customer_group": {"id": 3, "name": "Group name"},
"all_groups": false,
"price": "25.0000"
}
website_id=0 or the price applies to all groups, the matching object may be null, since there is no concrete entity to represent.tier_prices carries the tiers based on quantity and/or group. Items may contain website_id, website, customer_group_id, customer_group, all_groups, qty and price.
Configurable products
configurable products may include the range available in the price index for the requested context.
{
"min_final_price": "489.9000",
"max_final_price": "489.9000"
}
HTTP responses
| Scenario | Status |
|---|---|
| Success | 200 |
| Invalid parameters | 400 |
| Missing authentication or invalid token | 401 |
| Not allowed | 403 |
| Product not found | 404 |
| Internal failure | 500 |
Update the product base price.
{
"type": "sku",
"sku": "novo_produto",
"price": 250.00
}
Update special price with date range.
{
"type": "sku",
"sku": "novo_produto",
"special_price": 23233.99,
"special_from_date": "2025-09-10",
"special_to_date": "2025-10-01"
}
Update customer group prices.
{
"type": "sku",
"sku": "novo_produto",
"group_prices": [
{"cust_group": 2, "price": 533},
{"cust_group": 1, "price": 350}
]
}
Operational note
When the batch involves special_price and related special dates, the pricing routine also performs the selective reprocessing needed to keep the Countdown index consistent.