Skip to main content

Kit Item API

Kits are groups of items sold together (components ship separately, not assembled).


Endpoints

MethodEndpointDescription
GET/record/v1/kitItemList kit items
GET/record/v1/kitItem/{id}Get specific kit
POST/record/v1/kitItemCreate kit
PATCH/record/v1/kitItem/{id}Update kit
DELETE/record/v1/kitItem/{id}Delete kit

Key Fields

FieldTypeDescriptionRequired
itemIdstringItem name/SKUYes (if not auto-numbered)
displayNamestringDisplay nameNo
descriptionstringKit descriptionNo
subsidiaryobjectSubsidiary referenceYes (OneWorld)
incomeAccountobjectIncome/revenue accountYes
basePricenumberKit selling priceNo
membercollectionKit componentsYes
isInactivebooleanInactive statusNo
printItemsbooleanPrint components on transactionsNo

Example: Create Kit Item

Request

POST /record/v1/kitItem
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"itemId": "KIT-001",
"displayName": "Starter Bundle",
"description": "Complete starter bundle with all essentials",
"salesDescription": "Everything you need to get started - includes 3 premium items",
"subsidiary": {
"id": "1"
},
"incomeAccount": {
"id": "400"
},
"basePrice": 199.99,
"printItems": true,
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 1,
"description": "Blue Widget - Premium Model"
},
{
"item": { "id": "790" },
"quantity": 2,
"description": "Red Widget - Standard Model"
},
{
"item": { "id": "791" },
"quantity": 1,
"description": "Widget Accessory Pack"
}
]
}
}

Response

{
"id": "900",
"itemId": "KIT-001",
"displayName": "Starter Bundle",
"description": "Complete starter bundle with all essentials",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"incomeAccount": {
"id": "400",
"refName": "Sales Revenue"
},
"basePrice": 199.99,
"printItems": true,
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/kitItem/900"
}
]
}

Example: Update Kit Item

Request

PATCH /record/v1/kitItem/900
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"basePrice": 179.99,
"description": "Complete starter bundle with all essentials - HOLIDAY SALE",
"salesDescription": "SPECIAL OFFER: Everything you need to get started - includes 3 premium items"
}

Response

{
"id": "900",
"itemId": "KIT-001",
"basePrice": 179.99,
"description": "Complete starter bundle with all essentials - HOLIDAY SALE",
"salesDescription": "SPECIAL OFFER: Everything you need to get started - includes 3 premium items",
"lastModifiedDate": "2025-12-25T12:00:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/kitItem/900"
}
]
}

Sublists

Member Sublist (Kit Components)

FieldTypeDescriptionRequired
itemobjectComponent item referenceYes
quantitynumberQuantity per kitYes
descriptionstringComponent description overrideNo
ratenumberComponent price (if priced separately)No

Example with detailed components:

{
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 1,
"description": "Blue Widget - Premium Model"
},
{
"item": { "id": "790" },
"quantity": 2,
"description": "Red Widget - Standard Model"
},
{
"item": { "id": "791" },
"quantity": 1,
"description": "Widget Accessory Pack"
}
]
}
}

Pricing Sublist

FieldTypeDescriptionRequired
levelobjectPrice level referenceYes
pricenumberKit price for this levelYes

Example:

{
"pricing": {
"items": [
{
"level": { "id": "1" },
"price": 199.99
},
{
"level": { "id": "2" },
"price": 179.99
}
]
}
}

Query Filters

Find Active Kits

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

Find by SKU Pattern

GET /record/v1/kitItem?q=itemId LIKE 'KIT%'

Find by Name

GET /record/v1/kitItem?q=displayName LIKE '%Bundle%'

Find by Component

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

Find by Price Range

GET /record/v1/kitItem?q=basePrice BETWEEN 100 AND 300
GET /record/v1/kitItem/900?expandSubResources=true

Important Notes

Kit vs Assembly

Kit Item:

  • Components ship separately as individual items
  • No assembly or build process required
  • Components maintain their individual identity
  • Inventory tracked at component level only
  • Customer receives individual parts

Assembly Item:

  • Components assembled before shipping
  • Requires assembly/build process
  • Creates finished goods inventory
  • Inventory tracked at assembly level
  • Customer receives finished product

Choose Kit when:

  • Items bundled for marketing purposes
  • No manufacturing/assembly required
  • Components ship separately
  • Want to track component inventory separately
  • Offering bundles or promotional packages

Choose Assembly when:

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

How Kits Work

Selling Kits:

  1. Customer orders kit item (e.g., "KIT-001")
  2. Order shows kit with its components
  3. At fulfillment, components ship separately
  4. Each component reduces from its own inventory
  5. Customer receives all component items

