Skip to main content

Transaction Line Fields (SuiteBuilder)

Comprehensive guide to creating and configuring custom transaction line fields that appear on line items within sales orders, invoices, purchase orders, and other transactions.


Overview

Transaction line fields appear on individual line items within a transaction. They capture data specific to each item on the order, not the transaction header.

TRANSACTION LINE FIELD PLACEMENT
═══════════════════════════════════════════════════════════════════════════════

SALES ORDER #SO-001
┌─────────────────────────────────────────────────────────────────────────────┐
│ HEADER (Body Fields) │
│ Customer: ABC Corp Date: 2026-02-03 │
├─────────────────────────────────────────────────────────────────────────────┤
│ ITEMS SUBLIST │
│ │
│ Line │ Item │ Qty │ Rate │ Amount │ Delivery │ Warehouse │ Gift │
│ │ │ │ │ │ Date* │ Note* │ Wrap* │
│ ─────┼──────────┼─────┼────────┼─────────┼────────────┼───────────┼────────│
│ 1 │ Widget-A │ 10 │ $25.00 │ $250.00 │ 2026-02-10 │ Aisle 3 │ ☑ │
│ 2 │ Widget-B │ 5 │ $50.00 │ $250.00 │ 2026-02-15 │ Rack 7 │ ☐ │
│ 3 │ Service │ 1 │ $100 │ $100.00 │ -- │ -- │ ☐ │
│ │
│ * = Custom Transaction Line Fields (custcol_...) │
│ │
├─────────────────────────────────────────────────────────────────────────────┤
│ Subtotal: $600.00 │
└─────────────────────────────────────────────────────────────────────────────┘

Creating Transaction Line Fields

Customization → Lists, Records, & Fields → Transaction Line Fields → New

Configuration Options

TRANSACTION LINE FIELD CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ BASIC SETTINGS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Label*: [Warehouse Location ] │
│ ID*: [custcol_warehouse_location ] │
│ Type: [Free-Form Text ▾] │
│ │
│ Description: [Specific warehouse location for picking │
│ this line item ] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ APPLIES TO - Sublist │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Sublist Type: │
│ ● Items Line items (primary products/services) │
│ ○ Expenses Expense lines on purchase transactions │
│ ○ Time Time entry lines │
│ ○ Partners Partner split lines │
│ ○ Sales Team Sales team commission lines │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ APPLIES TO - Transaction Types │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SALES PURCHASE │
│ ☑ Sales Order ☑ Purchase Order │
│ ☑ Item Fulfillment ☑ Item Receipt │
│ ☑ Invoice ☐ Vendor Bill │
│ ☐ Cash Sale │
│ │
│ INVENTORY │
│ ☑ Transfer Order │
│ ☐ Work Order │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Common Line Field Use Cases

Fulfillment & Logistics

Field PurposeTypeExample
SchedulingDateLine Delivery Date, Promise Date
LocationText/ListBin Location, Pick Zone
ShippingListLine Ship Method, Carrier
InstructionsTextLine Notes, Handling Instructions
TrackingTextLine Tracking Number

Pricing & Finance

Field PurposeTypeExample
DiscountsPercent/CurrencyLine Discount %, Discount Amount
CostCurrencyExpected Cost, Target Margin
BillingListBilling Type, Revenue Category
TaxList/CheckboxTax Override, Exempt Reason

Product Details

Field PurposeTypeExample
SpecificationsTextColor, Size, Configuration
ComplianceList/CheckboxHazmat, Export Controlled
WarrantyList/IntegerWarranty Type, Warranty Months
ServicesCheckboxGift Wrap, Assembly Required

Integration & Tracking

Field PurposeTypeExample
External IDTextExternal Line ID, WMS Reference
StatusListLine Status, Fulfillment Status
AuditText/DateLast Updated, Updated By

Sourcing from Item Record

Line fields can auto-populate from item fields when an item is selected:

LINE FIELD SOURCING FROM ITEM
═══════════════════════════════════════════════════════════════════════════════

Item Record (Widget-A) Sales Order Line
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ Item: Widget-A │ │ Item: Widget-A │
│ │ │ │
│ custitem_hazmat: Yes │──▶│ custcol_hazmat: Yes │
│ custitem_origin: China │ │ custcol_origin: China │
│ custitem_warranty_months: 12 │ │ custcol_warranty: 12 │
│ │ │ (Values sourced automatically) │
└─────────────────────────────────┘ └─────────────────────────────────┘

Configuration:
1. Create Item Field (custitem_hazmat)
2. Create Line Field (custcol_hazmat)
3. Set line field "Source From: Item"
4. Select item source field
5. On item selection, value auto-populates

Line Field Flow Between Transactions

Line fields flow through the createdfrom relationship like body fields:

LINE FIELD FLOW (CREATEDFROM)
═══════════════════════════════════════════════════════════════════════════════

