Create or update a product, and set stock and prices for many products, from your ERP or POS.
Where to find itShopSettingsWebhooks/Pushers
Before you start
A saved Webhook token is needed. item-create also needs the Item webhook switch.
Plan
Growth
Needs
Included with the plan
Who can use this
Shop owner
All three are POST calls under /api/webhook, using the Webhook token. See the Webhooks/Pushers tab.
Create or update a product: /item-create
Needs Item webhook on.
The product is looked up by item_id first, then by barcode. If neither matches, a new product is created. The code does not match by name, although the tab says so.
Field
Required
Meaning
item_id
No
Your system's product id, stored as the product's external id. Send it on every call
name
Yes
Product name, up to 255 characters
price
Yes
Selling price, 0 or more
category_name
Yes
Main category
unit
Yes
Unit such as kg or pcs, up to 50 characters
old_price
No
Price before discount
sub_categories
No
Sub-category name or names
unit_value, unit_label
No
Pack size and unit label
description
No
Product description
barcode
No
Barcode, up to 255 characters
stock_quantity, stock_alert_quantity
No
Stock on hand, and the low-stock warning level
is_active
No
true shows the product to customers
The answer has the product in data and "Item created or updated successfully".
A new product beyond your plan's product limit is refused with HTTP 402. Updates to existing products always go through.
Set stock and prices in bulk: /stock-update
No switch is needed.
Field
Required
Meaning
products_info
Yes
A list, one entry per product
products_info[].ID
Yes
A string. Matched to the product's external id first, then to its shop id
products_info[].qty
No
New stock quantity. 0 is valid; the product goes out of stock when its total reaches 0
products_info[].price
No
New selling price
products_info[].package_price
No
New "before discount" price
products_info[].package_name
No
New product name
products_info[].branch_id
No
The reference of one of your locations, up to 100 characters
A price or package_price of 0 is ignored. Leave a key out to keep its value.
Shops with more than one location: branch_id must match a location's ERP / webhook reference. See Location integrations. An unknown or switched-off one fails that row.
The answer lists updated_products, total_updated and errors:
Result
Status
Message
At least one product updated
200
"Products updated successfully"
Every row failed
400
"All product updates failed"
A product is not found
row error
"Product with ID '…' not found in shop"
One bad row does not stop the others.
Deduct stock for a Zoho sales order: /stock-update-by-order
Field
Required
Meaning
order_id
Yes
A Zoho Inventory sales order id, as a string
Stock is reduced only for a sales order whose sub-status is confirmed, and once per order.