Suite Utils
Back to Blog
NetSuite TipsSep 1, 2026 • 7 min read

Fix NetSuite Midlife Asset Import: Cumulative

Fix NetSuite Midlife Asset Import: Retain Depreciation History – Enable CSV Import Assistant's Advanced Option to Keep Accurate Totals.

Sarah Jenkins, CPASarah Jenkins, CPAPrincipal Finance Automation Specialist
Fix NetSuite Midlife Asset Import: Cumulative
On this page

When you import midlife fixed assets into NetSuite and run Precompute Depreciation Values, the Cumulative Depreciation, Last Depreciation Date, and Last Depreciation Period fields stay blank or reset to zero. The asset record looks correct on the surface, acquisition cost, NBV, and depreciation method all populate, but the depreciation engine has no history to work from. This happens because the CSV import process, combined with server script execution, overwrites the historical depreciation values you carefully mapped. Here's how to structure the import so NetSuite actually retains the cumulative totals and continues depreciating from the right point.

The Preference Setting That Silently Overwrites Your Data

The CSV Import Assistant includes an advanced option that controls whether server SuiteScripts and workflows fire during import. If enabled, the fixed asset depreciation scripts recalculate Cumulative Depreciation from zero because they don't see the depreciation history records yet, they only see the asset header. Your imported cumulative total gets wiped to 0, and Last Depreciation Date/Period go blank.

On the Import Options page of the CSV Import Assistant, expand Advanced Options and uncheck:

  • Run Server SuiteScript and Trigger Workflows

This setting defaults to your company preference but can be changed per import job. Disable it for midlife asset imports so the depreciation engine doesn't run prematurely.

If you leave this box checked, NetSuite executes the asset depreciation scripts during import. Those scripts recalculate Cumulative Depreciation from zero because they don't see the depreciation history records yet, they only see the asset header. The result: your imported cumulative total gets wiped to 0, and Last Depreciation Date/Period go blank.

Import Sequence: Three Records, Strict Order

Midlife assets require three distinct record types imported in this exact sequence. Skipping a step or reversing the order breaks the depreciation chain.

1. Asset Header Record (Fixed Asset)

Import the asset master record first. Include these critical fields for midlife assets:

CSV ColumnField IDPurpose
Asset NamenameUnique identifier
SubsidiarysubsidiaryRequired for multi-sub environments
Asset TypeassettypeLinks to depreciation method
Asset StatusassetstatusUse "In Use" for active depreciation
Asset Lifetime (Months)depreciablelifeTotal useful life
Original CostassetorigcostPurchase price
Current CostassetcurrcostTypically equals Original Cost unless impaired
Residual ValuesalvagevalueSalvage at end of life
Depreciation Start DatedeprstartdateOriginal acquisition date
Last Depreciation DatelastdeprdateMost recent depreciation run date
Last Depreciation PeriodlastdeprperiodPeriod number within asset life
Last Depreciation AmountlastdepramountAmount taken in that last period
Current NBVnbvNet book value as of import date
Depreciation ActivedepractiveSet to TRUE

The three bolded fields are what Precompute Depreciation Values reads to determine where to resume. If they're zero or blank, the engine assumes the asset hasn't depreciated yet.

2. Asset Acquisition History Record (Depreciation History)

This record establishes the acquisition event. Import using the Depreciation History record type with Transaction Type = "Acquisition."

CSV ColumnField IDValue
DHR NamenameUnique name (e.g., "ACQ-Asset001")
Asset NameassetInternal ID or name matching header
SubsidiarysubsidiarySame as header
Asset TypeassettypeSame as header
Transaction TypetransactiontypeAcquisition
DatetrandateAcquisition date (matches Depreciation Start Date)
Transaction AmountamountOriginal Cost (positive)
NBVnbvOriginal Cost (same as amount for acquisition)
Prior Year NBVprioryrnbv0 for first year, or prior year-end NBV
Depreciation Perioddeprperiod0 (acquisition is period 0)
Accounting BookaccountingbookPrimary book internal ID
Depreciation MethoddeprmethodInternal ID of method

