Skip to main content

Assembly Item API

Create and manage items assembled from component parts.


Endpoints

MethodEndpointDescription
GET/record/v1/assemblyItemList assembly items
GET/record/v1/assemblyItem/{id}Get specific item
POST/record/v1/assemblyItemCreate item
PATCH/record/v1/assemblyItem/{id}Update item
DELETE/record/v1/assemblyItem/{id}Delete item

Key Fields

FieldTypeDescriptionRequired
itemIdstringItem name/SKUYes (if not auto-numbered)
displayNamestringDisplay nameNo
descriptionstringItem descriptionNo
subsidiaryobjectSubsidiary referenceYes (OneWorld)
assetAccountobjectInventory asset accountYes
cogsAccountobjectCost of goods sold accountYes
incomeAccountobjectIncome/revenue accountYes
costingMethodobjectCosting methodYes
costnumberBuild cost (calculated from BOM)Read-only
basePricenumberSelling priceNo
buildTimenumberBuild time in minutesNo
membercollectionBill of materials (BOM)Yes
isInactivebooleanInactive statusNo

Example: Create Assembly Item

Request

POST /record/v1/assemblyItem
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"itemId": "ASSEMBLY-001",
"displayName": "Deluxe Widget Kit",
"description": "Complete widget assembly with premium components",
"salesDescription": "Professional-grade widget assembly - ready to use",
"subsidiary": {
"id": "1"
},
"assetAccount": {
"id": "120"
},
"cogsAccount": {
"id": "500"
},
"incomeAccount": {
"id": "400"
},
"costingMethod": {
"id": "AVERAGE"
},
"basePrice": 299.99,
"buildTime": 30,
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 2,
"itemSource": "STOCK"
},
{
"item": { "id": "790" },
"quantity": 1,
"itemSource": "STOCK"
},
{
"item": { "id": "791" },
"quantity": 4,
"itemSource": "STOCK"
}
]
}
}

Response

{
"id": "850",
"itemId": "ASSEMBLY-001",
"displayName": "Deluxe Widget Kit",
"description": "Complete widget assembly with premium components",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"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": 75.50,
"basePrice": 299.99,
"buildTime": 30,
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/assemblyItem/850"
}
]
}

Example: Update Assembly Item

Request

PATCH /record/v1/assemblyItem/850
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"basePrice": 319.99,
"buildTime": 25,
"description": "Complete widget assembly with premium components - NEW improved design"
}

Response

{
"id": "850",
"itemId": "ASSEMBLY-001",
"basePrice": 319.99,
"buildTime": 25,
"description": "Complete widget assembly with premium components - NEW improved design",
"lastModifiedDate": "2025-12-25T11:15:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/assemblyItem/850"
}
]
}

Sublists

Member Sublist (Bill of Materials)

FieldTypeDescriptionRequired
itemobjectComponent item referenceYes
quantitynumberQuantity needed per assemblyYes
itemSourcestringSource (STOCK, PHANTOM)No
componentYieldnumberExpected yield percentageNo
bomQuantitynumberAlternate BOM quantityNo

Example with multiple components:

{
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 2,
"itemSource": "STOCK"
},
{
"item": { "id": "790" },
"quantity": 1,
"itemSource": "STOCK"
},
{
"item": { "id": "791" },
"quantity": 4,
"itemSource": "STOCK",
"componentYield": 95
}
]
}
}

Pricing Sublist

FieldTypeDescriptionRequired
levelobjectPrice level referenceYes
pricenumberPrice for this levelYes

Locations Sublist

FieldTypeDescriptionRequired
locationobjectLocation referenceYes
quantityOnHandnumberCurrent on-hand quantityRead-only
reorderPointnumberReorder pointNo
preferredStockLevelnumberPreferred stock levelNo
buildTimenumberLocation-specific build timeNo

Query Filters

Find Active Assemblies

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

Find by SKU Pattern

GET /record/v1/assemblyItem?q=itemId LIKE 'ASSEMBLY%'

Find by Name

GET /record/v1/assemblyItem?q=displayName LIKE '%Kit%'

Find by Component

GET /record/v1/assemblyItem?q=member.item='789'

Find by Price Range

GET /record/v1/assemblyItem?q=basePrice BETWEEN 200 AND 400
GET /record/v1/assemblyItem/850?expandSubResources=true

Important Notes

Bill of Materials (BOM)

BOM Definition:

  • List of components required to build one assembly
  • Quantities are per finished assembly unit
  • Component costs roll up to assembly cost
  • Can include other assemblies (multi-level BOM)

Example BOM:

