# Zoho Inventory

> Inventory and order management. Track stock, create items, sales orders, packages, invoices and purchase orders, and record customer payments.

App · E-Commerce · 20 actions. Web page: https://docs.lodol.com/docs/integrations/zoho-inventory

## Actions

### Adjust stock

Add or remove stock of an item, such as after a count or for damaged goods. A positive quantity adds stock; a negative one removes it.

**Inputs**

- Item ID (`item_id`, text, required): The item's id, from 'List items' or 'Create an item', or the item's address in Zoho Inventory.
- Quantity change (`quantity_adjusted`, number, required): How much to change the stock by, e.g. 10 to add ten or -3 to remove three.
- Reason (`reason`, text, required): Why the stock changed, such as Stock count or Damaged goods.
- Date (`date`, date): Optional. The adjustment date. Defaults to today.
- Location (`location_id`, text): Optional. The location (warehouse) the stock moves at. Leave blank for your primary location.
- Description (`description`, text): Optional. More detail about the adjustment.
- Reference number (`reference_number`, text): Optional. Your own reference.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory stock adjustment.

- `adjustment_type` (text): quantity.
- `date` (text): The adjustment date, YYYY-MM-DD.
- `description` (text): The adjustment's description.
- `inventory_adjustment_id` (text): The adjustment's id.
- `line_items` (list): The adjusted items.
- `location_id` (text): The location's id.
- `location_name` (text): The location's name.
- `reason` (text): Why the stock changed.
- `reason_id` (text): The reason's id.
- `reference_number` (text): Your reference.
- `total` (number): The value of the adjustment.

**Example output**

```json
{
  "adjustment_type": "quantity",
  "date": "2026-09-30",
  "inventory_adjustment_id": "4815000000049001",
  "line_items": [
    {
      "item_id": "4815000000044208",
      "location_id": "4815000000000132",
      "name": "Bamboo cutting board",
      "quantity_adjusted": 10
    }
  ],
  "reason": "Stock count"
}
```

### Confirm a sales order

Mark a draft sales order as confirmed, so it can be packed.

**Inputs**

- Sales order ID (`salesorder_id`, text, required): The sales order's id, from 'List sales orders' or 'Create a sales order', or its address in Zoho Inventory.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A sales order's status change.

- `message` (text): Zoho's confirmation message.
- `salesorder_id` (text): The sales order's id.
- `status` (text): The new status.

**Example output**

```json
{
  "message": "Sales order status has been changed to 'Confirmed'",
  "salesorder_id": "4815000000045091",
  "status": "confirmed"
}
```

### Create a contact

Create a customer or vendor. The email, name and phone become its primary contact person.

**Inputs**

- Display name (`contact_name`, text, required): The contact's display name. Must be unique.
- Type (`contact_type`, text): Optional. Customer or vendor; purchase orders need a vendor. Defaults to customer. One of: `customer`, `vendor`. Default: `customer`.
- Company name (`company_name`, text): Optional.
- First name (`first_name`, text): Optional. The primary contact person's first name.
- Last name (`last_name`, text): Optional. The primary contact person's last name.
- Email (`email`, text): Optional. The primary contact person's email.
- Phone (`phone`, text): Optional. The primary contact person's phone.
- Website (`website`, text): Optional.
- Billing street (`address`, text): Optional. Street address for billing.
- Billing city (`city`, text): Optional.
- Billing state or region (`state`, text): Optional.
- Billing postal code (`zip_code`, text): Optional.
- Billing country (`country`, text): Optional.
- Notes (`notes`, text): Optional. Internal notes about the contact.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory contact.

- `billing_address` (object): A postal address.
- `company_name` (text): The company name.
- `contact_id` (text): The contact's id.
- `contact_name` (text): The display name.
- `contact_persons` (list): The people at the contact.
- `contact_type` (text): customer or vendor.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The contact's currency, e.g. USD.
- `currency_id` (text): The contact's currency id.
- `custom_fields` (list): Custom field values.
- `email` (text): The primary contact person's email.
- `first_name` (text): The primary contact person's first name.
- `has_transaction` (true/false): Whether it has any transactions.
- `last_modified_time` (text): When it was last changed.
- `last_name` (text): The primary contact person's last name.
- `location_id` (text): The contact's location id.
- `location_name` (text): The contact's location name.
- `mobile` (text): The primary contact person's mobile.
- `notes` (text): Notes.
- `outstanding_receivable_amount` (number): How much the customer owes.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' name.
- `phone` (text): The primary contact person's phone.
- `primary_contact_id` (text): The primary contact person's id.
- `shipping_address` (object): A postal address.
- `status` (text): active or inactive.
- `unused_credits_receivable_amount` (number): Unused credits.
- `website` (text): The website.

