# Upload Items/SKUs/Products

A product represents a particular style or parent of an item(s). While tem represents an inventory SKU (Stock keeping unit)  that can be entered into the system for selling, purchasing and manufacturing.&#x20;

You can use the **Create Item** module to manually create SKUs or you can use the **Upload Products** module if you have variants enabled on your instance and **Upload Items** if variants are disabled.

### Overview

* Download the latest CSV template from the “**Upload Products**” module.
* Copy Product information into the CSV template.
* Upload the CSV template into Xoro.

### Download the CSV template file

* Go to “**Upload Products**” using the Search Menu.
* Click on the “**Download Template**“.

### Entering the data into the template

Once you’ve downloaded the template file, you can copy in your data using any spreadsheet software. There are columns that you must complete, and others that are optional. Mandatory fields are marked with a double asterisk (\*\*) prefix.

* The file must be a CSV (Comma-separated values) file. The name of your file must end with csv.
* Make sure you don’t change any of the column headings from row 1 in the template – these are needed for the file to import correctly.
* All date fields will accept a format of MM/DD/YYYY or MM-DD-YYYY.
* Be mindful of any leading zeros in your data; some spreadsheet software will trim them automatically without notifying you. This can be resolved by ensuring your columns have correct formatting.
* Sometimes long numbers are formatted as scientific notation. Be sure to change the formatting on this data to display these long numbers correctly.

{% hint style="info" %}
If you’re importing more than 5,000 records, we recommend you split up the file.
{% endhint %}

**Upload Products Template Fields**

The following table provides a complete list of all fields available in the **Product Upload Template**, along with their data types and descriptions.

