> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kibocommerce.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vendor Inventory

Bulk-update inventory quantities across your fulfillment locations by uploading a CSV file.

<Card title="Watch: Vendor Inventory Management" icon="circle-play" href="/video/kibo-dropship-vendor-inventory-management" horizontal data-rec="video">
  See how vendors upload inventory via CSV so it is available to the order routing engine
</Card>

## **Overview**

The Inventory Upload feature lets vendors submit a CSV file that sets or updates stock quantities for any number of SKU and location combinations in a single operation. Uploads run as background jobs, so vendors can navigate away from the page once a file is submitted without canceling the operation.

Each upload is governed by the **Inventory Upload Mode** configured by the operator on the vendor's profile — either **Partial update** (default) or **Full replacement**. This mode determines how submitted quantities are reconciled against existing inventory and is shown to vendors as a confirmation note before they submit.

**Who does what:**

| **Role** | **Action**                                                                           |
| :------- | :----------------------------------------------------------------------------------- |
| Operator | Configures the Inventory Upload Mode per vendor (Partial update or Full replacement) |
| Vendor   | Uploads a CSV from the Vendor Portal to update inventory quantities across locations |

## **Operator Portal: Configuring Inventory Upload Mode**

### **What is Inventory Upload Mode?**

Inventory Upload Mode is a per-vendor setting that controls how the backend reconciles quantities when a vendor submits an inventory CSV.

| **Mode**                 | **Behavior**                                                                                  |
| :----------------------- | :-------------------------------------------------------------------------------------------- |
| Partial update (default) | Updates only the SKU/location pairs in the uploaded file. SKUs not included remain unchanged. |
| Full replacement         | Updates all inventory based on the uploaded file. SKUs not included are set to zero quantity. |

<Note>
  Note: The default for all new vendors is **Partial update** — a safe starting point that prevents accidental stock zero-outs during onboarding or routine restocks.
</Note>

### **Where to Find It**

**Path:** Operator Portal → Vendor Management → \[Vendor Name] → Overview → Vendor Settings card

The **Inventory Upload Mode** dropdown appears in the Vendor Settings card on the vendor's Overview tab, positioned after Vendor Type and Vendor Status.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.30.29-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=b46f66c01baec25758dcfc493386fa08" alt="Screenshot 2026 05 22 At 4 30 29 PM" width="3024" height="486" data-path="images/Screenshot-2026-05-22-at-4.30.29-PM.png" />
</Frame>

### **Changing the Mode**

1. Open the vendor record and navigate to the **Overview** tab.
2. In the **Vendor Settings** card, locate the **Inventory Upload Mode** dropdown.
3. Select **Partial update** or **Full replacement**.
4. Inline confirm (✓) and cancel (✗) controls appear to the right of the field — the new value is not yet saved.
5. Click ✓ to save. Click ✗ to revert to the previously saved value without making an API call.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.31.11-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=002e4b34b881887f20a0b5e9a0d3d3d6" alt="Screenshot 2026 05 22 At 4 31 11 PM" width="3024" height="486" data-path="images/Screenshot-2026-05-22-at-4.31.11-PM.png" />
</Frame>

On a successful save, a green **"Settings updated"** toast appears top-center of the screen:

"Inventory upload mode has been set to \[Partial update | Full replacement]."

The toast auto-dismisses after 3.5 seconds or can be closed manually. If the save fails, a red **"Could not save"** toast appears and the dropdown stays in its dirty state for retry.

<Note>
  Note: Vendor activation is never blocked by this field — Inventory Upload Mode always has a default value.
</Note>

## **Vendor Portal: Uploading Inventory**

### **CSV Format**

The accepted file format is .csv with exactly three columns:

| **Column**     | **Description**                                          |
| :------------- | :------------------------------------------------------- |
| `SKU`          | Your vendor SKU for the product                          |
| `LocationCode` | The unique code for the fulfillment location             |
| `Quantity`     | The inventory quantity to set for that SKU/location pair |

A downloadable template containing only the header row is available directly on the upload screen. Click **Download template** in the top-right corner of the drop zone to save it.

### **How to Upload Inventory**

#### **Step 1 — Drop or select your file**

On the Inventory Upload screen, drag your CSV onto the drop zone or click anywhere in the zone to open the file picker. Only .csv files are accepted — any other file type is rejected inline without proceeding.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.32.33-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=1a048c011b2b5a0b895db4914ba5fc85" alt="Screenshot 2026 05 22 At 4 32 33 PM" width="3024" height="1540" data-path="images/Screenshot-2026-05-22-at-4.32.33-PM.png" />
</Frame>

#### **Step 2 — Review the confirmation panel**

After selecting a file, a confirmation panel appears showing the file name and a note describing what the upload will do, based on your operator-configured Inventory Upload Mode:

