Skip to main content
Recomputes expected prices from a fresh menu for the same selling scope and compares them to the submitted lines and totals. Use this before checkout so the channel can show per-line problems (price changes, unavailable products, closed menu, and similar) without trusting client-side money.
Requires a Storefront API access token from Token exchange. Send the current draft (scope + lines + totals), not only a persisted order id — unsynced client edits are validated too.
In @fire-spark/storefront, call order.validateOrder(). On failure it throws OrderValidationError with the same issues and lines payload described below.

Request body

Request

Success response

Returns 200 when every check passes.

Validation failure (422)

When at least one check fails, the API returns 422 with:
Money comparisons use exact Big.js equality (no epsilon). expected / actual are decimal strings when present.

Order-level issue codes (details.issues)

Redeem issue codes

These come in details.issues for order redeems (field is redeem.N.…) and in details.lines[uid] for line redeems.

Line-level issue codes (details.lines[uid])

Render details.lines[uid] next to the matching cart row so the customer can remove or re-customize the item. Treat details.issues as cart-wide banners (closed store, bad totals, empty cart).

Other error responses

Get menus

Fresh menu for the same scope

Update order

Sync lines after the customer fixes the cart

Placing orders

Full checkout journey