<table><thead><tr><th width="250.00006103515625">Column Name</th><th width="103">Data Type</th><th>Description</th></tr></thead><tbody><tr><td>**BasePartNumber</td><td>Text</td><td>Enter a Base part number (or style number) here. This is the skeleton SKU from which unique SKUs will be generated. Many SKUs can have the same Base Part. For example, BasePartNumber: TEE-SHIRT, ItemNumber: TEE-SHIRT-RED-LRG.</td></tr><tr><td>BodyHtml</td><td>Text</td><td>It is a unique identifier used for matching products in third party apps.</td></tr><tr><td>Handle</td><td>Text</td><td>It is a unique identifier used for matching products in third party apps like Shopify etc.</td></tr><tr><td>Title</td><td>Text</td><td>A title can be entered for the BasePartNumber here. This title is displayed in the third party apps selling the product.</td></tr><tr><td>ProductCategoryName</td><td>Text</td><td>Enter the category of the product here. For instance, it can be Apparel, Games or Footwear.</td></tr><tr><td>Option1Name</td><td>Text</td><td>Enter the first attribute or variant of the product. For Apparel items, this would typically be Color.</td></tr><tr><td>Option1Value</td><td>Text</td><td>Enter a value for the first variant of the product. For example, if Option1Name is Color, then Option1Value can be Black.</td></tr><tr><td>Option1ValueCode</td><td>Text</td><td>Enter an abbreviated code for Option1Value here. For example, if Option1Value is Black, then Option1ValueCode can be BLK.</td></tr><tr><td>Option1Seq*</td><td>Numeric</td><td>Specify the order for displaying product option 1 within the system.</td></tr><tr><td>Option2Name</td><td>Text</td><td>Enter the second attribute or variant of the product. For Apparel items, this would typically be Size.</td></tr><tr><td>Option2Value</td><td>Text</td><td>Enter a value for the second variant of the product. For example, if Option2Name is Size, then Option2Value can be Medium.</td></tr><tr><td>Option2ValueCode</td><td>Text</td><td>Enter an abbreviated code for Option2Value here. For example, if Option2Value is Medium, then Option2ValueCode can be M.</td></tr><tr><td>Option2Seq*</td><td>Numeric</td><td>Specify the order for displaying product option 2 within the system.</td></tr><tr><td>Option3Name</td><td>Text</td><td>Enter the second attribute or variant of the product. For Apparel items, this can be ignored.</td></tr><tr><td>Option3Value</td><td>Text</td><td>Enter a value for the third variant of the product. For example, if Option3Name is Shape, then Option3Value can be Circle.</td></tr><tr><td>Option3ValueCode</td><td>Text</td><td>Enter an abbreviated code for Option3Value here. For example, if Option2Value is Circle, then Option3ValueCode can be CIR.</td></tr><tr><td>Option3Seq*</td><td>Numeric</td><td>Specify the order for displaying product option 3 within the system.</td></tr><tr><td>**ItemNumber</td><td>Text</td><td>Enter a unique SKU for an item (two of the same SKUs cannot go into the system). Typically this is the BasePartNumber combined with the Option Codes. Make sure the SKU is final, as it will be tricky to change once there are transactions created on it in the system. Note: Two rows cannot have the same Item Number. IMPORTANT: If you are planning to integrate your E-Commerce (Shopify, Woo-Commerce) platform with Xoro then these SKUs MUST match with theirs. If necessary contact your E-Commerce support team for updating SKUs.</td></tr><tr><td>**Description</td><td>Text</td><td>Enter a description for the item.</td></tr><tr><td>ItemBarcode</td><td>Text</td><td>Enter a Barcode associated with the item.</td></tr><tr><td>ItemUpc</td><td>Text</td><td>Enter a UPC code associated with the item.</td></tr><tr><td>**ItemTypeName</td><td>Text</td><td><p>Enter the type of item in this field. You can choose one from the below options:</p><ul><li>Inventory</li><li>Labor</li><li>Non-Inventory</li><li>Service</li><li>Shipping</li></ul><p>Please note that inventory-type items will have their quantities tracked in the system and they will also need the following columns entered in this template: AssetAccountName, CogsAccountName, AdjAccountName &#x26; IncomeAccountName.<br>Selecting any other item type will not have their quantities tracked in the system, and they will only need the following account columns entered: IncomeAccountName &#x26; ExpenseAccountName.</p><p><strong>Note:</strong> If this field is blank, it will be picked up from the upload default values.</p></td></tr><tr><td>**StandardUnitPrice</td><td>Numeric</td><td>Enter the price at which this item is most commonly sold to the consumer (e.g. 100.50) in your home currency.</td></tr><tr><td>CustomPrices</td><td>Numeric</td><td>CP1 can be customized as any price in the system (Distributor, Wholesale, Retail, etc.) for the home currency. If necessary, enter a price for it here.</td></tr><tr><td>**StandardUnitCost</td><td>Numeric</td><td>Enter the cost at which this item is most commonly purchased from the vendor.</td></tr><tr><td>**SellUomCode</td><td>Text</td><td><p>Select the unit of measure (UOM) for the item, this controls how the item is sold and purchased. Certain UOM's allow the item to be entered in decimal quantities, such as litres or kilograms. Others only allow integer quantities, like each. For example, if it is sold by the gram, foot, each, etc.<br>Choose from:</p><ul><li>kg</li><li>g</li><li>lb</li><li>ea (for integer quantities, choose this)</li><li>m</li><li>cm</li><li>km</li><li>lt</li><li>ml</li><li>gal</li><li>sec</li><li>hr</li><li>min</li><li>in</li><li>ft</li></ul><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>IsSellableFlag</td><td>Text</td><td><p>Enter the value Y if the item will be available to add to Sales modules. Enter the value N if the item cannot be added to the Sales module.</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>IsTransferableFlag</td><td>Text</td><td><p>Enter the value Y if the item will be available to add to the transfer orders. Enter the value N if the item cannot be added to the transfer orders.</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>ForceSalesTaxCode</td><td>Text</td><td>Enter the value Y if the sales tax for this item will always be selected as the default sales tax unless changed manually.</td></tr><tr><td>IsPurchasableFlag</td><td>Text </td><td><p>Enter the value Y if the item will be available to add to Purchase modules. Enter the value N if the item cannot be added to the Purchase module.</p><p><strong>Note:</strong> If this field is blank then it will be picked up from the upload default values.</p></td></tr><tr><td>ReturnableFlag</td><td>Text</td><td><p>Enter the value Y/N if the item is returnable or not.</p><p><strong>Note:</strong> If this field is blank then it will be picked up from the upload default values.</p></td></tr><tr><td>ManufactureItemFlag</td><td>Text</td><td>Enter the value Y/N if the item is manufactured using the manufacturing order (MO) module.</td></tr><tr><td>IsRawMaterialFlag</td><td>Text</td><td>Enter the value Y/N if the item is consumed to produce another item.</td></tr><tr><td>DefaultVendorName</td><td>Text</td><td>Select a default vendor for this item.</td></tr><tr><td>**AssetAccountName</td><td>Text</td><td><p>The item’s asset account. This account will be used in future transactions for this item (bills, invoices, etc.).</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>**CogsAccountName</td><td>Text</td><td><p>The item’s cost of goods sold account. This account will be used in future transactions for this item (e.g. invoice).</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>**AdjAccountName</td><td>Text</td><td><p>The item’s adjustment account.T his account is used as the default inventory adjustment account.</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>**IncomeAccountName</td><td>Text</td><td><p>The item’s income account. This account will be used in future transactions for this item (e.g. invoice).</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>**ExpenseAccountName</td><td>Text</td><td><p>The item’s expense account and it’s available for non-inventory items. This account will be used in future transactions for this item.</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>WipAccountName</td><td>Text</td><td><p>The item’s WipAccountName account.</p><p><strong>Note:</strong> If this field is blank, then it will be picked up from the upload default values.</p></td></tr><tr><td>**IncomeReturnAccountName</td><td>Text</td><td>This is the account used for item returns from the customer.</td></tr><tr><td>Length</td><td>Numeric</td><td>This field allows you to enter item's length.</td></tr><tr><td>Width</td><td>Numeric</td><td>This field allows you to enter item's width.</td></tr><tr><td>Height</td><td>Numeric</td><td>This field allows you to enter item's height.</td></tr><tr><td>**SizeUomCode</td><td>Text</td><td><p>The unit of measure for the item’s size (e.g. cm, ft, m).</p><p><strong>Note:</strong> If this field is blank then it will be picked up from the upload default values.</p></td></tr><tr><td>Weight</td><td>Numeric</td><td>This field allows you to enter item's weight.</td></tr><tr><td>**WeightUomCode</td><td>Text</td><td><p>The unit of measure for the item’s weight (e.g. lb, kg, g).</p><p><strong>Note:</strong> If this field is blank then it will be picked up from the upload default values.</p></td></tr><tr><td>AlertNote</td><td>Text</td><td>Enter an alert note here for this item. Every time this item is added to a module, this alert note will appear to the user.</td></tr><tr><td>WebUrl</td><td>Text</td><td>An internet link for the item can be entered here.</td></tr><tr><td>ImagePath</td><td>Text</td><td>An internet link for the item can be entered here.</td></tr><tr><td>SeasonValues</td><td>Text</td><td>Enter the season values here like Winter, summer etc.</td></tr><tr><td>HazmatCode</td><td>Text</td><td>The item’s hazmat code.</td></tr><tr><td>SellPkgQty</td><td>Numeric</td><td>The quantity that is sold per package.</td></tr><tr><td>ReOrderPointQty</td><td>Numeric</td><td>The minimum quantity to hold of this item is such that when it drops to this amount, the item should be replenished.</td></tr><tr><td>ReOrderQty</td><td>Text</td><td>The amount to re-order when an item’s stock reaches the re-order point quantity.</td></tr><tr><td>ActiveFlag</td><td>Text</td><td><p>Enter Y/N to Active or Deactivate the product.</p><p><strong>Note:</strong> If this field is blank then it will be picked up from the upload default values.</p></td></tr><tr><td>IsTaxableOnSale</td><td>Text</td><td>Enter Y/N to apply tax on sales.</td></tr><tr><td>SaleTaxCode</td><td>Text</td><td>The default tax code to sell this item. This tax is retrieved when an item is added to an estimate or sales order.</td></tr><tr><td>IsTaxableOnPurchase</td><td>Text</td><td>Enter Y/N to apply tax on Purchase.</td></tr><tr><td>PurchaseTaxCode</td><td>Text</td><td>The default tax code to purchase this item. This tax is retrieved when an item is added to a purchase order.</td></tr><tr><td>BrandName</td><td>Text</td><td>This field allows you to enter the brand associated with the item.</td></tr><tr><td>GroupName</td><td>Text</td><td>This field allows you to select a product group for this item.</td></tr><tr><td>CategoryName</td><td>Text</td><td>This field allows you to select a category for this item.</td></tr><tr><td>SalesNotes</td><td>Text</td><td>Any notes related to the sale of the item can be entered in this field.</td></tr><tr><td>PurchaseNotes</td><td>Text</td><td>Any notes related to the purchase of the item can be entered in this field.</td></tr><tr><td>CooCodeIso2</td><td>Text</td><td>Enter the ISO 2 Code associated with the item's country of origin.</td></tr><tr><td>GenderCode</td><td>Text</td><td>This field allows you to enter a specific code that represents the intended gender for a particular item. For instance, if an item is meant for males, you'd enter "M" in this field. The options available for selection include codes like "M" for Male, "F" for Female, "U" for Unisex, "Y" for Youth, "B" for Boy, "G" for Girl, and "WMS" for Women's. This code helps categorize items based on their intended audience or gender suitability within the system.</td></tr><tr><td>MaterialName</td><td>Text</td><td>Enter the item's material in this field.</td></tr><tr><td>HSCode</td><td>Text</td><td>This field allows you to specify the item's hazmat code.</td></tr><tr><td>Tags</td><td>Text</td><td>Enter the tag(s) associated with the item.</td></tr><tr><td>WarrantyTime</td><td>Text</td><td>This field allows you to indicate the duration of the item's warranty coverage.</td></tr><tr><td>WarrantyUOM</td><td>Text</td><td>This field allows you to specify the warranty's UOM.</td></tr><tr><td>ShelfLife</td><td>Text</td><td>This field allows you to enter the item's shelf life.</td></tr><tr><td>ExpirationDate</td><td>Date</td><td>Enter the expiration date for the item.</td></tr><tr><td>CARB</td><td>Text</td><td>Enter the item's CARB.</td></tr><tr><td>UseImageForProductPreviewFlag</td><td>Text</td><td>Enter Y if the image added to the product will be used for product preview.</td></tr><tr><td>DefaultStoreName</td><td>Text</td><td>This field allows you to specify the default store associated with the item.</td></tr><tr><td>DefaultLocationName</td><td>Text</td><td>This field allows you to set the default location for receiving the item.</td></tr><tr><td>ProjectClassName</td><td>Text</td><td>Enter the project/class to be associated with the item.</td></tr><tr><td>AlternativeItemNumber1</td><td>Text</td><td>Enter an alternative item number1 for the item, providing additional identification.</td></tr><tr><td>AlternativeItemNumber2</td><td>Text</td><td>Enter an alternative item number2 for the item, providing additional identification.</td></tr><tr><td>AlternativeItemNumber3</td><td>Text</td><td>Enter an alternative item number3 for the item, providing additional identification.</td></tr><tr><td>IsPreSellFlag</td><td>Text</td><td>Enter Y in this field if the item is available for pre-selling.</td></tr><tr><td>DiscontinuedDate</td><td>Date</td><td>If there is a specific item to be discontinued, you can specify a date in the system to document when it should no longer be used.</td></tr><tr><td>TrackingBySerialNumberFlag</td><td>Text</td><td>Enter Y if you want to enable product tracking using the serial number.</td></tr><tr><td>IsProducibleFlag</td><td>Text</td><td>Enter Y if the item is manufacturable.</td></tr><tr><td>TaxCategoryCode</td><td>Text</td><td>Enter the tax category code to be associated with the item.</td></tr><tr><td>IsRestrictToPurchaseFlag</td><td>Text</td><td>Enter Y to restrict the product from being added to a purchase order.</td></tr><tr><td>ReCalculateCustomPrices</td><td>Text</td><td>Enter Y to enable recalculation of custom prices.</td></tr><tr><td>DropShipItemFlag</td><td>Text</td><td>Enter Y if this is a drop ship item.</td></tr><tr><td>ThirdPartyRefNo</td><td>Text</td><td>Enter the third-party reference number associated with the item.</td></tr><tr><td>ItemGtin</td><td>Numeric</td><td>Specify the GTIN (Global Trade Item Number) associated with the item.</td></tr><tr><td>TaxStateMappingProfile</td><td>Text</td><td>Enter the tax state mapping profile associated with the item.</td></tr><tr><td>CBM</td><td>Numeric</td><td>Enter the CBM value for the item</td></tr><tr><td>SearchKeywords</td><td>Text</td><td>Enter the keywords for </td></tr><tr><td>ImportError</td><td>Text</td><td>If there any errors from an upload, they will be listed in this column.</td></tr><tr><td>CustomPriceFormulaProfile</td><td>Text</td><td>Specify the profile used to create the custom price for the item.</td></tr><tr><td>CustomFields</td><td>Text</td><td>The custom fields allow you to enter data in the custom fields defined for the item, allowing you to capture and store additional information relevant to the item.</td></tr><tr><td>SubCategoryName</td><td>Text</td><td>Enter the sub category of the product here.</td></tr><tr><td>VendorListPrice</td><td>Numeric</td><td>Enter the vendor’s list price for the item. This value is used to define the base purchase price in the item-vendor mapping.</td></tr><tr><td>VendorDiscount</td><td>Numeric</td><td>Enter the discount provided by the vendor on the list price. This helps in calculating the effective purchase cost for the item.</td></tr><tr><td>VendorPartNumber</td><td>Numeric</td><td>Enter the vendor-specific part number for the item. This is used for reference in purchasing transactions and vendor communication.</td></tr><tr><td>LeadTime</td><td>Numeric</td><td>Enter the number of days required by the vendor to supply the item. This value is used for planning and expected delivery calculations.</td></tr><tr><td>RecalculateStandardUnitPrice</td><td>Text</td><td>Enter <strong>“Y”</strong> to enable recalculation, where the system derives the Standard Unit Price using the Standard Cost and Gross Profit.</td></tr></tbody></table>

