Skip to main content

Transaction Body Fields (SuiteBuilder)

Comprehensive guide to creating and configuring custom transaction body fields that appear at the header level of sales orders, invoices, purchase orders, and other transactions.


Overview

Transaction body fields are header-level fields that apply to the entire transaction. They capture data that is consistent across all line items on a transaction.

TRANSACTION BODY FIELD PLACEMENT
═══════════════════════════════════════════════════════════════════════════════

SALES ORDER #SO-001
┌─────────────────────────────────────────────────────────────────────────────┐
│ HEADER (Body Fields) │
│ ───────────────────── │
│ Customer: ABC Corp Date: 2026-02-03 │
│ PO Number: PO-12345 Ship Via: UPS Ground │
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
│ │ CUSTOM BODY FIELDS │ │
│ │ Project: PRJ-001 Delivery Priority: Rush │ │
│ │ Department: Sales Approval Status: Approved │ │
│ └─────────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ITEMS SUBLIST (Line Fields apply here) │
│ ───────────────────── │
│ Line │ Item │ Qty │ Rate │ Amount │ (custom line fields...) │
│ 1 │ Widget-A │ 10 │ $25.00 │ $250.00 │ │
│ 2 │ Widget-B │ 5 │ $50.00 │ $250.00 │ │
├─────────────────────────────────────────────────────────────────────────────┤
│ TOTALS │
│ Subtotal: $500.00 Tax: $40.00 Total: $540.00 │
└─────────────────────────────────────────────────────────────────────────────┘

Creating Transaction Body Fields

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

Configuration Options

TRANSACTION BODY FIELD CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ BASIC SETTINGS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Label*: [Delivery Priority ] │
│ ID*: [custbody_delivery_priority ] │
│ Type: [List/Record ▾] │
│ List/Record: [Priority Level List ▾] │
│ │
│ Description: [Indicates shipping urgency for │
│ warehouse prioritization ] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ APPLIES TO (Transaction Types) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SALES PURCHASE │
│ ☑ Sales Order ☑ Purchase Order │
│ ☑ Item Fulfillment ☑ Item Receipt │
│ ☐ Invoice ☐ Vendor Bill │
│ ☐ Cash Sale ☐ Vendor Credit │
│ ☐ Credit Memo │
│ │
│ INVENTORY FINANCIAL │
│ ☑ Transfer Order ☐ Journal Entry │
│ ☐ Inventory Adjustment ☐ Deposit │
│ ☐ Work Order ☐ Check │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ VALIDATION & DEFAULTING │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ☐ Mandatory Require value on save │
│ ☐ Unique Value No duplicates across transactions │
│ │
│ Default Value: [Standard ▾] │
│ │
│ Help Text: [Select shipping priority level ] │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Common Transaction Body Field Use Cases

Classification Fields

Field PurposeTypeExample
Project TrackingList/RecordProject, Job, Contract
DepartmentList/RecordDepartment Override
ApprovalListApproval Status, Approval Level
CategoryListOrder Type, Transaction Category
PriorityListDelivery Priority, Processing Priority

Compliance & Reference Fields

Field PurposeTypeExample
External ReferenceTextCustomer PO, External ID
ComplianceList/CheckboxExport License, Hazmat Declaration
Tax/DutyList/TextIncoterms, Tax Exemption Reason
LegalDocumentContract Attachment, Authorization

Process & Workflow Fields

Field PurposeTypeExample
StatusListProcessing Status, Review Status
AssignmentList/RecordAssigned To, Reviewer
DatesDateExpected Ship Date, Required Date
NotesText AreaSpecial Instructions, Internal Notes

Integration Fields

Field PurposeTypeExample
External SystemTextERP Order ID, WMS Reference
Sync StatusListIntegration Status
TimestampsDate/TimeSync Date, Export Date

Field Flow Between Transactions

Transaction body fields automatically flow through the createdfrom relationship:

BODY FIELD FLOW (CREATEDFROM)
═══════════════════════════════════════════════════════════════════════════════

Sales Order #SO-001 Item Fulfillment #IF-001
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ custbody_project: PRJ-100 │──▶│ custbody_project: PRJ-100 │
│ custbody_priority: Rush │ │ custbody_priority: Rush │
│ custbody_instructions: Handle │ │ custbody_instructions: Handle │
│ with care │ │ with care │
└─────────────────────────────────┘ └─────────────────────────────────┘


Invoice #INV-001
┌─────────────────────────────────┐
│ custbody_project: PRJ-100 │
│ custbody_priority: Rush │
│ custbody_instructions: Handle │
│ with care │
└─────────────────────────────────┘

Field Flow Rules:
1. Field must "Apply To" BOTH source and target transaction types
2. Values copy automatically when creating from source
3. Values can be modified on child after copy
4. Scripts can override during creation

