menu.updated event, priceInfo.price is always 0. This is intentional. Fire pre-computes the minimum reachable price and stores it in priceInfo.referencePrice.
Identifying a COMBO in the payload
Look for"type": "COMBO" in data.menu.products:
Modifier overrides
A product can appear in many combos and many menus. In the globalproducts[] list it has a single base price. But when that product acts as a modifier option inside a specific combo, its price within that combo may differ — for example, a medium fries that sells for R$ 8.00 individually might cost R$ 6.40 when bundled in a particular combo.
That is what productModifiers[n].overrides is for: it lets each combo declare a different price for any of its modifier options without changing the product’s base catalog price.
Structure
Each entry inoverrides targets one modifier option by its productId:
prod_fries_medium has a base price of R$ 8.00 in products[], but the override sets it to R$ 6.40 for this combo. prod_fries_large is similarly overridden to R$ 8.30.
Resolving the effective price
When processing a modifier option, always checkoverrides first:
Reference price
priceInfo.referencePrice is pre-computed by Fire as the minimum the customer can pay for the combo:
priceInfo.price for display.
Worked example — Box da Torcida
Customer-facing display logic
Show prices relative to the cheapest option in the group — not the absolute catalog price. This way customers see what a premium option costs on top of the base selection.
Apply this logic only to required groups (
minOptions ≥ 1). For optional groups (minOptions = 0), show the full add-on price for each option.
Example — Choose your box (required, pick 1)
The override for
prod_tiras_6 (R$ 38.00) is used instead of its base catalog price.
Example — Choose your sauce (required, all same price)
No delta is shown when all options cost the same.
Cart total
The total displayed on the “Add to order” button updates live as the customer makes selections:referencePrice.
