Skip to main content

Inventory Item API

Create and manage physical inventory items that are stocked and tracked.


Endpoints

MethodEndpointDescription
GET/record/v1/inventoryItemList inventory items
GET/record/v1/inventoryItem/{id}Get specific item
POST/record/v1/inventoryItemCreate item
PATCH/record/v1/inventoryItem/{id}Update item
DELETE/record/v1/inventoryItem/{id}Delete item

Key Fields

FieldTypeDescriptionRequired
itemIdstringItem name/SKUYes (if not auto-numbered)
displayNamestringDisplay nameNo
descriptionstringItem descriptionNo
subsidiaryobjectSubsidiary referenceYes (OneWorld)
locationobjectDefault locationNo
assetAccountobjectInventory asset accountYes
cogsAccountobjectCost of goods sold accountYes
incomeAccountobjectIncome/revenue accountYes
costingMethodobjectCosting method (AVERAGE, FIFO, etc.)Yes
costnumberUnit costNo
basePricenumberBase selling priceNo
taxScheduleobjectTax schedule referenceNo
isInactivebooleanInactive statusNo
purchaseDescriptionstringPurchase descriptionNo
salesDescriptionstringSales descriptionNo
trackLandedCostbooleanTrack landed costNo
vendorNamestringPreferred vendor nameNo

Example: Create Inventory Item

Request

POST /record/v1/inventoryItem
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"itemId": "WIDGET-001",
"displayName": "Blue Widget",
"description": "Premium blue widget - Model A",
"salesDescription": "High-quality blue widget with advanced features",
"purchaseDescription": "Blue Widget - Model A (SKU: WIDGET-001)",
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"assetAccount": {
"id": "120"
},
"cogsAccount": {
"id": "500"
},
"incomeAccount": {
"id": "400"
},
"costingMethod": {
"id": "AVERAGE"
},
"cost": 25.00,
"basePrice": 99.99,
"taxSchedule": {
"id": "1"
},
"trackLandedCost": true,
"isInactive": false
}

Response

{
"id": "789",
"itemId": "WIDGET-001",
"displayName": "Blue Widget",
"description": "Premium blue widget - Model A",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"location": {
"id": "1",
"refName": "Main Warehouse"
},
"assetAccount": {
"id": "120",
"refName": "Inventory Asset"
},
"cogsAccount": {
"id": "500",
"refName": "Cost of Goods Sold"
},
"incomeAccount": {
"id": "400",
"refName": "Sales Revenue"
},
"costingMethod": {
"id": "AVERAGE",
"refName": "Average"
},
"cost": 25.00,
"basePrice": 99.99,
"isInactive": false,
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/inventoryItem/789"
}
]
}

Example: Update Inventory Item

Request

PATCH /record/v1/inventoryItem/789
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"basePrice": 109.99,
"cost": 27.50,
"description": "Premium blue widget - Model A (Updated design)",
"salesDescription": "NEW! High-quality blue widget with enhanced features"
}

Response

{
"id": "789",
"itemId": "WIDGET-001",
"basePrice": 109.99,
"cost": 27.50,
"description": "Premium blue widget - Model A (Updated design)",
"salesDescription": "NEW! High-quality blue widget with enhanced features",
"lastModifiedDate": "2025-12-25T10:30:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/inventoryItem/789"
}
]
}

Sublists

Pricing Sublist

FieldTypeDescriptionRequired
levelobjectPrice level referenceYes
pricenumberPrice for this levelYes
currencyobjectCurrency (multi-currency)Conditional

Example:

{
"pricing": {
"items": [
{
"level": { "id": "1" },
"price": 99.99
},
{
"level": { "id": "2" },
"price": 89.99
}
]
}
}

Locations Sublist

FieldTypeDescriptionRequired
locationobjectLocation referenceYes
quantityOnHandnumberCurrent on-hand quantityRead-only
reorderPointnumberReorder pointNo
preferredStockLevelnumberPreferred stock levelNo
defaultReturnCostnumberDefault return costNo

Example:

{
"locations": {
"items": [
{
"location": { "id": "1" },
"reorderPoint": 50,
"preferredStockLevel": 200
},
{
"location": { "id": "2" },
"reorderPoint": 25,
"preferredStockLevel": 100
}
]
}
}

Vendor Sublist

FieldTypeDescriptionRequired
vendorobjectVendor referenceYes
vendorCodestringVendor's item codeNo
purchasePricenumberPurchase priceNo
preferredVendorbooleanPreferred vendor flagNo

Query Filters

Find Active Items

GET /record/v1/inventoryItem?q=isInactive=false

Find by SKU Pattern

GET /record/v1/inventoryItem?q=itemId LIKE 'WIDGET%'

Find by Name