Assembly: Deluxe Widget Kit (1 unit requires):
- Blue Widget (Item 789): 2 units
- Red Widget (Item 790): 1 unit
- Screws (Item 791): 4 units

Phantom Items:

{
"member": {
"items": [
{
"item": { "id": "792" },
"quantity": 1,
"itemSource": "PHANTOM"
}
]
}
}
  • Phantom items are sub-assemblies that don't stock
  • Components pass through to parent assembly
  • Useful for logical grouping without inventory tracking

Assembly Costing

Cost Calculation:

  • Assembly cost = sum of (component cost × quantity)
  • Automatically calculated based on BOM
  • Updates when component costs change
  • Read-only field on assembly item

Example:

Component costs:
- Blue Widget: $25.00 × 2 = $50.00
- Red Widget: $15.00 × 1 = $15.00
- Screws: $0.50 × 4 = $2.00
Total Assembly Cost: $67.00

Assembly Build Process

Build Workflow:

  1. Create Work Order (optional)

    • Schedule production
    • Reserve components
    • Track build progress
  2. Create Assembly Build

    • Consumes component inventory
    • Creates finished assembly inventory
    • Posts to GL (component → finished goods)

Without Work Order (Quick Build):

POST /record/v1/assemblyBuild
{
"item": { "id": "850" },
"quantity": 10,
"buildDate": "2025-12-25"
}

With Work Order:

POST /record/v1/workOrder
{
"assemblyItem": { "id": "850" },
"quantity": 100,
"startDate": "2025-12-25"
}

Component Availability

Build Constraints:

  • All components must be available to build
  • System checks component inventory before build
  • Can configure partial builds if allowed
  • Location-specific component availability

Checking Availability:

GET /record/v1/assemblyItem/850?expandSubResources=true

Response includes component availability at each location.

Multi-Level Assemblies

Nested Assemblies:

{
"member": {
"items": [
{
"item": { "id": "851" },
"quantity": 1,
"itemSource": "STOCK"
}
]
}
}
  • Assemblies can contain other assemblies
  • Component costs cascade up levels
  • Build parent assembly or sub-assemblies separately
  • Plan build order (bottom-up)

Build Time Tracking

Build Time Settings:

{
"buildTime": 30
}
  • Measured in minutes per assembly
  • Used for capacity planning
  • Can override per location
  • Helps schedule production

Yield Management

Component Yield:

{
"member": {
"items": [
{
"item": { "id": "791" },
"quantity": 4,
"componentYield": 95
}
]
}
}
  • Account for scrap/waste in production
  • 95% yield = 5% expected waste
  • System adjusts quantities for actual yield
  • Tracks yield variance

Selling Assemblies

As-Is Sales:

  • Sell from finished goods inventory
  • Reduces assembly on-hand
  • Does not affect component inventory

Build-to-Order:

  • Sell on sales order
  • Create work order or assembly build
  • Build as needed for order
  • Ship when assembly complete

Disassembly

Disassemble Finished Goods:

POST /record/v1/assemblyUnbuild
{
"item": { "id": "850" },
"quantity": 5,
"unbuildDate": "2025-12-25"
}
  • Reverses assembly build
  • Returns components to inventory
  • Reduces finished assembly quantity
  • Useful for rework or changes

Work in Process (WIP)

WIP Tracking:

  • Work orders track WIP inventory
  • Components move to WIP when issued
  • Finished goods created on completion
  • WIP account holds in-process value

Permissions Required

  • Create: Assembly Item > Create permission
  • Edit: Assembly Item > Edit permission
  • View: Assembly Item > View permission
  • Delete: Assembly Item > Delete permission
  • Build: Assembly Build > Create permission

Deletion Constraints

  • Cannot delete with transaction history
  • Cannot delete with inventory on hand
  • Cannot delete if used in other assemblies
  • Inactivate instead

Best Practices

  1. Accurate BOMs: Maintain precise component quantities
  2. Cost Review: Regularly review component costs
  3. Build Times: Set realistic build times for planning
  4. Multi-Level Planning: Plan complex assemblies bottom-up
  5. Yield Tracking: Monitor actual vs expected yield
  6. Component Availability: Ensure components in stock before builds
  7. Location Planning: Build at locations with component inventory
  8. Version Control: Use revisions to track BOM changes

Assembly vs Kit

Assembly Item:

  • Components assembled before shipping
  • Creates finished goods inventory
  • Has build process and cost
  • Components not separately visible

Kit Item:

  • Components ship separately
  • No assembly process
  • Components remain separate
  • Customer receives individual parts

Choose assembly when:

  • Manufacturing/production required
  • Want to track finished goods inventory
  • Components lose individual identity
  • Need to track build costs and time

See Also