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 Type | Sequence Priority | Cost Impact | Triggers Recalc |
|---|---|---|---|
| Item Receipt | 1st (Increase) | Sets cost | Yes |
| Vendor Bill (Direct) | 1st (Increase) | Sets cost | Yes |
| Inventory Adj (+) | 1st (Increase) | Sets cost for added units | Yes |
| Work Order Completion | 1st (Increase) | Sets finished goods cost | Yes |
| Assembly Build | 1st (Increase) | Sets assembly cost | Yes |
| Customer Return | 1st (Increase) | Returns at original cost | Yes |
| Item Fulfillment | 2nd (Decrease) | Uses current cost | No |
| Invoice (Direct) | 2nd (Decrease) | Uses current cost | No |
| Cash Sale | 2nd (Decrease) | Uses current cost | No |
| Inventory Adj (-) | 2nd (Decrease) | Uses current cost | No |
| Work Order Issue | 2nd (Decrease) | Uses current cost | No |
| Vendor Return | 2nd (Decrease) | Returns at current cost | No |
| Transfer Order | 2nd (Decrease/Increase) | Transfers at current cost | Location dependent |
Best Practices
Optimal Transaction Sequence
| Practice | Benefit |
|---|---|
| Enter receipts before sales for same day | Prevents negative inventory |
| Process vendor bills promptly after receipts | Minimizes variance adjustments |
| Complete work orders before fulfilling finished goods | Ensures accurate FG cost |
| Avoid backdating across closed periods | Prevents 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
- Recalculation Triggers - What triggers cost recalculation
- GL Impact Changes - GL entries after recalculation
- Backdated Transactions - Backdating impact on sequence