| **Mode**         | **Confirmation note**                                                                                                                                                                  |
| :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Partial update   | "This will update existing inventory. Quantities for the SKU/location pairs in this file will overwrite current values. SKUs not included in this file will remain unchanged."         |
| Full replacement | "This will replace existing inventory. Quantities for the SKU/location pairs in this file will overwrite current values. SKUs not included in this file will be set to zero quantity." |

Review the confirmation note carefully — a **Full replacement** upload will zero out any SKU not present in the file.

Click **Upload** to submit, or **Cancel** to discard the file and return to the drop zone.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.35.13-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=4df9b44907226f8591a8ebe7ac0090f5" alt="Screenshot 2026 05 22 At 4 35 13 PM" width="2510" height="562" data-path="images/Screenshot-2026-05-22-at-4.35.13-PM.png" />
</Frame>

#### **Step 3 — Validation**

After clicking **Upload**, the panel transitions to a **Validating** state. All validation is handled by the backend — you cannot cancel an upload once validation has started.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.41.16-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=48cb6bd693156d374cf01508b151159c" alt="Screenshot 2026 05 22 At 4 41 16 PM" width="2118" height="286" data-path="images/Screenshot-2026-05-22-at-4.41.16-PM.png" />
</Frame>

#### **Step 4 — Review the result**

When validation completes, the panel displays a per-location result for every location in the file.

**All locations passed** — a green success panel confirms inventory was updated for every location. Click **Done** to return to the drop zone. A new **Processing** row is added to Upload history and transitions to **Success** once the background job finishes.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.45.31-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=275e58dc68bd392c4f72716c0949499e" alt="Screenshot 2026 05 22 At 4 45 31 PM" width="2530" height="644" data-path="images/Screenshot-2026-05-22-at-4.45.31-PM.png" />
</Frame>

**Partial (some passed, some failed)** — an amber warning panel lists which locations were updated and which failed. Correct the issues in your CSV and re-upload. Click **Done** to dismiss.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.46.15-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=7e71d1e1dfd38461c27c00ec5582de4c" alt="Screenshot 2026 05 22 At 4 46 15 PM" width="2530" height="644" data-path="images/Screenshot-2026-05-22-at-4.46.15-PM.png" />
</Frame>

**All locations failed** — a red error panel confirms no inventory was updated. Review the failure reasons, fix your CSV, and click **Try another file** to start over.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.41.51-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=f97792142ee1afb961e854875033873b" alt="Screenshot 2026 05 22 At 4 41 51 PM" width="2514" height="766" data-path="images/Screenshot-2026-05-22-at-4.41.51-PM.png" />
</Frame>

**Per-location result rows** show:

* A pass (✓) or fail (✗) icon
* The location code
* A **Success** or **Failed** status badge
* For passed: "Inventory updated"
* For failed: the specific reason returned by the backend

<Note>
  Note: Validation is atomic per location — if any row for a location is invalid, no rows for that location are updated.
</Note>

### **Upload History**

The **Upload history** table records every submitted upload with: file name, uploading user's email, submission timestamp, and a status chip.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.54.17-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=5845209888fac510cd3e91be7d9714ca" alt="Screenshot 2026 05 22 At 4 54 17 PM" width="2530" height="1372" data-path="images/Screenshot-2026-05-22-at-4.54.17-PM.png" />
</Frame>

#### **Filtering**

Use the **Status** dropdown to the right of the heading to filter rows. Options: All statuses, Success, Partial, Failed. The footer shows a count of visible rows.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.54.48-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=5d0dbf9c405e3d74fb751cb3bace34e3" alt="Screenshot 2026 05 22 At 4 54 48 PM" width="2530" height="414" data-path="images/Screenshot-2026-05-22-at-4.54.48-PM.png" />
</Frame>

#### **Viewing details for Partial or Failed uploads**

Rows with a **Partial** or **Failed** status include a **View details** link. Clicking the row or the link expands a per-location breakdown directly beneath it — using the same location result format as the in-page result panel. Click **Hide details** to collapse.

<Frame>
  <img src="https://mintcdn.com/kibocommerce-59e68a4a/Q2Mx6xOgnU1_JWyV/images/Screenshot-2026-05-22-at-4.55.32-PM.png?fit=max&auto=format&n=Q2Mx6xOgnU1_JWyV&q=85&s=83248605002c4ec27e27a8f0d957aad5" alt="Screenshot 2026 05 22 At 4 55 32 PM" width="2530" height="576" data-path="images/Screenshot-2026-05-22-at-4.55.32-PM.png" />
</Frame>

### **Status Reference**

| **Status** | **Meaning**                                                        |
| :--------- | :----------------------------------------------------------------- |
| Processing | Background job is running. No action needed.                       |
| Success    | All locations updated successfully.                                |
| Partial    | Some locations updated; others failed. View details for reasons.   |
| Failed     | No locations updated. View details and re-upload with corrections. |