{% hint style="info" %}
\*Please note that if the app config "**Use product option sequence in upload product**" is On, the product options will be uploaded in the sequence defined in the file. If the config is off, the product options will be uploaded in the sequence of the variants in which they are entered in the upload file.
{% endhint %}

### Upload the template

Once you have filled out the CSV file with your data, you can follow the steps below to upload it into Xoro:

* The **Default values** for required columns can be configured before the upload.
* Please check the defaults from the Upload Items module before uploading items
* If the data in the template is blank or incorrect, then the uploader will fallback and use these specified default values.&#x20;
* Click **Browse** to select the saved CSV template file.
* After the file has been selected, click on **Upload** to start importing.
* While the import is in progress, the summary of the progress will be displayed at the bottom of the screen with the progress bar.
* After the import has been completed, the result will be displayed with the message for success or error (if any).
* Products will only get uploaded into the system if there are no errors in the file. If there are errors in the file, you can download the error file, fix the errors in the **original file,** and upload it back into Xoro.

{% hint style="info" %}
If you want to batch update the existing data, you can download the existing products by clicking on **Download Master Data File,** update the necessary values in the CSV file, and upload it back into Xoro.
{% endhint %}

### Vendor Mapping via Product Upload

If vendor-related fields such as **VendorListPrice**, **VendorDiscount**, **VendorPartNumber**, or **LeadTimeDays** are provided in the upload file, the system creates an item-vendor mapping during the upload process. A valid **DefaultVendorName** must be specified for the mapping to be created.

