Skip to main content

Transaction Sequence

Understanding how NetSuite processes transactions in sequence and how this affects inventory costing calculations.


Why Transaction Sequence Matters

The order in which transactions are processed directly impacts:

  • Average cost calculations - Each receipt changes the weighted average
  • FIFO/LIFO cost layers - Layer consumption depends on order
  • COGS accuracy - Wrong sequence = wrong cost of goods sold
  • GL entries - Affects debit/credit amounts posted
TRANSACTION SEQUENCE IMPACT
═══════════════════════════════════════════════════════════════════════════════

SCENARIO: Same transactions, different sequence

SEQUENCE A (Receipt First):
─────────────────────────────────────────────────────────────────────────────
Day 1: Receipt +100 units @ $10.00 = $1,000
Day 2: Sale -50 units @ $10.00 = $500 COGS

Result: COGS = $500, Remaining = 50 units @ $10.00


SEQUENCE B (Sale First - Negative Inventory):
─────────────────────────────────────────────────────────────────────────────
Day 1: Sale -50 units @ ??? (no cost yet)
Day 2: Receipt +100 units @ $10.00

Result: Sale uses estimate, then recalculated when receipt arrives
May cause GL adjustments

═══════════════════════════════════════════════════════════════════════════════

NetSuite Processing Order Rules

Rule 1: Date Takes Priority

Transactions are processed primarily by transaction date, not by when they were entered.

DATE-BASED PROCESSING
═══════════════════════════════════════════════════════════════════════════════

Entered in this order: Processed in this order:
───────────────────── ─────────────────────────
1. Invoice (Date: Jan 15) 1. Item Receipt (Date: Jan 10)
2. Item Receipt (Date: Jan 10) 2. Invoice (Date: Jan 15)
3. Cash Sale (Date: Jan 12) 3. Cash Sale (Date: Jan 12) ← Wait, reordered!

ACTUAL PROCESSING ORDER:
1. Item Receipt (Jan 10) ─── Sets cost
2. Cash Sale (Jan 12) ─── Uses cost from receipt
3. Invoice (Jan 15) ─── Uses cost from receipt

═══════════════════════════════════════════════════════════════════════════════

Rule 2: Same Day - Increases Before Decreases

When multiple transactions occur on the same day, NetSuite processes them in this order:

SAME-DAY PROCESSING PRIORITY
═══════════════════════════════════════════════════════════════════════════════

PRIORITY ORDER (All on January 15):
─────────────────────────────────────────────────────────────────────────────

┌─────────────────────────────────────────────────────────────────────────┐
│ PRIORITY 1: INVENTORY INCREASES │
│ │
│ • Item Receipt │
│ • Vendor Bill (Direct Purchase) │
│ • Inventory Adjustment (+) │
│ • Work Order Completion │
│ • Assembly Build │
│ • Customer Return (RMA Receipt) │
│ │
└─────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────┐
│ PRIORITY 2: INVENTORY DECREASES │
│ │
│ • Item Fulfillment │
│ • Invoice (Direct Sale) │
│ • Cash Sale │
│ • Inventory Adjustment (-) │
│ • Work Order Issue │
│ • Vendor Return │
│ │
└─────────────────────────────────────────────────────────────────────────┘

═══════════════════════════════════════════════════════════════════════════════

Rule 3: Same Type - By Internal ID

When transactions have the same date AND same type, they're processed by internal ID (creation order).

SAME DATE, SAME TYPE - INTERNAL ID ORDER
═══════════════════════════════════════════════════════════════════════════════

All Item Receipts on January 15:

Internal ID #1001: Receipt 100 units @ $10.00 ─── Processed 1st
Internal ID #1002: Receipt 50 units @ $12.00 ─── Processed 2nd
Internal ID #1003: Receipt 75 units @ $11.00 ─── Processed 3rd

Running Average Cost:
After #1001: $10.00
After #1002: ($1,000 + $600) / 150 = $10.67
After #1003: ($1,600 + $825) / 225 = $10.78

═══════════════════════════════════════════════════════════════════════════════

Complete Transaction Sequence Flow

Purchase Cycle Sequence

PURCHASE CYCLE - TRANSACTION SEQUENCE
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 1: PURCHASE ORDER │
│ ───────────────────────────────────────────────────────────────────────── │
│ • No inventory impact │
│ • No costing impact │
│ • Just a commitment │
│ │
│ Sequence Position: N/A (not in costing queue) │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 2: ITEM RECEIPT │
│ ───────────────────────────────────────────────────────────────────────── │
│ • Inventory INCREASES │
│ • Cost is SET (from PO rate or manually entered) │
│ • Item flagged for costing │
│ │
│ Sequence Position: FIRST in costing sequence (cost-setting) │
│ │
│ GL Impact: │
│ Dr. Inventory Asset $XXX │
│ Cr. Accrued Purchases $XXX │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 3: VENDOR BILL │
│ ───────────────────────────────────────────────────────────────────────── │
│ • Confirms actual cost │
│ • May trigger variance if rate differs │
│ • Recalculates if cost changed │
│ │
│ Sequence Position: After Receipt (updates cost if different) │
│ │
│ GL Impact (if variance): │
│ Dr. Inventory Asset (or PPV) $XXX │
│ Cr. Accrued Purchases $XXX │
└─────────────────────────────────────────────────────────────────────────────┘

