Skip to main content

Item Number Fields (SuiteBuilder)

Comprehensive guide to managing item identifiers, SKUs, barcodes, and alternate part numbers in NetSuite.


Overview

Item number fields store the identifiers used to recognize items internally and externally. NetSuite supports multiple item identifier types for different purposes.

ITEM IDENTIFIER TYPES
═══════════════════════════════════════════════════════════════════════════════

Item Record: Widget-A
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ INTERNAL IDENTIFIERS │
│ ──────────────────── │
│ Internal ID: 12345 (System-generated, immutable) │
│ Name/Number: WIDG-A-001 (Primary display identifier) │
│ Display Name: Premium Widget A (Descriptive name) │
│ External ID: EXT_WIDG_001 (Integration key) │
│ │
│ CUSTOM IDENTIFIERS │
│ ────────────────── │
│ custitem_sku: SKU-12345-BLK (Custom SKU field) │
│ custitem_barcode: 012345678901 (UPC/EAN barcode) │
│ custitem_vendor_pn: VP-001-A (Vendor's part number) │
│ custitem_customer_pn: ABC-123 (Customer-specific code) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Standard Item Identifier Fields

Built-in Identifier Fields

FieldInternal IDPurposeUnique?
Item Name/NumberitemidPrimary system identifierYes
Display Name/CodedisplaynameUser-friendly nameNo
Internal IDidSystem-generated IDYes
External IDexternalidIntegration/import keyYes (if set)
Vendor Codevendorname (sublist)Vendor's part numberNo
UPC CodeupccodeUniversal Product CodeOptional enforcement
Purchase DescriptionpurchasedescriptionVendor purchase textNo
Sales DescriptionsalesdescriptionCustomer-facing textNo

Creating Custom Identifier Fields

Customization → Lists, Records, & Fields → Item Fields → New

SKU Field Example

CUSTOM SKU FIELD CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ BASIC SETTINGS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Label*: [SKU ] │
│ ID*: [custitem_sku ] │
│ Type: [Free-Form Text ▾] │
│ │
│ Description: [Stock Keeping Unit for inventory │
│ management and order tracking ] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ VALIDATION │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ☑ Mandatory Every item must have a SKU │
│ ☑ Unique Value No duplicate SKUs allowed │
│ │
│ Default Value: (none) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ APPLIES TO │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ☑ Inventory Item │
│ ☑ Lot Numbered Inventory Item │
│ ☑ Serialized Inventory Item │
│ ☑ Assembly/Bill of Materials │
│ ☐ Service Item │
│ ☐ Non-Inventory Item │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Common Custom Identifier Patterns

Barcode/UPC Fields

BARCODE FIELD CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

Field: UPC Barcode
ID: custitem_upc_barcode
Type: Free-Form Text

Validation Options:
┌─────────────────────────────────────────────────────────────────────────────┐
│ ☑ Unique Value Prevent duplicate barcodes │
│ ☐ Mandatory Not all items need barcodes │
│ │
│ Format Hint: Enter 12 or 13 digit UPC/EAN code │
└─────────────────────────────────────────────────────────────────────────────┘

Common Barcode Types:
• UPC-A: 12 digits (North America)
• EAN-13: 13 digits (International)
• EAN-8: 8 digits (Small packages)
• ISBN: 13 digits (Books)
• ASIN: 10 characters (Amazon)

Vendor Part Number Fields

VENDOR PART NUMBER PATTERNS
═══════════════════════════════════════════════════════════════════════════════

Option 1: Single Field (One Primary Vendor)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Field: Vendor Part Number │
│ ID: custitem_vendor_part_no │
│ Type: Free-Form Text │
│ Use: When item has one primary vendor │
└─────────────────────────────────────────────────────────────────────────────┘

Option 2: Item Vendor Sublist (Multiple Vendors)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Location: Item → Purchasing → Vendors subtab │
│ Built-in Field: purchasedescription (per vendor) │
│ Custom Field: custrecord_vendor_pn (on vendor sublist) │
│ Use: When item has multiple vendor sources │
└─────────────────────────────────────────────────────────────────────────────┘

Item-Vendor Sublist Example:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Vendor │ Vendor Code │ Vendor PN* │ Cost │ Lead Time │
│ ──────────────┼───────────────┼─────────────┼─────────┼────────────────────│
│ Supplier A │ WIDG-001 │ SA-WGT-A1 │ $15.00 │ 5 days │
│ Supplier B │ W-A-001 │ SB-WIDGET │ $16.50 │ 3 days │
│ │
│ * = Custom field on vendor sublist │
└─────────────────────────────────────────────────────────────────────────────┘

Customer Part Number Fields

CUSTOMER-SPECIFIC PART NUMBERS
═══════════════════════════════════════════════════════════════════════════════

For customer-specific identifiers, consider:

Option 1: Item Alias Records
• Use NetSuite's Item Alias feature
• Maps customer codes to item records
• Works with sales order entry

Option 2: Custom Record (Item-Customer Mapping)
• Custom record: Item Customer Code
• Fields: Item (list), Customer (list), Customer Part Number (text)
• Script lookup during order entry

Option 3: Matrix Item Child SKUs
• For product variations with customer-specific codes
• Each child item has unique identifier

Example Mapping Record:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Item │ Customer │ Customer Part Number │
│ ──────────────────┼─────────────────┼──────────────────────────────────────│
│ WIDG-A-001 │ ABC Corp │ ABC-12345 │
│ WIDG-A-001 │ XYZ Inc │ XYZ-W-001 │
│ WIDG-A-001 │ Acme Co │ ACME-WIDGET-A │
└─────────────────────────────────────────────────────────────────────────────┘

Displaying Identifiers on Transactions

Transaction Form Configuration

ITEM IDENTIFIER DISPLAY ON TRANSACTIONS
═══════════════════════════════════════════════════════════════════════════════

Sales Order Items Sublist:

┌─────────────────────────────────────────────────────────────────────────────┐
│ Item │ Display Name │ SKU* │ Qty │ Rate │ Amount │
│ ────────────┼──────────────────┼────────────┼─────┼─────────┼──────────────│
│ WIDG-A-001 │ Premium Widget A │ SKU-12345 │ 10 │ $25.00 │ $250.00 │
│ WIDG-B-001 │ Standard Widget │ SKU-67890 │ 5 │ $15.00 │ $75.00 │
│ │
│ * = Custom column sourced from item field │
└─────────────────────────────────────────────────────────────────────────────┘

Configuration Steps:
1. Create item field (custitem_sku)
2. Create transaction line field (custcol_sku)
3. Set line field to source from item field
4. Add column to transaction form

Sourcing Item Fields to Lines

IDENTIFIER SOURCING TO TRANSACTION LINE
═══════════════════════════════════════════════════════════════════════════════

Item Record Transaction Line
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ Item: WIDG-A-001 │ │ Line Item: WIDG-A-001 │
│ │ │ │
│ custitem_sku: SKU-12345 │──▶│ custcol_sku: SKU-12345 │
│ custitem_barcode: 012345678901 │ │ custcol_barcode: 012345678901 │
│ │ │ (Values auto-populate) │
└─────────────────────────────────┘ └─────────────────────────────────┘

Line Field Configuration:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Field: SKU (Line) │
│ ID: custcol_sku │
│ Type: Free-Form Text │
│ │
│ Source From: Item │
│ Source Field: custitem_sku │
│ Display Type: Disabled (read-only on line) │
└─────────────────────────────────────────────────────────────────────────────┘

Item Alias Feature

NetSuite's built-in Item Alias feature maps alternate identifiers to items:

ITEM ALIAS CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

Navigation: Lists → Accounting → Items → Item Alias

Item Alias Record:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Alias: CUST-ABC-123 │
│ Item: [Widget A ▾] │
│ Customer: [ABC Corp ▾] (Optional: customer-specific) │
│ Description: Customer's part number for Widget A │
└─────────────────────────────────────────────────────────────────────────────┘

Benefits:
• Type alias on order, selects correct item
• Customer-specific aliases supported
• Search by alias in saved searches
• No custom scripting required

Identifier Lookup Strategies

Search by Multiple Identifiers

-- SuiteQL: Find item by any identifier
SELECT
i.id,
i.itemid AS item_number,
i.displayname,
i.custitem_sku AS sku,
i.custitem_barcode AS barcode,
i.upccode
FROM
item i
WHERE
i.itemid = 'WIDG-A-001'
OR i.custitem_sku = 'SKU-12345'
OR i.custitem_barcode = '012345678901'
OR i.upccode = '012345678901'

SuiteScript Lookup

// Lookup item by custom identifier
function findItemByIdentifier(identifierType, identifierValue) {
var fieldId;

switch(identifierType) {
case 'sku':
fieldId = 'custitem_sku';
break;
case 'barcode':
fieldId = 'custitem_barcode';
break;
case 'vendor_pn':
fieldId = 'custitem_vendor_part_no';
break;
default:
fieldId = 'itemid';
}

var itemSearch = search.create({
type: 'item',
filters: [
[fieldId, 'is', identifierValue]
],
columns: ['itemid', 'displayname', 'internalid']
});

var result = itemSearch.run().getRange(0, 1);
return result.length > 0 ? result[0].id : null;
}

Matrix Items and Identifiers

For matrix items with variations, each child needs unique identifiers:

MATRIX ITEM IDENTIFIER STRATEGY
═══════════════════════════════════════════════════════════════════════════════

Parent: T-Shirt (matrix parent)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Item Name: TSHIRT │
│ Display Name: Classic T-Shirt │
│ SKU: (not set - children have unique SKUs) │
└─────────────────────────────────────────────────────────────────────────────┘

Children (with unique identifiers):
┌────────────────────┬────────────────────┬──────────────────┬────────────────┐
│ Item Name │ Display Name │ SKU │ Barcode │
├────────────────────┼────────────────────┼──────────────────┼────────────────┤
│ TSHIRT-S-RED │ T-Shirt Small Red │ TSH-S-RD-001 │ 012345678901 │
│ TSHIRT-S-BLUE │ T-Shirt Small Blue │ TSH-S-BL-001 │ 012345678902 │
│ TSHIRT-M-RED │ T-Shirt Med Red │ TSH-M-RD-001 │ 012345678903 │
│ TSHIRT-M-BLUE │ T-Shirt Med Blue │ TSH-M-BL-001 │ 012345678904 │
└────────────────────┴────────────────────┴──────────────────┴────────────────┘

Best Practice:
• Parent has base item number and display name
• Children have unique SKUs, barcodes
• Auto-generate child identifiers with pattern

Integration Considerations

Identifier for E-commerce

E-COMMERCE IDENTIFIER MAPPING
═══════════════════════════════════════════════════════════════════════════════

NetSuite Field E-commerce Use
───────────────── ──────────────
itemid Product ID / Slug
displayname Product Title
custitem_sku SKU for inventory
upccode / custitem_barcode Barcode scanning
salesdescription Product description
custitem_asin Amazon identifier
custitem_upc Amazon/eBay barcode

Connector Mapping:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Platform │ NetSuite Field │ Platform Field │
├─────────────────┼────────────────────────┼─────────────────────────────────┤
│ Shopify │ custitem_sku │ SKU │
│ Amazon │ custitem_asin │ ASIN │
│ WooCommerce │ itemid │ Product ID │
│ EDI │ upccode │ UPC │
└─────────────────────────────────────────────────────────────────────────────┘

Warehouse/WMS Integration

WAREHOUSE IDENTIFIER REQUIREMENTS
═══════════════════════════════════════════════════════════════════════════════

Warehouse operations typically need:

┌─────────────────────────────────────────────────────────────────────────────┐
│ Identifier │ WMS Use │ NetSuite Field │
├─────────────────────┼────────────────────────────┼─────────────────────────┤
│ Scannable Code │ Barcode scanning │ custitem_barcode │
│ Product SKU │ Pick list, location │ custitem_sku │
│ Lot/Serial │ Inventory tracking │ (lot number field) │
│ Bin Location │ Storage location │ custrecord_bin │
└─────────────────────────────────────────────────────────────────────────────┘

Barcode Label Fields:
• Primary barcode (UPC/EAN)
• Internal SKU barcode
• Location barcode
• Lot/Serial barcode

Best Practices

Naming Conventions

Identifier TypeConventionExample
SKU[Category]-[Seq]-[Variant]WIDGET-001-BLK
BarcodeStandard format (UPC/EAN)012345678901
Vendor PNVendor's formatVP-12345-A
Customer PNCustomer's formatCUST-ABC-001

Design Checklist

ConsiderationRecommendation
Primary IDDecide which identifier is system of record
UniquenessEnforce unique where required (SKU, barcode)
DisplayShow relevant ID on transactions and reports
SourcingAuto-populate line fields from item
IntegrationMap identifiers to external systems
SearchEnable identifier search on forms
MatrixEnsure children have unique identifiers

Common Mistakes

MistakeSolution
Duplicate SKUs allowedEnable Unique Value validation
Wrong ID on pick listsConfigure form to show correct field
Integration ID mismatchStandardize external ID usage
Matrix children share parent IDGenerate unique child identifiers