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

# Product catalog

> Complete guide to integrating your product catalog with e-CROSS

## Overview

Catalog integration is the foundation of your e-CROSS integration. It allows you to upload and manage your product catalog, including all Products and SKUs (Stock Keeping Units).

## Products and SKUs concept

Before integrating your catalog, it's important to understand the relationship between products and SKUs.

### Product

A **Product** is a group of related SKUs that share common attributes. Products represent the logical grouping of variations (by size, color or voltage) that belong together.

**Example**: "USB Charger Type C" is a product that contains multiple SKUs:

* USB Charger Type C - 1 meter - Silver
* USB Charger Type C - 2 meters - Silver
* USB Charger Type C - 1 meter - Black
* USB Charger Type C - 2 meters - Black

### SKU (Stock Keeping Unit)

A **SKU** is a specific variation of a product. Each SKU represents a unique sellable item with specific attributes.

**SKU Characteristics:**

* Has a unique `skuId` within your catalog
* Belongs to a `productId` (groups related SKUs)
* Has specific attributes (size, color, style, etc.)
* Has its own inventory level
* Has its own pricing

### Product-SKU relationship

* One product contains multiple SKUs
* All SKUs of a product share the same `productId`
* Each SKU has unique attributes that differentiate it
* One SKU per product should be marked as `main: true`

### Per-product integration

Catalog integration happens **per product**, meaning:

* All SKUs of the same product must be sent together in a single API request
* You cannot send SKUs individually - they must be grouped by `productId`
* The entire product (all its SKUs) is updated as a unit

### Main SKU

The `main` SKU is the primary variation used by sales channels to display product information in product listing pages. It's generally the most representative or popular variation of the product.

## Creating your catalog

<Steps>
  <Step title="Prepare your data">
    Organize your products and SKUs. Ensure:

    * Each product has a unique `productId`
    * Each SKU has a unique `skuId` within your catalog
    * All SKUs for a product are grouped together
    * One SKU per product is marked as `main: true`
    * The mandatory data is present, such as name, description, color, size, dimensions, weight, hscode, images, and so on.

    <Info>
      If you have questions or doubts regarding the data to be sent, refer to your e-CROSS representative during the onboarding process.
    </Info>
  </Step>

  <Step title="Send your catalog">
    Use the [Upsert SKUs API](/api-reference/merchant-catalog/upsert-skus) to upload your product. Send all SKUs for the product in a single request.
  </Step>

  <Step title="Verify Integration">
    Use the [Get SKU by Product API](/api-reference/merchant-catalog/get-sku-by-product) or [List SKUs API](/api-reference/merchant-catalog/list-skus) to verify the product was integrated correctly and wait for the localization process.
  </Step>
</Steps>

## Managing your catalog

### Updating existing products

To update a product:

1. Retrieve the current product state using the [Get SKU by Product API](/api-reference/merchant-catalog/get-sku-by-product)
2. Modify the SKU data as needed
3. Send the complete updated product (all SKUs) using the [Upsert SKUs API](/api-reference/merchant-catalog/upsert-skus)

<Warning>
  When updating a product, you must include ALL SKUs that should remain active. Any SKU not included in the update request will be deleted from the product.
</Warning>

### Adding new SKUs

To add new SKUs to an existing product:

1. Retrieve the current product state using the [Get SKU by Product API](/api-reference/merchant-catalog/get-sku-by-product)
2. Add the new SKU objects to the array
3. Send the complete product (existing + new SKUs) using the [Upsert SKUs API](/api-reference/merchant-catalog/upsert-skus)

### Removing SKUs

To remove SKUs from a product:

1. Retrieve the current product state using the [Get SKU by Product API](/api-reference/merchant-catalog/get-sku-by-product)
2. Remove the SKU objects you want to delete from the array
3. Send the updated product (without the removed SKUs) using the [Upsert SKUs API](/api-reference/merchant-catalog/upsert-skus)

**Example:**

* Initial upload: Product "ABC" with SKUs: \["SKU1", "SKU2", "SKU3"]
* Update upload: Product "ABC" with SKUs: \["SKU1", "SKU2"]
* Result: SKU3 is deleted from the product

## Checking product status

After integrating a product, you can check its localization status and the integration status with sales channels:

1. Use the [Get SKU by Product API](/api-reference/merchant-catalog/get-sku-by-product) to retrieve the product
2. Check the `salesChannelStatus` field for each sales channel
3. Status values include:
   * `READY_FOR_SALES_CHANNEL` - Pending integration
   * `SALES_CHANNEL_APPROVED` - Successfully integrated
   * `SALES_CHANNEL_DENIED` - Integration refused (check `statusMessage`)
   * `DENIED_REGULATORY` - Not allowed due to regulatory rules

## Best Practices

<Tip>
  * Use the same `description` for all SKUs of the same product due to sales channel limitations
  * Ensure all image URLs are publicly accessible. This is **VERY IMPORTANT** and may cause long delays in the onboarding process if not met
  * Make sure one SKU per product is marked as `main: true`
  * Keep your catalog synchronized by updating products when changes occur
  * Use the `lastUpdateDateFrom` filter in [List SKUs](/api-reference/merchant-catalog/list-skus) to sync only recently updated products
</Tip>
