---
title: "Update multiple products V2"
method: PATCH
path: "/api/v2/products"
tags: ["Product"]
---

# Update multiple products V2

`PATCH /api/v2/products`

Update multiple products at once.

## Request body

- object[]
  - `id` string — Resource identifier.
  - `name` string — Name of the product.
  - `number` string — Number / SKU of the product.
  - `project` object — Reference to another resource
    - `id` string, required — Resource identifier.
  - `description` string, nullable — Description of the product.
  - `internalComment` string, nullable — Text only for internal information.
  - `shortDescription` string, nullable — Short description of the product.
  - `customsTariffNumber` string, nullable — Customs tariff number of the product.
  - `ean` string, nullable — EAN of the product.
  - `minimumOrderQuantity` number — Numerical minimum order quantity of the product.
  - `minimumStorageQuantity` number — Numerical minimum storage quantity of the product.
  - `allowPurchaseFromAllSuppliers` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `hasBatches` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `serialNumbersMode` 'disabled' | 'user' | 'product' | 'productAndWarehouse' — 4 different modes available if the product has serial numbers or not and how they are handled. For more information about the different modes have a look into our handbook.
  - `hasBestBeforeDate` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `hasBillOfMaterials` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `isAssembledJustInTime` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `isProductionProduct` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `isExternallyProduced` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `isDisabled` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `disabledReason` string, nullable — Shows the reason why the product is locked when clicking into the product.
  - `hidePriceOnDocuments` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `ageRating` '' | '16' | '18', nullable — Sets an age rating for the product. Currently only used for the shipping service provider DHL.
  - `countryOfOrigin` string, nullable — Two-digit ISO country code for country of origin of the product.
  - `unit` string, nullable — Unit of the product.
  - `measurements` object — Measurements of the product.
    - `width` object
      - `value` number, float, required
      - `unit` 'cm', required — Currently only cm as unit allowed.
    - `height` object
      - `value` number, float, required
      - `unit` 'cm', required — Currently only cm as unit allowed.
    - `length` object
      - `value` number, float, required
      - `unit` 'cm', required — Currently only cm as unit allowed.
    - `weight` object
      - `value` number, float, required
      - `unit` 'kg', required — Currently only kg as unit allowed.
    - `netWeight` object
      - `value` number, float, required
      - `unit` 'kg', required — Currently only kg as unit allowed.
  - `manufacturer` object — Information about the manufacturer of the product.
    - `name` string, nullable — Name of the manufacturer.
    - `number` string, nullable — Product number at the manufacturer.
    - `link` string, nullable — URI of the manufacturer.
  - `isStockItem` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `isStockTakingDisabled` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `hideJustInTimeItemsOnDocuments` union — Loose boolean type which accepts boolean, number 0 or 1 and string 'true' or 'false'
    - boolean
    - 0 | 1
    - 'true' | 'false' | 'True' | 'False' | 'TRUE' | 'FALSE'
  - `salesTax` 'standard' | 'reduced' | 'free' — Selection of three possible values for the sales tax of the product.
  - `merchandiseGroup` object — Reference to another resource
    - `id` string, required — Resource identifier.
  - `categories` object[]
    - `id` string, required — Resource identifier.
  - `standardSupplier` object, nullable — Reference to a standard supplier for this product
    - `id` string, nullable, required — Nullable resource identifier
  - `isShippingCostsProduct` boolean — Determines if a product is used as a shipping costs product. For more information have a look into our handbook.
  - `isMatrixProduct` boolean — Determines if a product is a matrix product. For more information have a look into our handbook.
  - `discount` object — Discount settings of the product.
    - `isDiscountProduct` boolean — Determines if a product is used as a discount. For more information have a look into our handbook.
    - `discountPercentage` number, float — Sets the discount value if the product is a discount. For more information have a look into our handbook.
  - `stockTaking` object — Contains settings for stock taking.
    - `hasStockTakingValue` boolean — Shows if the stock taking value should be used instead of the purchase price for stock taking.
    - `stockTakingValue` number, float — Shows the stock taking value for stock taking.
  - `calculatedPurchasePrice` object — Contains settings for the calculated purchase price.
    - `hasCalculatedPurchasePrice` boolean — Sets if the calculatedPurchasePrice should be used.
    - `price` object — Money object with amount and currency. If no currency is set, EUR is returned.
      - `amount` string, float — A string representing the amount
      - `currency` 'EUR' | 'USD' | 'JPY' | 'BGN' | 'CZK' | 'DKK' | 'GBP' | 'HUF' | 'PLN' | 'RON' | 'SEK' | 'CHF' | 'ISK' | 'NOK' | 'HRK' | 'RUB' | 'TRY' | 'AUD' | 'BRL' | 'CAD' | 'CNY' | 'HKD' | 'IDR' | 'ILS' | 'INR' | 'KRW' | 'MXN' | 'MYR' | 'NZD' | 'PHP' | 'SGD' | 'THB' | 'ZAR' | 'ARS' | 'CLP' | 'SAR' | 'AED' | 'QAR' — Currency matches one of currency values as specified in ISO-4217.
  - `calculatoryPurchasePriceSettings` object — Contains settings for the calculatory purchase price triggers.
    - `addPurchasePriceToCalculationTriggers` string[], nullable — Define triggers that will add a purchase price to the product calculation.
    - `calculatoryPurchasePriceRecalculationTriggers` string[], nullable — Define triggers that will execute the calculatory purchase price recalculation.
    - `calculatoryPurchasePriceRecalculationMethod` 'allRecordedPurchasesWeightedAverage' | 'latestPurchaseOrdersWeightedAverage' | 'movingAverage', nullable — defines the calculation method or price recalculation
  - `regionOfOrigin` '' | '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' | '10' | '11' | '12' | '13' | '14' | '15' | '16' | '99', nullable — 01 - Schleswig-Holstein, 02 - Hamburg, 03 - Niedersachsen, 04 - Bremen, 05 - Nordhrein-Westfalen, 06 - Hessen, 07 - Rheinland-Pfalz, 08 - Baden-Württemberg, 09 - Bayern, 10 - Saarland, 11 - Berlin, 12 - Brandenburg, 13 - Mecklenburg-Vorpommern, 14 - Sachsen, 15 - Sachsen-Anhalt, 16 - Thüringen, 99 - foreign origin
  - `salesChannel` object — General sales channel information that is valid for all sales channels, if not overridden by individual sales channel information.
    - `description` string — Description of the product for sales channels.
    - `meta` object — Meta information for sales channels.
      - `title` string — Meta title of the product for sales channels.
      - `description` string — Meta description of the product for sales channels.
      - `keywords` string — Meta keywords of the product for sales channels.
    - `isStockNumberSyncActive` boolean — Determines if the stock number synchronization to the sales channel is active.
    - `isSoldOut` boolean — Determines if the product is sold out.
    - `isRemainingQuantity` boolean — Determines if only the remaining quantity of the product is left.
    - `isVisible` boolean — This field was formerly called isVisibleInOnlineShops. Determines if a product is visible in all sales channels
    - `suggestedRetailPrice` string, float, nullable — This field was formerly called shopPriceDisplay. Sets the suggested retail price for sales channels. Only used by some online shops. For more information have a look into our handbook.
    - `suggestedStockQuantity` string — Sets the suggested stock quantity for all sales channels.
    - `deliveryTime` string — Sets the delivery time for all sales channels.
    - `createNewProductDuringImport` boolean — Determines if a new product is generated during the sales order import from all sales channels.
  - `freeFields` object[], nullable
    - `id` string, required — Resource identifier.
    - `value` string, required
  - `tags` object[]
    - `id` string — Either ID or name and key.
    - `key` string — Unique identifier for the product or entity.
    - `name` string — Name of the product or entity.
    - `color` string — Hexadecimal color value in 6-digit format without the leading # character.
  - `variantOf` object, nullable — Reference to a parent product
    - `id` string, required — Resource identifier.

## Response `204`

Operation completed successfully, no response body

## Other responses

- `400` — IETF RFC 9457 Problem API compliant response
- `401` — Unable to authenticate the client
- `403` — Unable to authorize the client
- `409` — Request conflict with the current state of the target resource
- `415` — Resource representation send in the request is not supported.
- `429` — Too many API calls made.

---

[API](https://skmtc.net/xentral/apis/xentral-api.md) · [All operations](https://skmtc.net/xentral/apis/xentral-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/xentral/xentral-api/versions/8a27ba392442/schema)