Inventory Impact:

  • No separate inventory for the kit itself
  • Only component inventory is tracked
  • Components must be available to sell kit
  • System checks component availability

Pricing:

  • Kit has selling price (can be discount from individual prices)
  • Can price kit differently from component sum
  • Price levels apply to entire kit
  • Components priced as part of kit, not individually

Component Availability

Availability Check:

  • Kit can only be sold if all components available
  • System validates component inventory
  • Uses component default locations
  • Blocks sale if any component unavailable

Example:

Kit: Starter Bundle requires:
- Blue Widget: 1 unit (10 available) ✓
- Red Widget: 2 units (50 available) ✓
- Accessory Pack: 1 unit (0 available) ✗

Result: Cannot sell kit until Accessory Pack restocked

Print Components on Documents:

{
"printItems": true
}

When true:

  • Components print on sales orders, invoices, packing slips
  • Customer sees individual component items
  • Useful for transparency

When false:

  • Only kit item prints on documents
  • Components hidden from customer
  • Simpler presentation

Kit Pricing Strategies

Bundle Discount:

{
"basePrice": 179.99
}
Individual component prices:
- Blue Widget: $99.99
- Red Widget: $49.99 × 2 = $99.98
- Accessory Pack: $29.99
Total if sold separately: $229.96
Kit price: $179.99
Savings: $49.97 (22% discount)

Price Level Discounts:

{
"pricing": {
"items": [
{
"level": { "id": "1" },
"price": 199.99
},
{
"level": { "id": "2" },
"price": 179.99
},
{
"level": { "id": "3" },
"price": 159.99
}
]
}
}
  • Retail: $199.99
  • Wholesale: $179.99
  • Preferred: $159.99

Fulfillment Process

Kit Fulfillment:

  1. Sales order created with kit item
  2. Kit expands to component items
  3. Item fulfillment picks each component
  4. Each component ships separately
  5. Each component reduces from inventory
  6. Invoice created for kit price

Partial Fulfillment:

  • Can fulfill some components before others
  • Track which components shipped
  • Complete fulfillment when all components shipped

Dynamic vs Static Kits

Dynamic Kit (Standard):

  • Components can change independently
  • Update component item = affects all kits using it
  • Component price changes don't affect kit price
  • Most flexible

Static Kit:

  • Kit price updates if component changes
  • Maintains relationship to component pricing
  • Less common configuration

Component Substitution

For out-of-stock components:

{
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 1
},
{
"item": { "id": "789-ALT" },
"quantity": 1,
"description": "Alternative - substitute if 789 unavailable"
}
]
}
}

Note: NetSuite doesn't automatically substitute, but you can design kits with alternatives and manually select during fulfillment.

Accounting

Revenue Recognition:

  • Revenue recorded at kit price, not component prices
  • All revenue to kit's income account
  • Components don't generate separate revenue

COGS:

  • Each component has its own COGS
  • COGS calculated from component costs
  • Multiple COGS entries (one per component)

Example:

Kit Sale: $199.99
Revenue: $199.99 to Income Account

COGS:
Blue Widget: $25.00 to COGS Account
Red Widget: $15.00 × 2 = $30.00 to COGS Account
Accessory Pack: $5.00 to COGS Account
Total COGS: $60.00
Gross Profit: $139.99

Multi-Level Kits

Kits containing kits:

{
"member": {
"items": [
{
"item": { "id": "900" },
"quantity": 1,
"description": "Starter Bundle"
},
{
"item": { "id": "791" },
"quantity": 2,
"description": "Extra Accessories"
}
]
}
}
  • Parent kit can contain other kits
  • Components expand recursively
  • All base components must be available

Permissions Required

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

Deletion Constraints

  • Cannot delete with transaction history
  • Cannot delete if used in other kits
  • Must inactivate instead if transactions exist

Best Practices

  1. Clear Descriptions: Describe what's included in the kit
  2. Component Availability: Ensure reliable component stock
  3. Attractive Pricing: Price kits to incentivize bundle purchases
  4. Print Settings: Choose appropriate printItems setting for customer needs
  5. Component Selection: Group complementary items
  6. Promotions: Use kits for seasonal or promotional bundles
  7. Documentation: Clearly document kit contents for customers
  8. Inventory Planning: Plan component inventory for kit sales

Use Cases

Product Bundles:

  • Starter kits for new customers
  • Accessory bundles
  • Seasonal gift sets

Promotional Packages:

  • Holiday bundles
  • Limited-time offers
  • Buy-more-save-more deals

Solution Selling:

  • Complete solution packages
  • Industry-specific bundles
  • Curated product sets

Subscription Boxes:

  • Monthly subscription contents
  • Recurring kit deliveries
  • Sample/trial packages

See Also