**Example output**

```json
{
  "company_name": "Bowman & Co",
  "contact_id": "4815000000044080",
  "contact_name": "Bowman & Co",
  "contact_type": "customer",
  "created_time": "2026-09-01T10:15:00-0700",
  "currency_code": "USD",
  "email": "orders@bowman.example",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "outstanding_receivable_amount": 0,
  "status": "active"
}
```

### Create a purchase order

Create a draft purchase order to restock items from a vendor. Issue it to send it on.

**Inputs**

- Vendor ID (`vendor_id`, text, required): The vendor's contact id, from 'List contacts' or 'Create a contact' with the type vendor.
- Item ID (`item_id`, text): The item on the order's line, from 'List items' or 'Create an item'. Leave blank when giving several lines below.
- Quantity (`quantity`, number): Optional. How many. Defaults to 1.
- Unit cost (`purchase_rate`, number): Optional. The cost of one. Defaults to the item's purchase price. At least 0.
- Line description (`description`, text): Optional. Text shown on the line.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Line items (advanced) (`line_items`, list): Optional. A list of lines for an order with several, e.g. [{"item_id": "4815000000044208", "quantity": 10, "purchase_rate": 11}]. Each line takes item_id, name, description, quantity, purchase_rate, tax_id, location_id. When given it replaces the single-line fields above.
- Date (`date`, date): Optional. The document date. Defaults to today.
- Expected delivery date (`delivery_date`, date): Optional.
- Reference number (`reference_number`, text): Optional. Your own reference.
- Purchase order number (`purchaseorder_number`, text): Optional. Leave blank for Zoho's next number.
- Deliver to location (`location_id`, text): Optional. Where the stock arrives. Leave blank for your primary location.
- Notes (`notes`, text): Optional. Notes shown on the document.
- Terms & conditions (`terms`, text): Optional. Terms shown on the document.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory purchase order.

- `attention` (text): Who to address it to.
- `billed_status` (text): Whether it has been billed.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `date` (text): The order date, YYYY-MM-DD.
- `delivery_date` (text): The expected delivery date.
- `last_modified_time` (text): When it was last changed.
- `line_items` (list): The order's lines.
- `location_id` (text): The location's id.
- `location_name` (text): The location's name.
- `notes` (text): Notes.
- `purchaseorder_id` (text): The purchase order's id.
- `purchaseorder_number` (text): The purchase order number, e.g. PO-00003.
- `reference_number` (text): Your reference.
- `ship_via` (text): The shipping method.
- `status` (text): The status, e.g. draft or issued.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `terms` (text): Terms.
- `total` (number): The order total.
- `vendor_id` (text): The vendor's id.
- `vendor_name` (text): The vendor's name.

**Example output**

```json
{
  "currency_code": "USD",
  "date": "2026-09-30",
  "purchaseorder_id": "4815000000048011",
  "purchaseorder_number": "PO-00003",
  "status": "draft",
  "total": 55,
  "vendor_id": "4815000000044090",
  "vendor_name": "Timber Supply Ltd"
}
```

### Create a sales order

Create a draft sales order for a customer. Confirm it before packing it.

**Inputs**

- Customer ID (`customer_id`, text, required): The customer's contact id, from 'List contacts' or 'Create a contact'.
- Item ID (`item_id`, text): The item on the order's line, from 'List items' or 'Create an item'. Leave blank when giving several lines below.
- Quantity (`quantity`, number): Optional. How many. Defaults to 1.
- Unit price (`rate`, number): Optional. The price of one. Defaults to the item's selling price. At least 0.
- Line description (`description`, text): Optional. Text shown on the line.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Line items (advanced) (`line_items`, list): Optional. A list of lines for an order with several, e.g. [{"item_id": "4815000000044208", "quantity": 2, "rate": 150}]. Each line takes item_id, name, description, quantity, rate, tax_id, location_id. When given it replaces the single-line fields above.
- Date (`date`, date): Optional. The document date. Defaults to today.
- Expected shipment date (`shipment_date`, date): Optional.
- Reference number (`reference_number`, text): Optional. Your own reference.
- Sales order number (`salesorder_number`, text): Optional. Leave blank for Zoho's next number.
- Location (`location_id`, text): Optional. The location (warehouse) the stock moves at. Leave blank for your primary location.
- Notes (`notes`, text): Optional. Notes shown on the document.
- Terms & conditions (`terms`, text): Optional. Terms shown on the document.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory sales order.

