On stores using managed mode, Shopify manages market currency and tax display, product sales channel publishing, and how custom line items are taxed. API writes that conflict with these requirements return validation errors.
Requests that already send settings matching the requirements, or that leave settings the app doesn't need to manageomitted.
Requests that conflict with managed mode requirements andtry to override them. These may return validation errors.
For stores using managed mode for US sales,marketCreate and marketUpdate reject requests that attempt to override the target market'srequired currency and tax display defaults.
currencySettings or priceInclusions . If you omit them, behavior is unchanged. If you send them,the result, including retained values and defaults for omitted subfields,is used for validation.
{
"currencySettings": {
"baseCurrency": "USD",
"localCurrencies": false
},
"priceInclusions": {
"taxPricingStrategy": "ADD_TAXES_AT_CHECKOUT"
}
}
{
"currencySettings": {
"localCurrencies": true
},
"priceInclusions": {
"taxPricingStrategy": "INCLUDES_TAXES_IN_PRICE_BASED_ON_COUNTRY"
}
}
| Violation type | userErrors.code | Notes |
|---|---|---|
| Currency | UNSUPPORTED_CURRENCY | — |
| Tax display | INCOMPATIBLE_CONFIGURATION | API 2026-07 and later |
| Tax display | GENERIC_ERROR | Earlier versions |
Errors are handled via userErrors.code/userErrors.field/userErrors.message .
In managed mode stores, products published toOnline Store/Headless/Hydrogen/Buy Button must also be published toShop . These are treated as channels that depend on Shop (dependent channels).
| Request that violates the rules | unstable | Dated versions |
|---|---|---|
| Publish to a dependent channel(without Shop) | Fails | Auto-corrected Also publishes to Shop. Shop doesn't support scheduled publishing, so even if the dependent channel is scheduled,Shop is published immediately |
| Unpublish from Shop(dependent channels remain) | Fails | Auto-corrected Also removes it from dependent channels |
| productCreate / productUpdate | Fails | Auto-correct Adds Shop when publishing to a dependent channel.productUpdate 's publications don't include Shop, Shop is retained |
| autoPublish in publicationUpdate | Fails | Auto-correct ON for a dependent channel → Shop also ON. OFF for Shop → dependent channels also OFF |
| Shop rejected / action-required flag | Fails | Does not block |
| Still violates the rules after correction(e.g., scheduling a draft product on a dependent channel without Shop) | Fails | Fails Same error as unstable |
Failed requests are not partially saved. This is rolling out gradually, with no schema changes. The REST Admin API product, product listing, and product publication endpoints behave the same way.
publishablePublish·publishableUnpublish·publicationUpdate. Publishing fields on the deprecated productPublish·productUnpublish,productCreate/productUpdate are also covered. REST product create and update fail when a product that isn't on Shop (or is blocked by Shop) is added to the Online Store.
A product counts as added to a channel if it's published, scheduled for publishing, or a draft. Requests that include both Shop and dependent channels arevalidated together, regardless of order.
If the result would leave a Shop-blocked product on a dependent channel, even a request that publishes only to Shop publishablePublish fails.productUpdate behaves the same way.
If the new list includes a dependent channel, even if the product is already on Shop, you must include Shop. If you also change status, validation uses the new status.
| Request | Message |
|---|---|
| Publish | For the store setup, Shop publication is a prerequisite. |
| Unpublish | For the store setup, unpublishing from dependent publications is a prerequisite. |
Don't publish the product when creating it via the REST Admin API.
Target Shop and Online Store.
Avoids unintended auto-corrections on dated versions.
| Store | How taxable is handled | How productCategoryId is handled |
|---|---|---|
| With managed mode | Ignored In all API versions | The input that determines tax treatment No category: treated as Uncategorized, withstandard ratetax applied |
| Without managed mode | As before taxable: false means not taxed |
If taxed, Shopify can use the category for tax calculation |
DraftOrderLineItemInput.taxable and orderEditAddCustomItem 's taxable argument is deprecated. No schema changes in 2026-10 and earlier.
Fields that return tax status and webhook payloads that include tax status are unchanged.Reads are not deprecated.
Draft orders: draftOrderCreate/Update/Calculate 's productCategoryIdOrder editing: orderEditAddCustomItem gets a new argument.
Search by category name to get the id and fullName.
IDs not in the current taxonomy return a user error.variantId is ignored when provided.
DraftOrderLineItem/CalculatedDraftOrderLineItem/CalculatedLineItem. Null for variant line items.
query {
taxonomy {
categories(search: "t-shirts", first: 5) {
nodes {
id
fullName
}
}
}
}
CheckoutBrandingFooterContent and CheckoutAndAccountsConfigurationBrandingFooterContent visibility controlsonly the footer content merchants can configure.
Even when visibility is HIDDEN , every checkout and Thank you page may showShopify-provided transaction informationin the footer. This is part of checkout and can't be controlled through branding.
Impact: Apps that use the legacy Checkout Branding API or the Checkout and Accounts Configuration API to manage branding for Shopify Plus stores and that manage footer visibility, render previews, or run visual tests. Apps that don't manage footer visibility are unaffected.
In Markets, currencySettings/priceInclusions is not validated if you omit it. If you send it, validation also covers the defaults for any omitted subfields, so match the required defaults when you send it.
On unstable, the request fails. On dated versions, Shopify adds Shop or removes dependent channels andsaves the corrected result automatically. Channels you didn't name can change, so always send Shop and its dependent channels together.
Publishing errors are validation errors, so retrying the same request returns the same error. Don't put these requests in a retry queue. Route them to a branch that fixes the request instead.
Tax display violations: from 2026-07 onward, INCOMPATIBLE_CONFIGURATION; before that, GENERIC_ERROR. Currency violations: UNSUPPORTED_CURRENCY. Check code and field, not just the message string.
In managed mode, writes to taxable areignored in all API versions, and custom line items with no category are taxed at the standard rate. Apps that relied ontaxable: false to make items tax-exempt may unintentionally charge tax on managed-mode stores. From 2027-01, migrate to productCategoryId . Reading tax status and webhooks are unchanged.
"published": false → publishablePublish.productUpdate replaces publications entirely, so always include Shop, even for products already on Shop. Treat these errors as non-retryable.taxable: false to make custom line items tax-exempt, but managed-mode stores ignore this and tax them at the standard rate.taxonomy Look up the category ID with a query and pass it toDraftOrderLineItemInput.productCategoryId/orderEditAddCustomItem . For order-wide exemptions, use tax-exempt on the customer, company, or company location.variantId is ignored on line items that specify it. Read the saved result back with productCategory to verify. The taxable input is deprecated from 2027-01 onward.localCurrencies: false/ADD_TAXES_AT_CHECKOUT. US + other countries: localCurrencies: true/INCLUDES_TAXES_IN_PRICE_BASED_ON_COUNTRY. If you don't need to manage it, omit the input entirely.UNSUPPORTED_CURRENCY and INCOMPATIBLE_CONFIGURATION(before 2026-07: GENERIC_ERROR) are captured to show which field violates the requirements via userErrors.field .