3. Accumulated Depreciation History Record (Depreciation History)

This is the record most imports miss. It tells NetSuite "this much depreciation has already been taken." Transaction Type = "Depreciation."

CSV ColumnField IDValue
DHR NamenameUnique name (e.g., "DEPR-Asset001-2024-06")
Asset NameassetSame as header
SubsidiarysubsidiarySame as header
Quantityquantity1 (or asset quantity)
Accounting BookaccountingbookPrimary book internal ID
Asset TypeassettypeSame as header
Transaction TypetransactiontypeDepreciation
Transaction AmountamountCumulative depreciation to date (positive)
NBVnbvCurrent NBV (Original Cost − Cumulative Depreciation)
Prior Year NBVprioryrnbvNBV at start of current fiscal year
Depreciation PerioddeprperiodLast Depreciation Period number (matches header)

The Depreciation Period on this record must match the Last Depreciation Period on the asset header. If the asset has depreciated for 18 months, this field is 18. The Transaction Amount is the cumulative total through that period, not just the last month's amount.

Running Precompute Depreciation Values

After all three imports complete successfully:

  1. Go to Fixed Assets > Processing > Precompute Depreciation Values
  2. Select the subsidiary and accounting book
  3. Set From Period to the period after your Last Depreciation Period
  4. Set To Period to the current open period
  5. Click Submit

NetSuite will now calculate depreciation starting from the next period. Open the asset record and verify:

  • Cumulative Depreciation = your imported cumulative total + new computed amounts
  • Last Depreciation Date = end date of the last computed period
  • Last Depreciation Period = last computed period number
  • Current NBV = Original Cost − updated Cumulative Depreciation

Common Failure Patterns

SymptomRoot Cause
Cumulative Depreciation = 0 after PrecomputeCSV import preferences overwrote header fields; re-import with preferences off
"Asset may not depreciate" warning on recordLast Depreciation Date or Period is blank or invalid
Depreciation starts from period 1 instead of period 19Accumulated Depreciation history record missing or Period mismatch
Double depreciation in first computed runAcquisition history record amount doesn't match Original Cost, or Depreciation history amount doesn't match Cumulative Depreciation

Verification Checklist Before You Compute

  • [ ] Run Server SuiteScript and Trigger Workflows unchecked on the import job
  • [ ] Asset header shows correct Last Depreciation Date, Period, and Amount
  • [ ] Acquisition history record exists with Transaction Type = Acquisition, Period = 0
  • [ ] Depreciation history record exists with Transaction Type = Depreciation, Period = last actual period
  • [ ] Cumulative depreciation on header = Transaction Amount on depreciation history record
  • [ ] NBV on header = Original Cost − Cumulative Depreciation
  • [ ] All three records share the same Asset Name, Subsidiary, Asset Type, and Accounting Book

What to Do If You Already Imported With Preferences On

You don't need to delete the assets. Re-import just the Asset Header record (Fixed Asset type) with the correct Last Depreciation Date, Last Depreciation Period, Last Depreciation Amount, and Current NBV, preferences still unchecked. The history records remain intact. Then run Precompute again.

NetSuite's fixed asset module is strict about the chain: header dates must match history periods, and cumulative totals must reconcile across all three records. Break one link and the engine resets. Keep the chain intact and Precompute does exactly what it's designed to do, pick up where your legacy system left off.

About the author

Put these ideas to work.

Suite Utils builds small NetSuite tools that fix the specific thing breaking your day. Each one runs as a native SuiteScript SuiteApp inside your account. No sales call, no onboarding.

Browse the Tools

Enjoyed this one?

Get NetSuite tips like this in your inbox. No spam. Practical guides only.

Keep reading