# Inventory import Learn about the headers and values supported for importing Inventory entries from CSV files. ## Supported headers and values Only one Inventory entry can be created for a combination of an `sku` and `supplyChannel`. You can update an Inventory entry only if it has a `key`. You can assign a key to an Inventory entry using the [Inventory API](https://docs.commercetools.com/api/projects/inventory.md#set-key). When updating Inventory entries, include only the headers and values for the fields you are updating. (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `key`,A unique identifier for the Inventory entry that is imported. The key must only include letters, numbers, underscores (\_), or dashes (-). If an Inventory entry with the provided `key` exists in the Project, it is updated with the provided value—otherwise, a new entry is created.,Required `sku`,The SKU of the Product Variant associated with the Inventory entry.,Required, when creating a new Inventory entry. `quantityOnStock`,The overall amount of stock (`availableQuantity` + reserved).,Required, when creating a new Inventory entry. `availableQuantity`,The available amount of stock (`quantityOnStock` - reserved).,Optional `restockableInDays`,How often the Inventory entry is restocked (in days).,Optional `expectedDelivery`,The date and time of the next restock in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.,Optional `supplyChannel.key`,A unique identifier for the supply channel associated with the Inventory entry. This supply channel must exist before importing the Inventory entry.,Optional `supplyChannel.typeId`,`channel`,Required, if `supplyChannel.key` is provided. `custom.type.key`,A unique identifier for the Type referenced in a Custom Field.,Required, when importing Custom Fields. `custom.type.typeId`,`type`,Required, when `custom.type.key` is provided. `custom.fields.{nameOfCustomField}`,Replace `{nameOfCustomField}` with the name of the Custom Field, as defined in the respective [FieldDefinition](https://docs.commercetools.com/urn?urn=ctp%3Aapi%3Atype%3AFieldDefinition). The value must conform to the [FieldType](https://docs.commercetools.com/api/projects/types.md#fieldtype) of the Custom Field. For more information, see [Custom Fields](https://docs.commercetools.com/merchant-center/import-inventory.md#custom-fields).,Optional ### Custom Fields Replace `{nameOfCustomField}` with the name of the Custom Field, as defined in the respective [FieldDefinition](/api/projects/types#fielddefinition). The name of the Custom Field is case-sensitive. When importing LocalizedString Custom Fields, provide headers and values for each language. For example, for English and German, provide `custom.fields.{nameOfCustomField}.en` and `custom.fields.{nameOfCustomField}.de` respectively. When importing boolean Custom Fields, the values must be lowercase. For Money Custom Fields, provide the following additionally: (a CSV formatted table follows. The first line are the column names.) Header,Value,Required/Optional `custom.fields.{nameOfCustomField}.currencyCode`,An [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)-compliant currency code such as `USD`, `EUR`, or `GBP`.,Required `custom.fields.{nameOfCustomField}.centAmount`,An amount in the smallest indivisible unit for a currency. For example, `500` can be equal to USD 5.00 or JPY 500.,Required `custom.fields.{nameOfCustomField}.type`,`centPrecision`,Required `custom.fields.{nameOfCustomField}.fractionDigits`,The number of digits after the decimal separator. For example, `2` for USD or `0` for JPY.,Required #### Sets of Custom Fields For sets of simple Custom Fields (such as numbers, text, and booleans) the header would contain the Custom Fields name, and value would be a semicolon-separated list. The following example demonstrates how to import sets of text and numbers. (a CSV formatted table follows. The first line are the column names.) `custom.fields.colorCombination`,`custom.fields.numberSet` `red;green;blue`,`10;5;32` ##### Sets of complex Custom Fields For sets of complex values (such as localized text, references, and money), you can import single set values by defining the index and the subfields in the header. The following example demonstrates how to update the first entry of a set of Custom Fields called `relatedCategories` that references Categories. (a CSV formatted table follows. The first line are the column names.) `custom.fields.relatedCategories.1.key`,`custom.fields.relatedCategories.1.typeId` `red-shirts`,`category` To update the second entry, include the same headers but change `1` to `2`. You can also import multiple set values by using `*` instead of a number. With this approach, the values of set items are entered into sequential rows. The following example demonstrates how to create a set of Custom Fields called `relatedCategories` with four entries. (a CSV formatted table follows. The first line are the column names.) `custom.fields.relatedCategories.*.key`,`custom.fields.relatedCategories.*.typeId` `red-shirts`,`category` `summer-collection`,`category` `new-arrivals`,`category` `red-accessories`,`category` ## Delete data When updating resources, you can remove data for optional fields. To remove data, in the CSV file, enter `[DELETE]` as the value for the header (field). When deleting values for reference fields or multi-value fields, you must add a new column with the common prefix as the header, and enter `[DELETE]` as the value. For example, to delete data for a Custom Field—that is `custom.fields.customField1` in the CSV file—add a new column, `custom.fields.customField1`, with `[DELETE]` as its value. (a CSV formatted table follows. The first line are the column names.) `key`,`custom.fields.customField1` `inventory-key-1`,`[DELETE]` ## Related pages - [Section overview page](https://docs.commercetools.com/merchant-center.md) - [Previous page: Discount Codes](https://docs.commercetools.com/merchant-center/import-discount-codes.md) - [Next page: Products](https://docs.commercetools.com/merchant-center/import-products.md)