Follow the steps below to create item-vendor mappings while uploading products:

**Steps:**

1. Navigate to the **"Upload Products"** module and download the latest **Product Upload template**.

<figure><img src="/files/32bsUFcUhbf08afVzcLQ" alt=""><figcaption></figcaption></figure>

2. Populate the required product fields in the template.

<figure><img src="/files/WnqkBQNUC8yV9D4hb4Il" alt=""><figcaption></figcaption></figure>

3. Enter a valid value in the **DefaultVendorName** field.

<figure><img src="/files/GqPfi2YR40ujzX0BBtdE" alt=""><figcaption></figcaption></figure>

4. Enter values in the vendor-related fields, such as **VendorListPrice**, **VendorDiscount**, **VendorPartNumber**, or **LeadTimeDays**, as required.

<figure><img src="/files/H6540MsEpj6FpW0VGtkh" alt=""><figcaption></figcaption></figure>

5. Upload the completed CSV file.

<figure><img src="/files/2eJasXwG3uxWwag3MeWx" alt=""><figcaption></figcaption></figure>

6. Once the upload is processed successfully, the products (and variants, if applicable) are created in **Item Centre**, and the corresponding **item-vendor mapping** is automatically created for the items in the **Item Vendor Mapping Centre**.

<figure><img src="/files/vp4AmOt6IOGvgv8QOxXz" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FXcpJR5UbwbeGeeu1ure" alt=""><figcaption></figcaption></figure>