- `adjustment` (number): The adjustment.
- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The order date, YYYY-MM-DD.
- `discount` (text): The discount.
- `last_modified_time` (text): When it was last changed.
- `line_items` (list): The order's lines.
- `location_id` (text): The location's id.
- `location_name` (text): The location's name.
- `notes` (text): Notes.
- `reference_number` (text): Your reference.
- `salesorder_id` (text): The sales order's id.
- `salesorder_number` (text): The sales order number, e.g. SO-00012.
- `salesperson_id` (text): The salesperson's id.
- `salesperson_name` (text): The salesperson's name.
- `shipment_date` (text): The expected shipment date.
- `shipping_address` (object): A postal address.
- `shipping_charge` (number): The shipping charge.
- `status` (text): The status, e.g. draft or confirmed.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `terms` (text): Terms.
- `total` (number): The order total.

**Example output**

```json
{
  "currency_code": "USD",
  "customer_id": "4815000000044080",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "line_items": [
    {
      "item_id": "4815000000044208",
      "item_total": 48,
      "line_item_id": "4815000000045095",
      "name": "Bamboo cutting board",
      "quantity": 2,
      "quantity_invoiced": 0,
      "quantity_packed": 0,
      "quantity_shipped": 0,
      "rate": 24
    }
  ],
  "salesorder_id": "4815000000045091",
  "salesorder_number": "SO-00012",
  "status": "draft",
  "total": 48
}
```

### Create an invoice

Create a draft invoice. Give a sales order to invoice everything on it not yet invoiced, or give the lines yourself.

**Inputs**

- Sales order ID (`salesorder_id`, text): Optional. Invoice this sales order: its customer and every line not yet invoiced. The line fields below are then ignored.
- Customer ID (`customer_id`, text): The customer's contact id. Optional when a sales order is given.
- Item ID (`item_id`, text): Optional. The item on the invoice's line.
- Quantity (`quantity`, number): Optional. How many. Defaults to 1.
- Unit price (`rate`, number): Optional. The price of one. Defaults to the item's selling price. At least 0.
- Line description (`description`, text): Optional. Text shown on the line.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Line items (advanced) (`line_items`, list): Optional. A list of lines for an order with several, e.g. [{"item_id": "4815000000044208", "quantity": 2, "rate": 150}]. Each line takes item_id, name, description, quantity, rate, tax_id, location_id. When given it replaces the single-line fields above.
- Invoice date (`date`, date): Optional. Defaults to today.
- Due date (`due_date`, date): Optional. Defaults to the customer's payment terms.
- Reference number (`reference_number`, text): Optional. Your own reference.
- Location (`location_id`, text): Optional. The location (warehouse) the stock moves at. Leave blank for your primary location.
- Notes (`notes`, text): Optional. Notes shown on the document.
- Terms & conditions (`terms`, text): Optional. Terms shown on the document.
- Email it to the customer now (`send`, true/false): Optional. Off creates a draft; mark it sent later with 'Mark an invoice as sent'. Default: `false`.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory invoice.

- `adjustment` (number): The adjustment.
- `balance` (number): How much is still owed.
- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `credits_applied` (number): Credits applied.
- `currency_code` (text): The currency, e.g. USD.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The invoice date, YYYY-MM-DD.
- `due_date` (text): The due date, YYYY-MM-DD.
- `invoice_id` (text): The invoice's id.
- `invoice_number` (text): The invoice number, e.g. INV-000042.
- `invoice_url` (text): The customer-facing link to the invoice.
- `last_modified_time` (text): When it was last changed.
- `line_items` (list): The invoice's lines.
- `location_id` (text): The location's id.
- `location_name` (text): The location's name.
- `notes` (text): Notes.
- `payment_made` (number): How much has been paid.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' name.
- `reference_number` (text): Your reference.
- `shipping_address` (object): A postal address.
- `shipping_charge` (number): The shipping charge.
- `status` (text): draft, sent, viewed, overdue, unpaid, partially_paid, paid or void.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `terms` (text): Terms.
- `total` (number): The invoice total.

**Example output**

```json
{
  "balance": 48,
  "currency_code": "USD",
  "customer_id": "4815000000044080",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "due_date": "2026-10-15",
  "invoice_id": "4815000000046077",
  "invoice_number": "INV-000042",
  "status": "draft",
  "total": 48
}
```

### Create an item

Create a product or service, optionally with its opening stock.

**Inputs**

