/app/{organizationId}/pricebook) and the Omni manage_price_book tool.
Price books do not change canonical product prices in Omni. They rewrite channel list price at publish/catalog time by platform (and optional store/country). A rule uses its buyer formula (expression) when one is set, and its markup percent (marginValue) otherwise.
Authentication
Send an OmniCommerce API key or OAuth client-credentials token:
OAuth clients must include the scope on the client. API keys created from organization settings receive all developer scopes by default.
Session-authenticated calls must include
organizationId in the query (GET) or JSON body (writes).
OpenAPI reference: API reference · Spec: openapi.json
List rules
Query parameters
Response
Create rule
Request body
Buyer formulas
expression computes the listed price from price, the catalog price. For BrandsGateway products the catalog price is the landed price that the seller formula wrote, not the supplier cost.
- Operators:
+ - * /, parentheses, and percentages (9%is0.09). CEILING(number, significance)rounds up to a multiple, as in Excel.IF(condition, value_if_true, value_if_false)with<,<=,>,>=,=,<>.CURRENCY(rate, "HKD")multiplies byrateand marks the result as that ISO 4217 currency. A formula can name one currency.
price * (1 - (9% + 2%) * (1 + 9%)) for a 100 → 88.01 Lazada payout. To list at a price that nets the catalog price, divide by that factor instead: price / (1 - (9% + 2%) * (1 + 9%)) lists 100 at 113.62. The preview response sets belowCatalogPrice: true when a formula lists below the catalog price in the same currency.
A formula must use price. Formulas that could not be evaluated (wrong argument counts, a comparison outside IF, an invalid currency code) are rejected with 400 when the rule is saved. If a saved formula still cannot price a product (for example it divides by zero or produces a price of 0 or less), publish and price updates for that listing fail instead of sending the catalog price.
Scope uniqueness: one rule per platform + storeId + country combination.
Returns 201 with { "rule": { ... } }.
Get / update / delete
storeId, country, marginValue, rounding, currency, expression, enabled). Send "expression": null to go back to markup percent. Platform cannot be changed after create.
Preview channel list price
ruleId forces a specific rule instead of most-specific matching.
Response
markupPercent is omitted, and currency is set when the formula uses CURRENCY. If the matched formula cannot price listPrice, the response carries formulaError and applied is false. With a forced ruleId, that case returns 400.
When no enabled rule matches, applied is false, source is canonical, and channelListPrice equals listPrice.
Matching priority
Most specific enabled rule wins for a given platform/store/country:- platform + store + country
- platform + store
- platform + country
- platform only
Related
- Workspace UI:
/app/{organizationId}/pricebook - Omni tool:
manage_price_book(default Omni tool) - Product base price writes:
POST /api/v1/sync(see API reference) or workspace product price update - Promotions (discounts/campaigns): Promotions API