Sales Order Lines Item Fulfillment Lines
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ Line 1: Widget-A │ │ Line 1: Widget-A │
│ custcol_delivery_date: 2/10 │──▶│ custcol_delivery_date: 2/10 │
│ custcol_instructions: Fragile │ │ custcol_instructions: Fragile │
│ │ │ │
│ Line 2: Widget-B │ │ Line 2: Widget-B │
│ custcol_delivery_date: 2/15 │──▶│ custcol_delivery_date: 2/15 │
│ custcol_instructions: -- │ │ custcol_instructions: -- │
└─────────────────────────────────┘ └─────────────────────────────────┘


Invoice Lines
┌─────────────────────────────────┐
│ (Values flow to invoice lines) │
└─────────────────────────────────┘

Flow Requirements:
• Field must apply to all transaction types in the chain
• Lines match by line number or item
• Partial fulfillment copies applicable lines only

Sublist Types Reference

SublistLocationUse
ItemsMain line itemsProduct and service lines
ExpensesExpense sublistExpense category lines (bills, expense reports)
TimeTime sublistTime tracking entries
PartnersPartner sublistPartner commission splits
Sales TeamSales team sublistSales representative splits
Item CostCost sublistItem costing breakdowns

Line Field Display Configuration

Column Width and Order

Configure via Form Customization:

LINE FIELD DISPLAY OPTIONS
═══════════════════════════════════════════════════════════════════════════════

Items Sublist Column Configuration:

┌─────────────────────────────────────────────────────────────────────────────┐
│ Column │ Width │ Order │ Visible │ Mandatory │
├─────────────────────────────────────────────────────────────────────────────┤
│ Item │ 25% │ 1 │ ✓ │ ✓ │
│ Description │ 20% │ 2 │ ✓ │ │
│ Quantity │ 8% │ 3 │ ✓ │ ✓ │
│ Rate │ 10% │ 4 │ ✓ │ │
│ Amount │ 10% │ 5 │ ✓ │ │
│ custcol_delivery_date │ 10% │ 6 │ ✓ │ │
│ custcol_instructions │ 12% │ 7 │ ✓ │ │
│ custcol_hazmat │ 5% │ 8 │ ✓ │ │
└─────────────────────────────────────────────────────────────────────────────┘

Tips:
• Keep important fields visible without scrolling
• Use short labels for column headers
• Hide rarely used fields
• Order by workflow (item → quantity → details → status)

Display Type Options

Display TypeBehaviorUse Case
NormalEditable columnStandard data entry
DisabledRead-only columnCalculated/sourced values
HiddenNot visibleScript-only or integration data
EntryEntry popupLong text that doesn't fit in column
Show on ListIn line-level searchReporting visibility

Calculated Line Fields

Line fields can use formulas for calculated values:

CALCULATED LINE FIELD EXAMPLES
═══════════════════════════════════════════════════════════════════════════════

Example 1: Margin Percent
Formula: ((rate - custcol_cost) / rate) * 100
Type: Decimal (percent)

Example 2: Extended Weight
Formula: quantity * custcol_unit_weight
Type: Decimal

Example 3: Expected Delivery
Formula: trandate + custcol_lead_time_days
Type: Date

Note: Complex calculations often require SuiteScript
for best user experience.

SuiteScript Line Field Access

// Reading line fields
var lineCount = salesOrder.getLineCount('item');

for (var i = 0; i < lineCount; i++) {
var item = salesOrder.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: i
});

var deliveryDate = salesOrder.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_delivery_date',
line: i
});

var instructions = salesOrder.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_instructions',
line: i
});
}

// Setting line fields
salesOrder.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_delivery_date',
line: 0,
value: new Date('2026-02-10')
});

Saved Search with Line Fields

-- Transaction lines with custom line fields
SELECT
t.tranid AS document,
t.type,
tl.linesequencenumber AS line,
tl.item,
tl.quantity,
tl.rate,
tl.custcol_delivery_date AS delivery_date,
tl.custcol_instructions AS instructions
FROM
transaction t
JOIN transactionline tl ON t.id = tl.transaction
WHERE
t.type = 'SalesOrd'
AND tl.custcol_delivery_date IS NOT NULL
ORDER BY
t.tranid, tl.linesequencenumber

Best Practices

Naming Conventions

ElementConventionExample
Field IDcustcol_[prefix]_[name]custcol_wh_bin_location
PrefixDepartment/module (2-4 chars)wh, ful, fin
NameDescriptive, snake_casedelivery_date

Design Checklist

ConsiderationRecommendation
SublistSelect correct sublist (Items, Expenses, etc.)
Transaction TypesInclude all types in transaction chain
SourcingSource from item when possible
FlowTest field flow through createdfrom
WidthKeep columns narrow, use Entry for long text
OrderPlace in logical workflow order

Performance Tips

ConsiderationImpact
Fewer line fieldsFaster form rendering
Simple sourcingQuick value population
Avoid fieldChangedHeavy line scripts slow entry
Batch updatesProcess multiple lines efficiently