- Name (`name`, text, required): The item's name.
- Item type (`item_type`, text): Optional. Inventory items track stock. Defaults to inventory. One of: `inventory` (Inventory (tracks stock)), `sales_and_purchases` (Sales and purchases (no stock)), `sales` (Sales only (no stock)), `purchases` (Purchases only (no stock)). Default: `inventory`.
- Goods or service (`product_type`, text): Optional. Defaults to goods. One of: `goods`, `service`. Default: `goods`.
- SKU (`sku`, text): Optional. The stock keeping unit; must be unique.
- Unit (`unit`, text): Optional. The unit it is counted in, such as pcs or kg.
- Selling price (`rate`, number): Optional. The price you sell one for. At least 0.
- Purchase price (`purchase_rate`, number): Optional. The price you buy one for. At least 0.
- Sales description (`description`, text): Optional. Shown on sales orders and invoices.
- Purchase description (`purchase_description`, text): Optional. Shown on purchase orders.
- Reorder level (`reorder_level`, number): Optional. The stock level at which to reorder. At least 0.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Preferred vendor ID (`vendor_id`, text): Optional. The vendor's contact id.
- Opening stock (`opening_stock`, number): Optional. How many you have now. Inventory items only. At least 0.
- Opening stock value per unit (`opening_stock_rate`, number): Optional. What each unit of the opening stock is worth. At least 0.
- Location (`location_id`, text): Optional. Where the opening stock is. Leave blank for your primary location.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory item.

- `actual_available_stock` (number): Total stock available after committed orders. Summed from the locations when Zoho does not send it.
- `available_stock` (number): Total stock available to sell. Summed from the locations when Zoho does not send it.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `custom_fields` (list): Custom field values.
- `description` (text): The sales description.
- `ean` (text): The EAN code.
- `isbn` (text): The ISBN.
- `item_id` (text): The item's id.
- `item_type` (text): inventory, sales, purchases or sales_and_purchases.
- `last_modified_time` (text): When it was last changed.
- `locations` (list): Stock per location.
- `name` (text): The item's name.
- `part_number` (text): The part number.
- `product_type` (text): goods or service.
- `purchase_description` (text): The purchase description.
- `purchase_rate` (number): The purchase price.
- `rate` (number): The selling price.
- `reorder_level` (number): The stock level at which to reorder.
- `sku` (text): The stock keeping unit.
- `status` (text): active or inactive.
- `stock_on_hand` (number): Total stock on hand. Summed from the locations when Zoho does not send it.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `unit` (text): The unit it is counted in, e.g. pcs.
- `upc` (text): The UPC code.
- `vendor_id` (text): The preferred vendor's id.
- `vendor_name` (text): The preferred vendor's name.

**Example output**

```json
{
  "actual_available_stock": 38,
  "available_stock": 38,
  "created_time": "2026-09-01T10:15:00-0700",
  "item_id": "4815000000044208",
  "item_type": "inventory",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "locations": [
    {
      "is_primary": true,
      "location_actual_available_stock": 38,
      "location_available_stock": 38,
      "location_id": "4815000000000132",
      "location_name": "Main warehouse",
      "location_stock_on_hand": 40
    }
  ],
  "name": "Bamboo cutting board",
  "product_type": "goods",
  "purchase_rate": 11,
  "rate": 24,
  "reorder_level": 5,
  "sku": "BCB-001",
  "status": "active",
  "stock_on_hand": 40,
  "unit": "pcs"
}
```

### Get a contact

Get a customer's or vendor's details, addresses, contact persons and outstanding balance.

**Inputs**

- Contact ID (`contact_id`, text, required): The contact's id, from 'List contacts' or 'Create a contact', or the contact's address in Zoho Inventory.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory contact.

- `billing_address` (object): A postal address.
- `company_name` (text): The company name.
- `contact_id` (text): The contact's id.
- `contact_name` (text): The display name.
- `contact_persons` (list): The people at the contact.
- `contact_type` (text): customer or vendor.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The contact's currency, e.g. USD.
- `currency_id` (text): The contact's currency id.
- `custom_fields` (list): Custom field values.
- `email` (text): The primary contact person's email.
- `first_name` (text): The primary contact person's first name.
- `has_transaction` (true/false): Whether it has any transactions.
- `last_modified_time` (text): When it was last changed.
- `last_name` (text): The primary contact person's last name.
- `location_id` (text): The contact's location id.
- `location_name` (text): The contact's location name.
- `mobile` (text): The primary contact person's mobile.
- `notes` (text): Notes.
- `outstanding_receivable_amount` (number): How much the customer owes.
- `payment_terms` (number): Payment terms in days.
- `payment_terms_label` (text): The payment terms' name.
- `phone` (text): The primary contact person's phone.
- `primary_contact_id` (text): The primary contact person's id.
- `shipping_address` (object): A postal address.
- `status` (text): active or inactive.
- `unused_credits_receivable_amount` (number): Unused credits.
- `website` (text): The website.

**Example output**

