> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Markets

> Cross-border markets: destination countries and how landed costs are priced and charged.

## Queries

* [`market`](/docs/api-reference/v3/reference/markets/queries/market) — Fetch a single market by its id.
* [`markets`](/docs/api-reference/v3/reference/markets/queries/markets) — List markets, optionally filtered by whether they are live.

## Mutations

* [`upsertMarket`](/docs/api-reference/v3/reference/markets/mutations/upsert-market) — Create a market, or update one when `id` is given. Returns null if no market with that id is owned by the caller. Adding a country sets it up on the store's sales channel, so this can take several seconds. Removing a country tears down its Shopify market, catalog and price list. Throws a 400 error with an extension code of MARKET\_COUNTRIES\_REQUIRED, DUPLICATE\_MARKET\_COUNTRY, MARKET\_COUNTRY\_ADDED\_AND\_REMOVED, MARKET\_COUNTRY\_NOT\_IN\_MARKET, INVALID\_MARKUP, or INVALID\_MARKET\_SETTINGS when the input is invalid (settings are checked against the market as it would be after the update), a 400 error with an extension code of UNEXPECTED\_MARKET\_RESOLUTION for a resolution no conflict needs, a 409 CONFLICT error (with an extension code of MARKET\_COUNTRY\_IN\_USE) when a country already belongs to another market, and a 409 CONFLICT error (with an extension code of MARKET\_COUNTRY\_CONFLICT and a `conflicts` extension listing, per country, the conflicting Shopify market handle, its other countries, a `reason` sentence explaining the conflict, and `allowedResolutions` as `{ kind, effect }` pairs whose `effect` says what that choice does to the merchant's Shopify market) when a country being added is in one of the merchant's own Shopify markets without an allowed resolution. Nothing is written when a request fails.

## Objects

* [`Market`](/docs/api-reference/v3/reference/markets/market) — A cross-border market: a set of destination countries that share one landed-cost pricing policy.
* [`MarketBreakdownLabels`](/docs/api-reference/v3/reference/markets/market-breakdown-labels) — Shopper-facing labels for the checkout landed-cost breakdown. A null label uses the default wording.
* [`MarketCountry`](/docs/api-reference/v3/reference/markets/market-country) — A destination country a market sells into.

## Input objects

* [`MarketBreakdownLabelsInput`](/docs/api-reference/v3/reference/markets/market-breakdown-labels-input) — Custom labels for the checkout landed-cost breakdown. Each is 1–80 characters; omit a label to use the default wording.
* [`MarketCountryConflictResolutionInput`](/docs/api-reference/v3/reference/markets/market-country-conflict-resolution-input) — How to resolve a country being added that is already in a Shopify market Redo does not manage.
* [`UpsertMarketInput`](/docs/api-reference/v3/reference/markets/upsert-market-input) — The settings of a market to create or update. When updating, omit a field to leave it unchanged.

## Enums

* [`LandedCostBreakdownDisplay`](/docs/api-reference/v3/reference/markets/landed-cost-breakdown-display) — How landed-cost lines that are not charged appear in the checkout breakdown.
* [`LandedCostComponent`](/docs/api-reference/v3/reference/markets/landed-cost-component) — A component of the landed cost of a cross-border order.
* [`MarketCountryConflictResolutionKind`](/docs/api-reference/v3/reference/markets/market-country-conflict-resolution-kind) — What to do with the merchant's own Shopify market that already sells into a country being added.
* [`MarketMarkupStrategy`](/docs/api-reference/v3/reference/markets/market-markup-strategy) — How a market's markup combines with the landed cost baked into the price.
* [`MarketPricingMode`](/docs/api-reference/v3/reference/markets/market-pricing-mode) — How a market turns landed costs into the prices shoppers see.
* [`MarketSortKey`](/docs/api-reference/v3/reference/markets/market-sort-key) — A field this list can be ordered by; pass to the list's `orderBy` argument and pair with `reverse` to flip direction.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.