Price overrides allow store associates to change the price of an individual item at checkout — higher or lower than the catalog price. Typical use cases include:
Correcting a promotion not applying correctly in the app
Handling incorrect pricebook data
Managing exchanges with already-applied promotions
Configuration and setup
Enabling price overrides
Configure these properties in cart_management_v2 via the Associate App Config API. See Manual Discounts.
Property | Description |
|---|---|
| Enables order-level manual discount |
| Enables item-level manual discount |
| Enables item-level price override |
Excluding products from price overrides
To prevent specific products from being overridden, set the price_override_exclusion_list via the Checkout Configuration API. This exclusion applies across all stores, catalogs, and pricebooks.
Configuring reason codes
Predefined reason codes can be set up so associates select a reason rather than entering free-form text. If no reason codes are configured, a free-text field (max 256 characters) is displayed instead.
Create: Use the create reason code method, specifying
codeandname(for example,dmgd/Damaged).Update: Use the Update reason code method.
Delete: Use the Delete reason codes method.
Note
Ensure the
Accept-Languageheader matches the locale set for the store. To display a free-text field instead, do not create a reason code for the store's locale.
Printing receipt templates
To print the correct overridden price on receipts, pull from the price_net field rather than price_catalog for items with price overrides applied. Apply this consistently across sales, exchange, and return receipt templates.
Using price overrides
Tap the item, then tap Price override.
Select a predefined reason code (or enter free-form text if no codes are configured).
Enter the new price and tap Apply.
To remove the price override, tap the item, then tap Remove discount.
Limitations
A manual discount must be removed before applying a price override, and vice versa.
Cart-level discounts can still be applied, but items with a price override are not affected by them.
The override does not change the catalog price — if the same item is added again, you must reapply the override.
ERP integration via the Event Stream
Triggering an event
When an in-store or endless aisle order is completed (including orders with price overrides), NewStore emits the order.opened event via the Event Stream.
Relevant payload fields
Field | Description |
|---|---|
| Original catalog price |
| Listed price |
| Price set by the associate override |
| Reason provided for the override |
| Item-level discount amount |
| Order-level discount amount |
Integrating with the Event Stream
Subscribe to the
order.openedevent via the Event Stream.Fetch additional details (for example, payment data) via the GraphQL API, as payments are processed asynchronously.
Create the sales transaction in the ERP using item pricing data, referencing
overridden_pricewhere applicable.
Sample GraphQL query
query MyQuery {
order(id: "012345Ab-CdEf-GhIj-KlMn-OpQrStUvWxYz", tenant: "dodici") {
externalId
placedAt
demandLocationId
currency
isExchange
isHistorical
channel
channelType
shippingTax
shippingTotal
taxExempt
taxStrategy
taxTotal
subtotal
grandTotal
discounts {
edges {
node {
couponCode
}
}
}
paymentAccount {
instruments {
edges {
node {
paymentMethod
paymentOrigin
paymentProvider
paymentAccountTransactions {
edges {
node {
amount
currency
transactionType
}
}
}
}
}
}
}
items {
edges {
node {
productId
quantity
pricebookPrice
itemDiscounts
orderDiscounts
tax
shippingServiceLevel
fulfillmentLocationId
}
}
}
}
}
See these guides for more information:
Exception handling
Scenario | Recommended Handling |
|---|---|
ERP unavailable | Return |
Payment details unavailable | Return |
Data extraction best practices
Use REST APIs as the primary data source — they are the source of truth with no processing delay.
Use GraphQL to supplement event data with additional context (for example, payment details), but do not use it as a source of truth or for bulk historical queries.
Use the Event Stream to trigger downstream workflows in real time. See the Data reconciliation and completeness playbook.