```json
{
  "company_name": "Bowman & Co",
  "contact_id": "4815000000044080",
  "contact_name": "Bowman & Co",
  "contact_type": "customer",
  "created_time": "2026-09-01T10:15:00-0700",
  "currency_code": "USD",
  "email": "orders@bowman.example",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "outstanding_receivable_amount": 0,
  "status": "active"
}
```

### Get a sales order

Get a sales order with its lines and how much of each is packed, shipped and invoiced.

**Inputs**

- Sales order ID (`salesorder_id`, text, required): The sales order's id, from 'List sales orders' or 'Create a sales order', or its address in Zoho Inventory.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory sales order.

- `adjustment` (number): The adjustment.
- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `currency_code` (text): The currency, e.g. USD.
- `custom_fields` (list): Custom field values.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The order date, YYYY-MM-DD.
- `discount` (text): The discount.
- `last_modified_time` (text): When it was last changed.
- `line_items` (list): The order's lines.
- `location_id` (text): The location's id.
- `location_name` (text): The location's name.
- `notes` (text): Notes.
- `reference_number` (text): Your reference.
- `salesorder_id` (text): The sales order's id.
- `salesorder_number` (text): The sales order number, e.g. SO-00012.
- `salesperson_id` (text): The salesperson's id.
- `salesperson_name` (text): The salesperson's name.
- `shipment_date` (text): The expected shipment date.
- `shipping_address` (object): A postal address.
- `shipping_charge` (number): The shipping charge.
- `status` (text): The status, e.g. draft or confirmed.
- `sub_total` (number): The total before tax.
- `tax_total` (number): The tax.
- `terms` (text): Terms.
- `total` (number): The order total.

**Example output**

```json
{
  "currency_code": "USD",
  "customer_id": "4815000000044080",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "line_items": [
    {
      "item_id": "4815000000044208",
      "item_total": 48,
      "line_item_id": "4815000000045095",
      "name": "Bamboo cutting board",
      "quantity": 2,
      "quantity_invoiced": 0,
      "quantity_packed": 0,
      "quantity_shipped": 0,
      "rate": 24
    }
  ],
  "salesorder_id": "4815000000045091",
  "salesorder_number": "SO-00012",
  "status": "draft",
  "total": 48
}
```

### Get an item's stock

Get an item's details and how many are in stock, in total and at each location.

**Inputs**

- Item ID (`item_id`, text, required): The item's id, from 'List items' or 'Create an item', or the item's address in Zoho Inventory.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory item.

- `actual_available_stock` (number): Total stock available after committed orders. Summed from the locations when Zoho does not send it.
- `available_stock` (number): Total stock available to sell. Summed from the locations when Zoho does not send it.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `custom_fields` (list): Custom field values.
- `description` (text): The sales description.
- `ean` (text): The EAN code.
- `isbn` (text): The ISBN.
- `item_id` (text): The item's id.
- `item_type` (text): inventory, sales, purchases or sales_and_purchases.
- `last_modified_time` (text): When it was last changed.
- `locations` (list): Stock per location.
- `name` (text): The item's name.
- `part_number` (text): The part number.
- `product_type` (text): goods or service.
- `purchase_description` (text): The purchase description.
- `purchase_rate` (number): The purchase price.
- `rate` (number): The selling price.
- `reorder_level` (number): The stock level at which to reorder.
- `sku` (text): The stock keeping unit.
- `status` (text): active or inactive.
- `stock_on_hand` (number): Total stock on hand. Summed from the locations when Zoho does not send it.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `unit` (text): The unit it is counted in, e.g. pcs.
- `upc` (text): The UPC code.
- `vendor_id` (text): The preferred vendor's id.
- `vendor_name` (text): The preferred vendor's name.

**Example output**

```json
{
  "actual_available_stock": 38,
  "available_stock": 38,
  "created_time": "2026-09-01T10:15:00-0700",
  "item_id": "4815000000044208",
  "item_type": "inventory",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "locations": [
    {
      "is_primary": true,
      "location_actual_available_stock": 38,
      "location_available_stock": 38,
      "location_id": "4815000000000132",
      "location_name": "Main warehouse",
      "location_stock_on_hand": 40
    }
  ],
  "name": "Bamboo cutting board",
  "product_type": "goods",
  "purchase_rate": 11,
  "rate": 24,
  "reorder_level": 5,
  "sku": "BCB-001",
  "status": "active",
  "stock_on_hand": 40,
  "unit": "pcs"
}
```

### Issue a purchase order

Mark a draft purchase order as issued to the vendor.

**Inputs**

- Purchase order ID (`purchaseorder_id`, text, required): The purchase order's id, from 'List purchase orders' or 'Create a purchase order'.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A purchase order's status change.

- `message` (text): Zoho's confirmation message.
- `purchaseorder_id` (text): The purchase order's id.
- `status` (text): The new status.

