Zoho Inventory actions
Reference for the Zoho Inventory actions: the connection type, each action and what it does, its inputs and outputs, and the live catalog call.
The Zoho Inventory block manages items, contacts, invoices, sales orders, purchase orders, inventory adjustments, packages and shipments in a Zoho Inventory organization. For the plain-language overview, see Zoho Inventory.
When to use it
Use a Zoho Inventory step to turn a confirmed order into an invoice, email that invoice, raise a purchase order, adjust stock, or keep items and contacts in step with another system.
Connection
| Item | Value |
|---|---|
| Block type | zoho-inventory (the older id zohoInventory still resolves to it) |
| Connection | OAuth sign-in from Integrations (provider id zoho-inventory) |
| Account pin | config.connection, the connection row id. Without it the step uses the company's default Zoho Inventory connection |
| Organization | config.organizationId, required on every action and sent to Zoho as organization_id |
Actions
The action id is zoho-inventory.<action>. All of these are in the Studio Action list.
| Group | Action | Required config |
|---|---|---|
| Items | listItems, getItem, createItem, updateItem, deleteItem, searchItems | itemId (get, update, delete); itemData (create, update) |
| Contacts | listContacts, getContact, createContact, updateContact, deleteContact, searchContacts | contactId (get, update, delete); contactData (create, update) |
| Invoices | listInvoices, getInvoice, createInvoice, updateInvoice, deleteInvoice | invoiceId (get, update, delete); invoiceData (create, update) |
| Sales orders | listSalesOrders, getSalesOrder, createSalesOrder, updateSalesOrder, deleteSalesOrder | salesOrderId (get, update, delete); salesOrderData (create, update) |
| Purchase orders | listPurchaseOrders, getPurchaseOrder, createPurchaseOrder, updatePurchaseOrder, deletePurchaseOrder | purchaseOrderId (get, update, delete); purchaseOrderData (create, update) |
| Inventory | listInventoryAdjustments, createInventoryAdjustment | adjustmentData (create) |
| Order to cash | confirmSalesOrder, voidSalesOrder, convertSalesOrderToInvoice, markInvoiceSent, emailInvoice, getInvoicePdf | salesOrderId or invoiceId; toEmail on emailInvoice |
| Shipping | createPackage, createShipmentOrder | salesOrderId; packageIds on shipment orders |
Fields
| Field | Type | Meaning |
|---|---|---|
organizationId | string | Zoho organization id |
itemId, contactId, invoiceId, salesOrderId, purchaseOrderId | string | Record ids |
itemData, contactData, invoiceData, salesOrderData, purchaseOrderData, adjustmentData, packageData, shipmentData | JSON object | The Zoho request body, with Zoho's field names. A JSON string is accepted and parsed |
toEmail, subject, body | string | Recipient, subject and body for emailInvoice |
packageIds | string | Comma-separated package ids for createShipmentOrder |
nameContains, emailContains, companyContains, phoneContains | string | searchContacts filters |
itemNameContains, skuContains, descriptionContains | string | searchItems filters |
limit | number | Results per page for the two search actions |
page, per_page | number | Paging for list actions (not shown in the Studio form) |
Behaviour worth knowing
convertSalesOrderToInvoicecreates an invoice linked to the sales order. Zoho Inventory has no dedicated convert call, so the line items may not be copied. PassinvoiceDatawith the lines, or read the order first and build the invoice from it.getInvoicePdfrequests the invoice in PDF form (accept=pdf).markInvoiceSentchanges the status only; it does not email anyone. UseemailInvoiceto send.
Output
The step output is Zoho's response, keyed by resource, so a later step reads {{steps.<id>.invoice.invoice_id}} or {{steps.<id>.sales_order.salesorder_id}}. Curated examples for several actions are at GET /api/v1/blocks/zoho-inventory/actions/<action>/examples.
Example
{
"id": "invoice_order",
"type": "action",
"name": "Invoice the confirmed order",
"action": "zoho-inventory.convertSalesOrderToInvoice",
"config": {
"operation": "convertSalesOrderToInvoice",
"connection": "<zoho-inventory-connection-id>",
"organizationId": "10234695",
"salesOrderId": "{{input.salesOrderId}}",
"invoiceData": {
"customer_id": "{{input.customerId}}",
"line_items": [{ "item_id": "{{input.itemId}}", "quantity": 2, "rate": 150 }]
}
}
}Live catalog
GET /api/v1/blocks/zoho-inventory returns the fields and all actions. See Block and action discovery.
Errors and limits
organizationId is required for Zoho Inventory API calls<field> is required and must be a JSON object: a data field is missing, or is an array or text that is not JSON.- Zoho errors come back with Zoho's
codeandmessage.
Xero actions
Reference for the Xero actions: the connection type, each action and what it does, its inputs and outputs, and the live catalog call.
Zuora actions
Reference for the Zuora actions: the OAuth client connection, each action id, Object Query filters and paging, write rules, outputs and an example.
Loopfour