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
Navigation
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 Purpose | Type | Example |
|---|---|---|
| Scheduling | Date | Line Delivery Date, Promise Date |
| Location | Text/List | Bin Location, Pick Zone |
| Shipping | List | Line Ship Method, Carrier |
| Instructions | Text | Line Notes, Handling Instructions |
| Tracking | Text | Line Tracking Number |
Pricing & Finance
| Field Purpose | Type | Example |
|---|---|---|
| Discounts | Percent/Currency | Line Discount %, Discount Amount |
| Cost | Currency | Expected Cost, Target Margin |
| Billing | List | Billing Type, Revenue Category |
| Tax | List/Checkbox | Tax Override, Exempt Reason |
Product Details
| Field Purpose | Type | Example |
|---|---|---|
| Specifications | Text | Color, Size, Configuration |
| Compliance | List/Checkbox | Hazmat, Export Controlled |
| Warranty | List/Integer | Warranty Type, Warranty Months |
| Services | Checkbox | Gift Wrap, Assembly Required |
Integration & Tracking
| Field Purpose | Type | Example |
|---|---|---|
| External ID | Text | External Line ID, WMS Reference |
| Status | List | Line Status, Fulfillment Status |
| Audit | Text/Date | Last 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
| Sublist | Location | Use |
|---|---|---|
| Items | Main line items | Product and service lines |
| Expenses | Expense sublist | Expense category lines (bills, expense reports) |
| Time | Time sublist | Time tracking entries |
| Partners | Partner sublist | Partner commission splits |
| Sales Team | Sales team sublist | Sales representative splits |
| Item Cost | Cost sublist | Item 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 Type | Behavior | Use Case |
|---|---|---|
| Normal | Editable column | Standard data entry |
| Disabled | Read-only column | Calculated/sourced values |
| Hidden | Not visible | Script-only or integration data |
| Entry | Entry popup | Long text that doesn't fit in column |
| Show on List | In line-level search | Reporting 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
| Element | Convention | Example |
|---|---|---|
| Field ID | custcol_[prefix]_[name] | custcol_wh_bin_location |
| Prefix | Department/module (2-4 chars) | wh, ful, fin |
| Name | Descriptive, snake_case | delivery_date |
Design Checklist
| Consideration | Recommendation |
|---|---|
| Sublist | Select correct sublist (Items, Expenses, etc.) |
| Transaction Types | Include all types in transaction chain |
| Sourcing | Source from item when possible |
| Flow | Test field flow through createdfrom |
| Width | Keep columns narrow, use Entry for long text |
| Order | Place in logical workflow order |
Performance Tips
| Consideration | Impact |
|---|---|
| Fewer line fields | Faster form rendering |
| Simple sourcing | Quick value population |
| Avoid fieldChanged | Heavy line scripts slow entry |
| Batch updates | Process multiple lines efficiently |