**Example output**

```json
{
  "message": "The purchase order has been marked as issued.",
  "purchaseorder_id": "4815000000048011",
  "status": "issued"
}
```

### List contacts

List customers and vendors, optionally searched and sorted. Choosing a type keeps only those contacts from each page.

**Inputs**

- Type (`contact_type`, text): Optional. Only customers, or only vendors. One of: `customer`, `vendor`.
- Search (`search_text`, text): Optional. Only records matching this text.
- Show (`filter_by`, text): Optional. Which contacts to include. One of: `Status.All` (All), `Status.Active` (Active), `Status.Inactive` (Inactive).
- Sort by (`sort_column`, text): Optional. The field to sort by. One of: `contact_name` (Name), `first_name` (First name), `last_name` (Last name), `email`, `outstanding_receivable_amount` (Amount owed), `created_time` (Created), `last_modified_time` (Last modified).
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**

- `contacts` (list): The contacts.
- `count` (number): How many contacts are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "contacts": [
    {
      "company_name": "Bowman & Co",
      "contact_id": "4815000000044080",
      "contact_name": "Bowman & Co",
      "contact_type": "customer",
      "created_time": "2026-09-01T10:15:00-0700",
      "currency_code": "USD",
      "email": "orders@bowman.example",
      "last_modified_time": "2026-09-01T10:15:00-0700",
      "outstanding_receivable_amount": 0,
      "status": "active"
    }
  ],
  "count": 1,
  "has_more_page": false,
  "page": 1,
  "per_page": 200
}
```

### List invoices

List invoices, optionally by status or customer.

**Inputs**

- Status (`status`, text): Optional. Only invoices with this status. One of: `draft`, `sent`, `viewed`, `overdue`, `unpaid`, `partially_paid` (Partially paid), `paid`, `void`.
- Customer ID (`customer_id`, text): Optional. Only this customer's invoices.
- Search (`search_text`, text): Optional. Only records matching this text.
- Sort by (`sort_column`, text): Optional. The field to sort by. One of: `customer_name` (Customer), `invoice_number` (Invoice number), `date`, `due_date` (Due date), `total`, `balance`, `created_time` (Created).
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many invoices are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `invoices` (list): The invoices.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "count": 1,
  "has_more_page": false,
  "invoices": [
    {
      "balance": 48,
      "currency_code": "USD",
      "customer_id": "4815000000044080",
      "customer_name": "Bowman & Co",
      "date": "2026-09-30",
      "due_date": "2026-10-15",
      "invoice_id": "4815000000046077",
      "invoice_number": "INV-000042",
      "status": "draft",
      "total": 48
    }
  ],
  "page": 1,
  "per_page": 200
}
```

### List items

List items with their stock, optionally searched, filtered (for example to low stock) and sorted.

**Inputs**

- Search (`search_text`, text): Optional. Only records matching this text.
- Show (`filter_by`, text): Optional. Which items to include. One of: `Status.All` (All), `Status.Active` (Active), `Status.Inactive` (Inactive), `Status.Lowstock` (Low stock), `ItemType.Inventory` (Inventory items), `ItemType.Service` (Services).
- Sort by (`sort_column`, text): Optional. The field to sort by. One of: `name`, `sku`, `rate` (Selling price), `purchase_rate` (Purchase price), `created_time` (Created), `last_modified_time` (Last modified), `reorder_level` (Reorder level), `stock_on_hand` (Stock on hand).
- Sort order (`sort_order`, text): Optional. Ascending or descending. One of: `A` (Ascending), `D` (Descending).
- Location (`location_id`, text): Optional. Only items stocked at this location.
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many items are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `items` (list): The items.
- `page` (number): This page's number.
- `per_page` (number): The page size.

**Example output**

```json
{
  "count": 1,
  "has_more_page": false,
  "items": [
    {
      "actual_available_stock": 38,
      "available_stock": 38,
      "created_time": "2026-09-01T10:15:00-0700",
      "item_id": "4815000000044208",
      "item_type": "inventory",
      "last_modified_time": "2026-09-01T10:15:00-0700",
      "locations": [
        {
          "is_primary": true,
          "location_actual_available_stock": 38,
          "location_available_stock": 38,
          "location_id": "4815000000000132",
          "location_name": "Main warehouse",
          "location_stock_on_hand": 40
        }
      ],
      "name": "Bamboo cutting board",
      "product_type": "goods",
      "purchase_rate": 11,
      "rate": 24,
      "reorder_level": 5,
      "sku": "BCB-001",
      "status": "active",
      "stock_on_hand": 40,
      "unit": "pcs"
    }
  ],
  "page": 1,
  "per_page": 200
}
```