═══════════════════════════════════════════════════════════════════════════════

Sales Cycle Sequence

SALES CYCLE - TRANSACTION SEQUENCE
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 1: SALES ORDER │
│ ───────────────────────────────────────────────────────────────────────── │
│ • No inventory impact │
│ • Commits inventory (if enabled) │
│ • No COGS recorded yet │
│ │
│ Sequence Position: N/A (not in costing queue) │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 2: ITEM FULFILLMENT │
│ ───────────────────────────────────────────────────────────────────────── │
│ • Inventory DECREASES │
│ • COGS recorded at current cost │
│ • Uses cost from most recent calculation │
│ │
│ Sequence Position: AFTER all receipts on same day │
│ │
│ GL Impact: │
│ Dr. COGS $XXX │
│ Cr. Inventory Asset $XXX │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 3: INVOICE │
│ ───────────────────────────────────────────────────────────────────────── │
│ • No additional inventory impact │
│ • Revenue recognition │
│ • COGS already recorded at fulfillment │
│ │
│ Sequence Position: N/A (inventory already affected at fulfillment) │
│ │
│ GL Impact: │
│ Dr. Accounts Receivable $XXX │
│ Cr. Revenue $XXX │
└─────────────────────────────────────────────────────────────────────────────┘

═══════════════════════════════════════════════════════════════════════════════

Manufacturing Cycle Sequence

MANUFACTURING - TRANSACTION SEQUENCE
═══════════════════════════════════════════════════════════════════════════════

┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 1: WORK ORDER CREATED │
│ ───────────────────────────────────────────────────────────────────────── │
│ • No inventory impact yet │
│ • Defines BOM and quantity to build │
│ │
│ Sequence Position: N/A │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 2: WORK ORDER ISSUE │
│ ───────────────────────────────────────────────────────────────────────── │
│ • Component inventory DECREASES │
│ • Components move to WIP │
│ • Uses current component costs │
│ │
│ Sequence Position: DECREASE transaction │
│ │
│ GL Impact: │
│ Dr. WIP $XXX │
│ Cr. Inventory Asset $XXX (components) │
└─────────────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 3: WORK ORDER COMPLETION │
│ ───────────────────────────────────────────────────────────────────────── │
│ • Finished goods inventory INCREASES │
│ • Cost = Sum of component costs + labor + overhead │
│ • Sets finished item cost │
│ │
│ Sequence Position: INCREASE transaction (cost-setting) │
│ │
│ GL Impact: │
│ Dr. Inventory Asset (FG) $XXX │
│ Cr. WIP $XXX │
└─────────────────────────────────────────────────────────────────────────────┘

═══════════════════════════════════════════════════════════════════════════════

Sequence by Costing Method

Different costing methods process sequences differently:

Average Costing Sequence

AVERAGE COSTING - SEQUENCE PROCESSING
═══════════════════════════════════════════════════════════════════════════════

Starting: 0 units @ $0.00

Transaction Sequence:
─────────────────────────────────────────────────────────────────────────────
SEQ 1: Receipt #1 +100 units @ $10.00
→ Avg Cost = $10.00
→ Total Value = $1,000

SEQ 2: Receipt #2 +50 units @ $14.00
→ Avg Cost = ($1,000 + $700) / 150 = $11.33
→ Total Value = $1,700

SEQ 3: Sale #1 -80 units @ $11.33 (uses current avg)
→ COGS = $906.67
→ Remaining: 70 units @ $11.33 = $793.33

SEQ 4: Receipt #3 +30 units @ $12.00
→ Avg Cost = ($793.33 + $360) / 100 = $11.53
→ Total Value = $1,153.33

SEQ 5: Sale #2 -40 units @ $11.53
→ COGS = $461.33
→ Remaining: 60 units @ $11.53 = $691.99

═══════════════════════════════════════════════════════════════════════════════

FIFO Sequence

FIFO - SEQUENCE PROCESSING
═══════════════════════════════════════════════════════════════════════════════

Starting: 0 units

Transaction Sequence:
─────────────────────────────────────────────────────────────────────────────
SEQ 1: Receipt #1 +100 units @ $10.00
→ Layer 1: 100 units @ $10.00

SEQ 2: Receipt #2 +50 units @ $14.00
→ Layer 1: 100 units @ $10.00
→ Layer 2: 50 units @ $14.00

SEQ 3: Sale #1 -80 units (FIFO: uses oldest first)
→ Consumes 80 from Layer 1 @ $10.00
→ COGS = $800
→ Remaining:
Layer 1: 20 units @ $10.00
Layer 2: 50 units @ $14.00

SEQ 4: Receipt #3 +30 units @ $12.00
→ Layer 1: 20 units @ $10.00
→ Layer 2: 50 units @ $14.00
→ Layer 3: 30 units @ $12.00