GET /record/v1/inventoryItem?q=displayName LIKE '%Blue%'

Find by Subsidiary

GET /record/v1/inventoryItem?q=subsidiary='1'

Find by Costing Method

GET /record/v1/inventoryItem?q=costingMethod='AVERAGE'

Find by Price Range

GET /record/v1/inventoryItem?q=basePrice BETWEEN 50 AND 100
GET /record/v1/inventoryItem/789?expandSubResources=true

Important Notes

Costing Methods

MethodDescriptionUse Case
AVERAGEWeighted average costMost common, smooth cost changes
FIFOFirst-in, first-outWhen older inventory sold first
LIFOLast-in, first-outWhen newer inventory sold first (if enabled)
STANDARDStandard costingManufacturing, fixed standard costs
LOT_NUMBEREDLot-specific costingTrack costs by lot/batch
SERIALIZEDSerial number costingTrack costs by serial number

Important: Costing method cannot be changed once inventory transactions exist for the item.

Inventory Tracking

Standard Inventory Items:

  • Track quantity on hand by location
  • Automatically update on transactions
  • Support bin management
  • Support cycle counting

Lot-Numbered Items:

{
"costingMethod": {
"id": "LOT_NUMBERED"
},
"isLotItem": true
}

Serialized Items:

{
"costingMethod": {
"id": "SERIALIZED"
},
"isSerialItem": true
}

Account Requirements

Required Accounts:

  1. Asset Account: Where inventory value is held
  2. COGS Account: Expense when items are sold
  3. Income Account: Revenue when items are sold

Multi-Location Accounting:

  • Can override accounts per location
  • Use location-specific asset accounts
  • Supports different GL impact by location

Pricing

Base Price:

  • Default selling price
  • Can be overridden with price levels
  • Does not include taxes

Price Levels:

  • Support multiple price levels (Retail, Wholesale, etc.)
  • Currency-specific pricing for multi-currency
  • Customer-specific pricing via price levels

Multi-Currency Pricing:

{
"pricing": {
"items": [
{
"level": { "id": "1" },
"price": 99.99,
"currency": { "id": "1" }
},
{
"level": { "id": "1" },
"price": 79.99,
"currency": { "id": "2" }
}
]
}
}

Inventory Valuation

  • Item cost affects inventory asset value
  • COGS calculated based on costing method
  • Average cost recalculated with each receipt
  • View current average cost via GET request

Subsidiary Assignment

OneWorld Accounts:

  • Must assign to at least one subsidiary
  • Can assign to multiple subsidiaries
  • Pricing and inventory tracked per subsidiary
{
"subsidiary": {
"id": "1"
},
"subsidiaryList": {
"items": [
{ "subsidiary": { "id": "1" } },
{ "subsidiary": { "id": "2" } }
]
}
}

Item Lifecycle

Creating Items:

  1. Define basic information (name, description)
  2. Set accounting fields (asset, COGS, income accounts)
  3. Choose costing method (cannot change later)
  4. Set initial cost and pricing
  5. Configure locations and reorder points

Updating Items:

  • Can update pricing anytime
  • Can update descriptions
  • Cannot change costing method if transactions exist
  • Cannot change certain accounting fields with transactions

Inactivating Items:

{
"isInactive": true
}
  • Prevents new transactions
  • Preserves historical data
  • Can be reactivated if needed

Reorder Management

Set reorder points per location:

{
"locations": {
"items": [
{
"location": { "id": "1" },
"reorderPoint": 50,
"preferredStockLevel": 200
}
]
}
}
  • System flags items below reorder point
  • Used for purchase order suggestions
  • Supports automated replenishment

Landed Cost Tracking

Enable for items with freight, duties, etc.:

{
"trackLandedCost": true
}
  • Tracks additional costs beyond purchase price
  • Includes freight, customs, insurance
  • Affects true item cost and COGS

Permissions Required

  • Create: Inventory Item > Create permission
  • Edit: Inventory Item > Edit permission
  • View: Inventory Item > View permission
  • Delete: Inventory Item > Delete permission

Deletion Constraints

  • Cannot delete items with transaction history
  • Cannot delete items with current inventory on hand
  • Must inactivate instead if transactions exist

Best Practices

  1. Consistent Naming: Use standardized SKU format (e.g., CATEGORY-NUMBER)
  2. Complete Descriptions: Fill both sales and purchase descriptions
  3. Accurate Costing: Choose appropriate costing method upfront
  4. Price Management: Use price levels for different customer types
  5. Reorder Points: Set realistic reorder points based on lead time
  6. Location Setup: Configure all relevant locations during creation
  7. Vendor Information: Maintain vendor list for purchasing
  8. Regular Reviews: Periodically review and update pricing and costs

See Also