Hi @Karl_RH,
Great question, and the mismatch you’re seeing is actually expected behaviour in this case with B2B Buyers and B2B catalogs.
For B2B buyers, the pricing context and the localization context are resolved independently and can legitimately disagree. A Company Location can belong to several Markets at once (e.g. London and North London), and Catalogs can be attached either to a Market or directly to a Company Location. When a B2B Company Location has its own Catalog, that Catalog takes precedence over any Market-level Catalog for pricing, there isn’t a single “current Market” that drives the price in this scenario, so any logic that picks one Market and re-derives the price from it will diverge from what the storefront actually charges.
localization.market is intended for the localization experience (the country/language/currency selector, market-aware metafields, etc.) and resolves to a region-based Market for the buyer. It’s not guaranteed to be the same Market whose Catalog produced the displayed price, especially for B2B buyers whose pricing comes from a Company Location Catalog or from a more-specific Market with its own Catalog. There is no Liquid object that exposes “the Catalog used to price this variant”, which is deliberate, since the contextualized price is already exposed directly on the product and variant objects.
The pattern we recommend for B2B themes:
• Use {{ product.price | money }} and {{ variant.price | money }} (and compare_at_price, unit_price, quantity_price_breaks, etc.) — these are already adjusted for the logged-in customer’s Company Location and Catalog. You don’t need to resolve a Market or Catalog yourself to get the right number.
• Use {{ customer.current_location }} for the active Company Location (name, ID, address, metafields, tax registration). See company_location.
• Use {{ customer.current_company }} for the parent Company.
• Use {{ localization.market }}, {{ localization.country }}, and {{ localization.language }} for localization UI only — and treat the Market it returns as a localization signal, not as the source of pricing.
More background:
• Support B2B customers in your theme
• Liquid object: customer
• Liquid object: company_location
• Liquid object: localization
• Liquid object: product / variant
If there’s a specific theme behavior you’re trying to drive off the Market (a market-specific banner, a metafield lookup, etc.), let us know what you’re trying to do exactly and we can suggest the closest stable signal, but for pricing, the variant and product price fields are the source of truth and you don’t need to derive a Market to use them.