Table Reference
A comprehensive guide to NetSuite's internal table structures and how records relate to each other.
Why This Matters
NetSuite's data model is complex. Records don't exist in isolation - they're connected through various junction tables, mapping tables, and snapshot mechanisms. Understanding these relationships is essential for:
- Writing accurate SuiteQL queries
- Building effective Saved Searches
- Creating SuiteAnalytics Workbooks
- Developing SuiteScript integrations
What You'll Learn
NETSUITE DATA RELATIONSHIPS
═══════════════════════════════════════════════════════════════════════════════
┌─────────────────────────────────────────────────────────────────────────────┐
│ TRANSACTION LINKS │
│ │
│ Sales Order ──────▶ Invoice ──────▶ Payment │
│ │ │
│ └──────▶ Fulfillment │
│ │
│ Tables: NextTransactionLineLink, PreviousTransactionLineLink │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ MULTI-SELECT FIELDS │
│ │
│ Customer ◄─────────▶ Lead Sources (many-to-many) │
│ │
│ Tables: map_{record}_{field_id} │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ JUNCTION TABLES │
│ │
│ Transaction ──▶ TransactionLine ──▶ Item │
│ │ │ │
│ │ └──▶ TransactionAccountingLine ──▶ Account │
│ │ │
│ Item ──▶ ItemMember (components) │
│ Entity ──▶ EntityAddress (addresses) │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ SNAPSHOT TABLES │
│ │
│ Customer Address ────(copied at creation)────▶ Transaction Address │
│ BOM Components ────(copied at creation)────▶ Work Order Components │
│ Item Price ────(copied at creation)────▶ Transaction Line Rate │
│ │
│ Master data is "frozen" on transactions for audit/legal purposes │
└─────────────────────────────────────────────────────────────────────────────┘
Section Overview
| Section | Description |
|---|---|
| Transaction Link Tables | How transactions connect to each other (SO→Invoice, PO→Receipt) |
| Multi-Select Tables | Hidden mapping tables for multi-select fields |
| Junction Tables | Complete reference of all NetSuite junction tables |
| Snapshot Tables | How master data is copied to transactions |
Common Questions Answered
"Why doesn't my invoice show the updated customer address?" → See Snapshot Tables: Address Tables
"How do I find all invoices created from a Sales Order?" → See Transaction Link Tables
"How do I query a multi-select custom field?" → See Multi-Select Tables
"Why didn't my Work Order update when I changed the BOM?" → See Snapshot Tables: BOM Tables
"What tables link Transactions to GL accounts?" → See Junction Tables
Quick Reference: Finding the Right Table
| You Want To... | Use These Tables |
|---|---|
| Link SO to Invoice/Fulfillment | NextTransactionLineLink, PreviousTransactionLineLink |
| Query multi-select field values | map_{record}_{field} or BUILTIN.MNFILTER |
| Get transaction GL impact | TransactionAccountingLine |
| Get customer addresses | CustomerAddressbook + EntityAddress |
| Get transaction addresses | TransactionShippingAddress, TransactionBillingAddress |
| Get BOM components | AssemblyItemMember or BomRevisionComponentMember |
| Get Work Order components | TransactionLine (where type = WorkOrd) |
| Get item inventory by location | InventoryItemLocations, AggregateItemLocation |
| Get change history | SystemNote |