Sourcing from Entity and Item

Body fields can source default values from the entity or other sources:

BODY FIELD SOURCING
═══════════════════════════════════════════════════════════════════════════════

Customer Record Sales Order
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
│ Customer: ABC Corp │ │ Customer: ABC Corp │
│ │ │ │
│ custentity_default_project: │──▶│ custbody_project: PRJ-100 │
│ PRJ-100 │ │ (Auto-populated) │
│ │ │ │
│ custentity_default_priority: │──▶│ custbody_priority: Standard │
│ Standard │ │ (Auto-populated) │
└─────────────────────────────────┘ └─────────────────────────────────┘

Configuration:
1. Create entity field on Customer
2. Create body field on Transaction
3. Set body field to "Source From: Customer"
4. Select source field (e.g., custentity_default_project)
5. When customer selected, value auto-populates

Subtab Placement

Transaction body fields can be placed on specific subtabs:

BODY FIELD SUBTAB PLACEMENT
═══════════════════════════════════════════════════════════════════════════════

Sales Order Form Layout:

┌─────────────────────────────────────────────────────────────────────────────┐
│ [Main] [Shipping] [Billing] [Custom Info] [Related Records] │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Main Tab: │
│ • Customer, Date, PO Number (standard) │
│ • custbody_order_type (custom) │
│ • custbody_priority (custom) │
│ │
│ Shipping Tab: │
│ • Ship To, Ship Via, Ship Date (standard) │
│ • custbody_delivery_instructions (custom) │
│ • custbody_carrier_account (custom) │
│ │
│ Custom Info Tab: │
│ • custbody_project │
│ • custbody_campaign_source │
│ • custbody_approval_status │
│ • custbody_internal_notes │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

Configuration:
Use Form Customization to place fields on specific subtabs

Display Type Options

Display TypeUI BehaviorUse Case
NormalEditable input fieldStandard data entry
DisabledVisible, not editableCalculated or system-set values
HiddenNot visible on formScript-only or integration fields
Inline TextDisplay text onlyRead-only reference display
HyperlinkClickable linkURL references

Role-Based Field Access

BODY FIELD ACCESS BY ROLE
═══════════════════════════════════════════════════════════════════════════════

Field: Discount Override (custbody_discount_override)

Role Access Configuration:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Role Form Access Field Visibility │
├─────────────────────────────────────────────────────────────────────────────┤
│ Administrator Full Edit │
│ Sales Manager Full Edit │
│ Sales Representative Standard Form View (Disabled) │
│ Warehouse Limited Form Hidden │
│ Accounts Receivable AR Form View (Disabled) │
└─────────────────────────────────────────────────────────────────────────────┘

Implementation Options:
1. Create different forms per role with field show/hide
2. Use field-level access controls
3. Set display type to Disabled for view-only

Reporting and Search Usage

Saved Search Criteria

-- Transaction search with body fields
SELECT
t.tranid AS document_number,
t.type,
t.trandate,
c.companyname AS customer,
t.total,
BUILTIN.DF(t.custbody_project) AS project,
BUILTIN.DF(t.custbody_priority) AS priority,
t.custbody_instructions AS instructions
FROM
transaction t
JOIN customer c ON t.entity = c.id
WHERE
t.type = 'SalesOrd'
AND t.custbody_priority = 3 -- Rush priority ID
AND t.trandate >= TO_DATE('2026-01-01', 'YYYY-MM-DD')

SuiteScript Access

// Reading body fields
var salesOrder = record.load({
type: 'salesorder',
id: orderId
});

var project = salesOrder.getValue('custbody_project');
var priority = salesOrder.getValue('custbody_priority');
var instructions = salesOrder.getValue('custbody_instructions');

// Setting body fields
salesOrder.setValue('custbody_priority', 1);
salesOrder.setValue('custbody_instructions', 'Handle with care');
salesOrder.save();

Best Practices

Naming Conventions

ElementConventionExample
Field IDcustbody_[prefix]_[name]custbody_wh_priority
PrefixDepartment/module (2-4 chars)wh, fin, ops
NameDescriptive, snake_casedelivery_priority

Design Checklist

ConsiderationRecommendation
Applies ToSelect only transaction types that need the field
FlowEnsure field applies to all linked transaction types
SourcingAuto-populate from entity when possible
PlacementGroup related fields on same subtab
DisplayUse Disabled for calculated/sourced values
MandatoryOnly require if truly essential
DefaultSet defaults to reduce data entry

Performance Tips

ConsiderationImpact
Fewer applies-toFaster form loading
Avoid Too Many>30 custom body fields slows forms
Source SimpleComplex sourcing adds load time
Script WiselyHeavy scripts on fieldChanged slow UI