### List purchase orders

List purchase orders with their status. Giving a vendor keeps only their orders from each page.

**Inputs**

- Vendor ID (`vendor_id`, text): Optional. Only this vendor's orders.
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many purchase orders are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `page` (number): This page's number.
- `per_page` (number): The page size.
- `purchaseorders` (list): The purchase orders.

**Example output**

```json
{
  "count": 1,
  "has_more_page": false,
  "page": 1,
  "per_page": 200,
  "purchaseorders": [
    {
      "currency_code": "USD",
      "date": "2026-09-30",
      "purchaseorder_id": "4815000000048011",
      "purchaseorder_number": "PO-00003",
      "status": "draft",
      "total": 55,
      "vendor_id": "4815000000044090",
      "vendor_name": "Timber Supply Ltd"
    }
  ]
}
```

### List sales orders

List sales orders with their status and how much is packed, shipped and invoiced. Giving a customer keeps only their orders from each page.

**Inputs**

- Customer ID (`customer_id`, text): Optional. Only this customer's orders.
- Page (`page`, number): Optional. Which page of results to return, starting at 1. At least 1.
- Page size (`per_page`, number): Optional. How many to return per page, 1 to 200. Zoho's default is 200. From 1 to 200.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**

- `count` (number): How many sales orders are on this page.
- `has_more_page` (true/false): Whether another page is available.
- `page` (number): This page's number.
- `per_page` (number): The page size.
- `salesorders` (list): The sales orders.

**Example output**

```json
{
  "count": 1,
  "has_more_page": false,
  "page": 1,
  "per_page": 200,
  "salesorders": [
    {
      "currency_code": "USD",
      "customer_id": "4815000000044080",
      "customer_name": "Bowman & Co",
      "date": "2026-09-30",
      "salesorder_id": "4815000000045091",
      "salesorder_number": "SO-00012",
      "status": "draft",
      "total": 48
    }
  ]
}
```

### Mark an invoice as sent

Mark a draft invoice as sent without emailing it, so payments can be recorded against it.

**Inputs**

- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice'.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: An invoice's status change.

- `invoice_id` (text): The invoice's id.
- `message` (text): Zoho's confirmation message.
- `status` (text): The new status.

**Example output**

```json
{
  "invoice_id": "4815000000046077",
  "message": "Invoice status has been changed to Sent.",
  "status": "sent"
}
```

### Pack a sales order

Create a package for a confirmed sales order. By default every line is packed at the quantity not yet packed.

**Inputs**

- Sales order ID (`salesorder_id`, text, required): The sales order's id, from 'List sales orders' or 'Create a sales order', or its address in Zoho Inventory.
- Packing date (`date`, date): Optional. Defaults to today.
- Package number (`package_number`, text): Optional. Leave blank for Zoho's next number.
- Notes (`notes`, text): Optional. Notes shown on the document.
- Lines to pack (advanced) (`line_items`, list): Optional. Pack only some lines, e.g. [{"so_line_item_id": "4815000000045095", "quantity": 1}]. The ids are the sales order's line_item_id values.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory package.

- `billing_address` (object): A postal address.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The packing date, YYYY-MM-DD.
- `last_modified_time` (text): When it was last changed.
- `line_items` (list): The packed lines.
- `notes` (text): Notes.
- `package_id` (text): The package's id.
- `package_number` (text): The package number, e.g. PKG-00007.
- `salesorder_id` (text): The sales order's id.
- `salesorder_number` (text): The sales order number.
- `shipping_address` (object): A postal address.
- `total_quantity` (number): How many units the package holds.

**Example output**

```json
{
  "customer_id": "4815000000044080",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "line_items": [
    {
      "item_id": "4815000000044208",
      "name": "Bamboo cutting board",
      "quantity": 2,
      "so_line_item_id": "4815000000045095"
    }
  ],
  "package_id": "4815000000046021",
  "package_number": "PKG-00007",
  "salesorder_id": "4815000000045091",
  "salesorder_number": "SO-00012",
  "total_quantity": 2
}
```

### Record a customer payment

Record a payment from a customer against one of their invoices.

**Inputs**

- Customer ID (`customer_id`, text, required): The customer's contact id, from 'List contacts' or 'Create a contact'.
- Invoice ID (`invoice_id`, text, required): The invoice's id, from 'List invoices' or 'Create an invoice'.
- Amount (`amount`, number, required): The amount received. At least 0.
- Paid by (`payment_mode`, text, required): How the customer paid. One of: `cash`, `check`, `creditcard` (Credit card), `banktransfer` (Bank transfer), `bankremittance` (Bank remittance), `others` (Other). Default: `cash`.
- Payment date (`date`, date): Optional. Defaults to today.
- Amount applied to the invoice (`amount_applied`, number): Optional. Defaults to the whole amount; the rest stays as the customer's credit. At least 0.
- Reference number (`reference_number`, text): Optional. Your own reference.
- Description (`description`, text): Optional. A note about the payment.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory customer payment.

