What it does
Barcode labels can print the price a buyer in a chosen country would pay (Shopify Markets pricing), in that market's currency, instead of always the shop's base price. Example: a Stockholm store picks Sweden, and labels print the SEK market price instead of the EUR base price.
How merchants use it
Saved shop default: Settings > Labels > Barcode label options > "Label price country" (stored as barcodeLabel.priceCountryCode).
Per-print override: "Price country (Shopify Markets)" selector on the Barcode page label layout preview, applies to that print run only.
Empty selection means "Shop default price", the existing behavior, unchanged.
Direct Print has no per-run UI; it follows the saved setting.
How it works under the hood
At print time, the app calls POST /barcode/market-prices with {shop, variantIds[], countryCode}.
Server validates the country code, fetches ProductVariant.contextualPricing(context: {country}) from the Shopify Admin API in batches of 250 via nodes(ids:), capped at 2,500 variants per print run.
Returned prices are overlaid onto cloned variants right before printing; the loaded product list stays in base pricing, and all variant-loading paths (scan, bulk load, resource picker, CSV import) get market pricing without changes.
Fallbacks: a variant with no price for that country keeps its base price (the run reports how many fell back); a lookup failure never blocks printing.
Currency formatting fix: formatters previously ignored the currency override, so a SEK amount would have printed with the shop's currency symbol. useAdjustedCurrency, the barcode page's adjustedCurrency, and Direct Print's formatter now accept per-variant currency/format overrides.
Design notes
Shopify's ContextualPricingContext is keyed by country (no market ID input), so the UI offers countries; a merchant thinking in Markets picks the country that market covers. Country list comes from the 2026-01 schema's CountryCode enum (244 values); display names via Intl.DisplayNames.
Requires only read_products (already held); no re-authorization needed.
Limitation: tax-inclusive pricing (Market.priceInclusions) is NOT read; labels show whatever contextualPricing returns. EU shelf labels usually must be tax-inclusive, so merchants should confirm the printed figure suits their market before physical-store use.
