Inventory
List Inventory Items
get /api/v1/businesses/:urlKey/inventories
This endpoint allows you to retrieve a paginated list of inventory items.
- Request
- Response
Path Params
urlKey - The unique identifier of the business.
Headers
| Name | Type | Value Description |
|---|---|---|
| Content-Type * | string | application-json |
| Authorization * | string | Bearer <jwt> |
Query Params
Optional - Can be used for filtering and limiting results
| Name | Type | Value Description |
|---|---|---|
| itemType | string (enum) | product -> Filter to product itemsservice -> Filter to service items |
| name | string | Search by item name (wildcard match) |
| trackingMethod | string (enum) | NONE -> Untracked itemsBATCH -> Batch-tracked itemsSERIAL -> Serial-tracked items |
| isStockManaged | boolean | Filter by whether stock levels are tracked |
| stockStatus | string (enum) | critical -> Critical stocklow -> Low stockwell -> Well stockedoverStock -> Overstocked |
| isPackage | boolean | Filter package/bundle items |
| tags | array[string] | Filter by tag names |
| $limit | number | Number of results to return (default 10, max 50) |
| $skip | number | Number of results to skip (default 0, max 1000) |
| $sort | object | Sort order, e.g. $sort[createdAt]=-1 |
| $select | array[string] | Limit the fields returned per item |
200: OKdata is an array containing one object with the matching items and pagination info.
{
"success": true,
"data": [
{
"items": [
{
"sku": "1780929411704",
"itemType": "product",
"name": "WT101",
"images": [],
"originalImages": [],
"trackingMethod": "NONE",
"currency": "INR",
"initialStock": 100,
"isStockManaged": true,
"overstockPoint": 100,
"reorderPoint": 10,
"isPriceTaxInclusive": false,
"isPackage": false,
"itc": "INELIGIBLE_OTHERS",
"unit": null,
"warehouses": [],
"dimensions": {
"unit": "cm",
"length": null,
"breadth": null,
"height": null
},
"weight": {
"unit": "kg",
"grossWeight": null,
"netWeight": null
}
}
],
"total": 1,
"limit": 10,
"skip": 0
}
]
}
401: UnauthorizedInvalid authentication.
{ "name": "NotAuthenticated", "message": "Invalid login", "code": 401, "className": "not-authenticated", "data": { "message": "Invalid login" }, "errors": {} }
Get Inventory by SKU
get /api/v1/businesses/:urlKey/inventories/:sku
- Request
- Response
Path Params
urlKey - The unique identifier of the business.
sku - The SKU of the inventory item.
200: OK{ "_id": "inventory_id", "sku": "SKU-001", "name": "Sample item", "trackingMethod": "NONE", "createdAt": "2026-09-15T10:00:00.000Z", "updatedAt": "2026-09-15T10:00:00.000Z" }
401: UnauthorizedInvalid authentication.
{ "name": "NotAuthenticated", "message": "Invalid login", "code": 401, "className": "not-authenticated", "data": { "message": "Invalid login" }, "errors": {} }
Create Inventory Item
post /api/v1/businesses/:urlKey/inventories
This endpoint allows you to create a new inventory item.
- Request
- Response
Path Params
urlKey - The unique identifier of the business.
Headers
| Name | Type | Value Description |
|---|---|---|
| Content-Type * | string | application-json |
| Authorization * | string | Bearer <jwt> |
Body
| Name | Type | Value Description |
|---|---|---|
| sku * | string | Unique Stock Keeping Unit code for the item |
| itemType * | string (enum) | product -> Productservice -> Serviceonetime -> One-time item(must be lowercase) |
| name * | string | Item name |
| description | string | Item description |
| hsn | string | HSN/SAC code (max 8 characters, India only) |
| classificationCode | string | Classification code, e.g. an ECCN code |
| trackingMethod | string (enum) | NONE -> No batch/serial tracking (default)BATCH -> Track stock by batchSERIAL -> Track stock by serial number |
| currency | string | ISO 4217 Currency Code -> Default INR |
| tags | array[string] | Tag names — must already exist in Business Settings |
| taxRate | number | Tax rate (%) applicable on this item |
| initialStock | number | Initial stock quantity |
| isStockManaged | boolean | Whether stock levels are tracked for this item |
| overstockPoint | number | Stock level above which the item is considered overstocked |
| reorderPoint | number | Stock level below which the item is considered low/critical |
| sellingPrice | number | Selling price |
| costPrice | number | Cost price |
| landedCost | number | Landed cost — must be less than or equal to costPrice |
| isPriceTaxInclusive | boolean | Whether sellingPrice/costPrice are inclusive of tax |
| preferredVendor | string | uniqueKey of the preferred vendor — must be an existing vendor |
| registeredVendors | array[string] | uniqueKeys of registered vendors — must be existing vendors |
| isPackage | boolean | Whether this item is a package/bundle of other items |
| salesLedger | object | Sales ledger mapping |
| salesLedger.ledgerId | string | Ledger ID |
| salesLedger.ledgerName | string | Ledger name |
| purchaseLedger | object | Purchase ledger mapping |
| purchaseLedger.ledgerId | string | Ledger ID |
| purchaseLedger.ledgerName | string | Ledger name |
| inventoryLedger | object | Inventory asset ledger mapping |
| inventoryLedger.ledgerId | string | Ledger ID |
| inventoryLedger.ledgerName | string | Ledger name |
| itc | string | Input Tax Credit eligibility (India only), e.g. INELIGIBLE_OTHERS |
| unit | string | Unit of measurement, e.g. PCS |
| warehouses[] | array[object] | Per-warehouse initial stock and thresholds — only applicable when Warehouse Management is enabled |
| warehouses[].warehouseId * | string | Warehouse code |
| warehouses[].quantity | number | Initial stock for this warehouse |
| warehouses[].reorderPoint | number | Warehouse-level reorder point |
| warehouses[].overstockPoint | number | Warehouse-level overstock point |
| dimensions | object | Item dimensions |
| dimensions.length | number | Length |
| dimensions.breadth | number | Breadth |
| dimensions.height | number | Height |
| dimensions.unit | string | Unit, e.g. cm |
| weight | object | Item weight |
| weight.grossWeight | number | Gross weight |
| weight.netWeight | number | Net weight |
| weight.unit | string | Unit, e.g. kg |
| customFields[] | array[object] | Custom fields — label must be pre-configured in Business Settings |
| customFields[].label | string | Custom field label |
| customFields[].value | string | Custom field value |
200: OK{
"success": true,
"data": {
"sku": "1789310724689",
"itemType": "product",
"name": "Jindal panther 16 mm",
"description": null,
"images": [],
"originalImages": [],
"hsn": null,
"trackingMethod": "NONE",
"currency": "INR",
"taxRate": 18,
"initialStock": 0,
"isStockManaged": true,
"overstockPoint": 100,
"reorderPoint": 10,
"sellingPrice": 1.7241379310344827,
"costPrice": null,
"isPriceTaxInclusive": false,
"isPackage": false,
"itc": "INELIGIBLE_OTHERS",
"unit": "KGS",
"warehouses": [
{
"initialStock": 0,
"lowStockAlert": null,
"avgSellingPrice": 0,
"avgCostPrice": 0,
"stock": 0,
"stockInHand": 0,
"soldQuantity": 0,
"purchaseQuantity": 0,
"lastStockOutOn": null,
"lastStockOutType": null,
"lastStockOutTo": null,
"lastStockInOn": "2026-09-13T14:46:47.000Z",
"lastStockInType": "MANUAL",
"lastStockInFrom": null,
"_id": "6aa6b7578e4695002124fe80",
"warehouse": "69d4bd918ed2ae0020c482a6"
}
],
"dimensions": {
"unit": "cm",
"length": null,
"breadth": null,
"height": null
},
"weight": {
"unit": "kg",
"grossWeight": null,
"netWeight": null
},
"customFields": {
"r_str_001": null
},
"warehousesStockThresholds": [
{
"overstockPoint": 100,
"reorderPoint": 10,
"_id": "6aa6b7578e4695002124fe81",
"warehouse": "69d4bd918ed2ae0020c482a6"
}
],
"strictControl": false
}
}
401: UnauthorizedInvalid authentication.
{ "name": "NotAuthenticated", "message": "Invalid login", "code": 401, "className": "not-authenticated", "data": { "message": "Invalid login" }, "errors": {} }
Update Inventory Item
patch /api/v1/businesses/:urlKey/inventories/:sku
This endpoint allows you to update an existing inventory item.
- Request
- Response
Path Params
urlKey - The unique identifier of the business.
sku - The SKU (Stock Keeping Unit) of the inventory item to update.
Headers
| Name | Type | Value Description |
|---|---|---|
| Content-Type * | string | application-json |
| Authorization * | string | Bearer <jwt> |
Body
Accepts any of the fields listed under Create Inventory Item above (including sku, to rename the item), except trackingMethod.
trackingMethodcannot be updated via this API — passing it returnsFIELD_NOT_UPDATABLE.skucan be renamed — the item will be accessible only under the new SKU afterward.- Per-warehouse thresholds (
warehousesStockThresholds) cannot be changed via PATCH; they can only be set at creation time viawarehouses[]. Root-leveloverstockPointandreorderPointcan still be updated independently.
200: OKSame shape as the Create Inventory Item response above.
{
"success": true,
"data": {
"sku": "1789310724689",
"itemType": "product",
"name": "Jindal panther 16 mm",
"description": null,
"images": [],
"originalImages": [],
"hsn": null,
"trackingMethod": "NONE",
"currency": "INR",
"taxRate": 18,
"initialStock": 0,
"isStockManaged": true,
"overstockPoint": 100,
"reorderPoint": 10,
"sellingPrice": 1.7241379310344827,
"costPrice": null,
"isPriceTaxInclusive": false,
"isPackage": false,
"itc": "INELIGIBLE_OTHERS",
"unit": "KGS",
"warehouses": [
{
"initialStock": 0,
"lowStockAlert": null,
"avgSellingPrice": 0,
"avgCostPrice": 0,
"stock": 0,
"stockInHand": 0,
"soldQuantity": 0,
"purchaseQuantity": 0,
"lastStockOutOn": null,
"lastStockOutType": null,
"lastStockOutTo": null,
"lastStockInOn": "2026-09-13T14:46:47.000Z",
"lastStockInType": "MANUAL",
"lastStockInFrom": null,
"_id": "6aa6b7578e4695002124fe80",
"warehouse": "69d4bd918ed2ae0020c482a6"
}
],
"dimensions": {
"unit": "cm",
"length": null,
"breadth": null,
"height": null
},
"weight": {
"unit": "kg",
"grossWeight": null,
"netWeight": null
},
"customFields": {
"r_str_001": null
},
"warehousesStockThresholds": [
{
"overstockPoint": 100,
"reorderPoint": 10,
"_id": "6aa6b7578e4695002124fe81",
"warehouse": "69d4bd918ed2ae0020c482a6"
}
],
"strictControl": false
}
}
401: UnauthorizedInvalid authentication.
{ "name": "NotAuthenticated", "message": "Invalid login", "code": 401, "className": "not-authenticated", "data": { "message": "Invalid login" }, "errors": {} }
Delete Inventory Item
delete /api/v1/businesses/:urlKey/inventories/:sku
This endpoint soft-deletes (archives) an inventory item. After deletion, the item is no longer returned by List or Get by SKU.
- Request
- Response
Path Params
urlKey - The unique identifier of the business.
sku - The SKU (Stock Keeping Unit) of the inventory item to delete.
Headers
| Name | Type | Value Description |
|---|---|---|
| Content-Type * | string | application-json |
| Authorization * | string | Bearer <jwt> |
200: OK{
"success": true,
"data": {
"deleted": false,
"id": "6aa6b7578e4695002124fe7f",
"sku": "1789310724689"
}
}
401: UnauthorizedInvalid authentication.
{ "name": "NotAuthenticated", "message": "Invalid login", "code": 401, "className": "not-authenticated", "data": { "message": "Invalid login" }, "errors": {} }