### Uploading Products Without Generating Variants

Users can upload the products without generating variants in three ways:

#### 1. Using the New “Product Header Only” Template

We has added a new product upload template specifically designed for uploading only product headers. This template excludes variant information and focuses solely on the product header details.&#x20;

**Steps:**

1. Go to the "Upload Products" module and download the new "Product Header Only" template.
2. Fill in the product details.
3. Ensure that you enable the “Use Product Header Only Template” option before uploading the file.
4. Upload the template to create product headers without variants.

#### 2. Using the Existing Template and Enabling the “Use Product Header Only Template” Option

One way to upload products without generating variants is by using the existing product upload template. Before uploading the file, ensure that you enable the “Use Product Header Only Template” option in the relevant module. This will ensure that only the product header is created, and variants will not be generated during the upload process.

**Steps:**

1. Go to the "Upload Products" module and download the template. Fill in the products details in the template.
2. Enable the “Use Product Header Only Template” option within the module.
3. Upload the template as usual. Only the product headers will be created without any associated variants.

#### 3. Using the Existing Template and Setting the “IsHeaderOnly” Column to True

Another method to prevent the generation of variants when using the existing upload template is by using the "IsHeaderOnly" column in the existing template.&#x20;

You can set the “IsHeaderOnly” column to true. When this column is set to true, the system will only create the product header and will not generate variants for the product.

{% hint style="info" %}
**Please Note:** If the "IsHeaderOnly" column is set to true in the first row of the template, it will automatically apply this setting to all subsequent rows in the template. This ensures consistency across all product entries in the file.
{% endhint %}

**Steps:**

1. Go to the "Upload Products" module and download the template. Fill in the products details in the template.
2. Locate the “IsHeaderOnly” column. Set the value of the “IsHeaderOnly” column to true.
3. Upload the template. Only the product headers will be created, and no variants will be generated.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.xorosoft.com/xoroerp-1/utilities/data-imports/upload-items-skus-products.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