- `account_id` (text): The account it was deposited to.
- `account_name` (text): That account's name.
- `amount` (number): The amount received.
- `bank_charges` (number): Bank charges.
- `currency_code` (text): The currency, e.g. USD.
- `customer_id` (text): The customer's id.
- `customer_name` (text): The customer's name.
- `date` (text): The payment date, YYYY-MM-DD.
- `description` (text): The description.
- `email` (text): The customer's email.
- `invoices` (list): The invoices it was applied to.
- `payment_id` (text): The payment's id.
- `payment_mode` (text): How it was paid, e.g. cash.
- `reference_number` (text): Your reference.
- `status` (text): The payment's status.
- `unused_amount` (number): How much is not applied to any invoice.

**Example output**

```json
{
  "amount": 48,
  "customer_id": "4815000000044080",
  "customer_name": "Bowman & Co",
  "date": "2026-09-30",
  "invoices": [
    {
      "amount_applied": 48,
      "invoice_id": "4815000000046077",
      "invoice_number": "INV-000042"
    }
  ],
  "payment_id": "4815000000047003",
  "payment_mode": "cash"
}
```

### Update an item

Change an item's name, prices, description, SKU, reorder level or tax. Blank fields keep their current value. To change stock, use 'Adjust stock'.

**Inputs**

- Item ID (`item_id`, text, required): The item's id, from 'List items' or 'Create an item', or the item's address in Zoho Inventory.
- Name (`name`, text): Optional. The new name.
- Selling price (`rate`, number): Optional. The new selling price. At least 0.
- Purchase price (`purchase_rate`, number): Optional. The new purchase price. At least 0.
- Sales description (`description`, text): Optional.
- SKU (`sku`, text): Optional. Must be unique.
- Reorder level (`reorder_level`, number): Optional. The stock level at which to reorder. At least 0.
- Tax (`tax_id`, text): Optional. The tax to apply.
- Organization (`organization_id`, text): Optional. The Zoho Inventory organization to use. Leave blank for your default organization.

**Outputs**: A Zoho Inventory item.

- `actual_available_stock` (number): Total stock available after committed orders. Summed from the locations when Zoho does not send it.
- `available_stock` (number): Total stock available to sell. Summed from the locations when Zoho does not send it.
- `created_time` (text): When it was created, e.g. 2026-09-01T10:15:00-0700.
- `custom_fields` (list): Custom field values.
- `description` (text): The sales description.
- `ean` (text): The EAN code.
- `isbn` (text): The ISBN.
- `item_id` (text): The item's id.
- `item_type` (text): inventory, sales, purchases or sales_and_purchases.
- `last_modified_time` (text): When it was last changed.
- `locations` (list): Stock per location.
- `name` (text): The item's name.
- `part_number` (text): The part number.
- `product_type` (text): goods or service.
- `purchase_description` (text): The purchase description.
- `purchase_rate` (number): The purchase price.
- `rate` (number): The selling price.
- `reorder_level` (number): The stock level at which to reorder.
- `sku` (text): The stock keeping unit.
- `status` (text): active or inactive.
- `stock_on_hand` (number): Total stock on hand. Summed from the locations when Zoho does not send it.
- `tax_id` (text): The tax's id.
- `tax_name` (text): The tax's name.
- `tax_percentage` (number): The tax rate.
- `unit` (text): The unit it is counted in, e.g. pcs.
- `upc` (text): The UPC code.
- `vendor_id` (text): The preferred vendor's id.
- `vendor_name` (text): The preferred vendor's name.

**Example output**

```json
{
  "actual_available_stock": 38,
  "available_stock": 38,
  "created_time": "2026-09-01T10:15:00-0700",
  "item_id": "4815000000044208",
  "item_type": "inventory",
  "last_modified_time": "2026-09-01T10:15:00-0700",
  "locations": [
    {
      "is_primary": true,
      "location_actual_available_stock": 38,
      "location_available_stock": 38,
      "location_id": "4815000000000132",
      "location_name": "Main warehouse",
      "location_stock_on_hand": 40
    }
  ],
  "name": "Bamboo cutting board",
  "product_type": "goods",
  "purchase_rate": 11,
  "rate": 24,
  "reorder_level": 5,
  "sku": "BCB-001",
  "status": "active",
  "stock_on_hand": 40,
  "unit": "pcs"
}
```