SEQ 5: Sale #2 -40 units (FIFO: uses oldest first)
→ Consumes 20 from Layer 1 @ $10.00 = $200
→ Consumes 20 from Layer 2 @ $14.00 = $280
→ COGS = $480
→ Remaining:
Layer 2: 30 units @ $14.00
Layer 3: 30 units @ $12.00

═══════════════════════════════════════════════════════════════════════════════

Sequence Conflicts and Resolution

Backdated Transaction Sequence

BACKDATED TRANSACTION - SEQUENCE RESOLUTION
═══════════════════════════════════════════════════════════════════════════════

ORIGINAL SEQUENCE:
─────────────────────────────────────────────────────────────────────────────
Jan 10: Receipt +100 @ $10.00 → Avg = $10.00
Jan 15: Sale -50 @ $10.00 → COGS = $500
Jan 20: Receipt +80 @ $12.00 → Avg = $10.77

BACKDATED ENTRY (New receipt dated Jan 12):
─────────────────────────────────────────────────────────────────────────────
Jan 12: Receipt +60 @ $8.00 (BACKDATED)

NEW SEQUENCE AFTER REPROCESSING:
─────────────────────────────────────────────────────────────────────────────
Jan 10: Receipt +100 @ $10.00 → Avg = $10.00
Jan 12: Receipt +60 @ $8.00 → Avg = ($1000+$480)/160 = $9.25 ← NEW
Jan 15: Sale -50 @ $9.25 → COGS = $462.50 (was $500) ← CHANGED
Jan 20: Receipt +80 @ $12.00 → Avg = $10.09 (was $10.77) ← CHANGED

RESULT:
• Sale COGS changed from $500 to $462.50
• System COGS Adjustment created for $37.50
• All subsequent costs recalculated

═══════════════════════════════════════════════════════════════════════════════

Negative Inventory Sequence

NEGATIVE INVENTORY - SEQUENCE HANDLING
═══════════════════════════════════════════════════════════════════════════════

SCENARIO: Sale occurs before receipt (creates negative inventory)

TRANSACTION ENTRY ORDER:
─────────────────────────────────────────────────────────────────────────────
9:00 AM: Sale entered (Date: Jan 10) - 50 units
Problem: No inventory exists!

9:30 AM: Receipt entered (Date: Jan 10) - 100 units @ $10.00

PROCESSING ORDER (Same Day Rule Applied):
─────────────────────────────────────────────────────────────────────────────
STEP 1: Receipt processed FIRST (increase before decrease)
+100 units @ $10.00

STEP 2: Sale processed SECOND
-50 units @ $10.00

RESULT: No negative inventory because receipt processed first!

BUT IF DIFFERENT DATES:
─────────────────────────────────────────────────────────────────────────────
Sale Date: Jan 9
Receipt Date: Jan 10

→ Sale on Jan 9 creates negative inventory
→ Uses "Negative Inventory Cost" preference:
• Last Purchase Price
• Average Cost (prior)
• Zero

→ When receipt arrives, cost may be adjusted

═══════════════════════════════════════════════════════════════════════════════

Transaction Sequence Reference Table

Transaction TypeSequence PriorityCost ImpactTriggers Recalc
Item Receipt1st (Increase)Sets costYes
Vendor Bill (Direct)1st (Increase)Sets costYes
Inventory Adj (+)1st (Increase)Sets cost for added unitsYes
Work Order Completion1st (Increase)Sets finished goods costYes
Assembly Build1st (Increase)Sets assembly costYes
Customer Return1st (Increase)Returns at original costYes
Item Fulfillment2nd (Decrease)Uses current costNo
Invoice (Direct)2nd (Decrease)Uses current costNo
Cash Sale2nd (Decrease)Uses current costNo
Inventory Adj (-)2nd (Decrease)Uses current costNo
Work Order Issue2nd (Decrease)Uses current costNo
Vendor Return2nd (Decrease)Returns at current costNo
Transfer Order2nd (Decrease/Increase)Transfers at current costLocation dependent

Best Practices

Optimal Transaction Sequence

PracticeBenefit
Enter receipts before sales for same dayPrevents negative inventory
Process vendor bills promptly after receiptsMinimizes variance adjustments
Complete work orders before fulfilling finished goodsEnsures accurate FG cost
Avoid backdating across closed periodsPrevents period adjustments

Sequence Monitoring

HOW TO VERIFY TRANSACTION SEQUENCE
═══════════════════════════════════════════════════════════════════════════════

1. INVENTORY DETAIL REPORT
Reports > Inventory > Inventory Valuation Detail
• Shows transactions in processed order
• Running balance confirms sequence

2. TRANSACTION SAVED SEARCH
Criteria: Item = [your item], Date = [date range]
Results:
• Internal ID (shows creation order)
• Transaction Date
• Type (Receipt, Sale, etc.)
• Quantity

3. COSTING QUEUE CHECK
Item Record > Cost Accounting Status field
• "In Queue" = Pending processing
• "Completed" = Fully processed

═══════════════════════════════════════════════════════════════════════════════

Next Steps