Accounting
Distribution
ERP
Inventory Management
NetSuite Inventory Adjustments: Adjust Inventory, Inventory Worksheet and Reason Codes

Last updated: October 17, 2026 · Independent guide · We do not sell rankings or coverage.
A NetSuite inventory adjustment changes the quantity or value of an item without a purchase or sale, posting the difference between the item’s inventory asset account and an adjustment account you choose. NetSuite offers two forms: Adjust Inventory, which adds or removes a quantity, and the Adjust Inventory Worksheet, which resets an item to an absolute count as of a date. If you use the Inventory Count feature, approved counts create adjustments for you. This guide covers which form to use, posting accounts and departments, reason codes, approvals, bulk imports after a count, and month-end review.
Before you start
- Features: To count and approve stock in NetSuite, enable Inventory Count at Setup > Company > Enable Features > Items & Inventory, plus Advanced Bin/Numbered Inventory Management for serial or lot items (Oracle NetSuite Help, no date shown).
- Permissions: The worksheet import needs Adjust Inventory Worksheet and Import CSV File. Oracle says only administrators have Adjust Inventory Worksheet by default and no standard role includes it, so add it to a custom role (Oracle NetSuite Help, no date shown).
- Accounts and customization: One or more adjustment expense accounts, confirmed Asset Accounts on your items, and an administrator who can build custom records and workflows for reason codes.
Which adjustment transaction to use
Adjust Inventory is additive: entering 10 raises the count by 10. The worksheet is absolute: entering 10 sets the count to 10 as of the worksheet date (Oracle NetSuite Help, Inventory Adjustments, no date shown). Mixing them up is a common source of errors in forum threads.
| Transaction | Quantity entered as | Use it for | Main restriction |
|---|---|---|---|
| Adjust Inventory | Change (+/-) | Damage, scrap, theft, clerical errors, serial and lot items, FIFO or LIFO items | Keep under 1,000 lines |
| Adjust Inventory Worksheet | New total quantity and value | Resetting average-cost items after a count | No serial, lot or inactive items; FIFO and LIFO history is lost |
| Inventory Count (approved) | Counted quantity against a snapshot | Cycle counts that need supervisor sign-off | Cannot approve a count that leaves zero or negative stock |
| Inventory Worksheet Import | CSV of new totals | Loading a large count for one location | One worksheet per file; no bins |
Moving stock between locations is a transfer, not an adjustment, so use an inventory transfer for that.
Step 1: Set up posting accounts and departments
The inventory side of an adjustment posts to the Asset Account on the item record’s Accounting subtab (Oracle NetSuite Help, no date shown). The other side posts to the Adjustment Account selected on the transaction, which Oracle says is usually an expense account (Oracle NetSuite Help, Entering an Inventory Adjustment, no date shown).
As an illustration, writing off 12 damaged units at an average cost of $8.50 debits the adjustment expense account $102 and credits inventory $102. Check the GL impact of a test transaction in your sandbox before you train users.
Consider separate accounts for shrinkage, damage, obsolescence and count variances so the income statement shows the cause. The account is a header field, so split mixed causes into separate transactions. For counts, set Default Inventory Count Account at Setup > Accounting > Accounting Preferences > Items/Transactions (Oracle NetSuite Help, Setting Up Inventory Count, no date shown).
Department and class sit in the Classification section of both forms. Decide which department owns warehouse losses before go-live, or users will each pick a different one.
Step 2: Build reason codes
The standard Adjust Inventory form has no reason field; Oracle’s field list stops at Reference #, Customer, Adjustment Account, Date, Posting Period, Memo and the line fields. RSM, a NetSuite consulting firm, publishes a pattern for adding one (RSM US, November 12, 2024):
- Agree the codes with supply chain and accounting, with the GL account, department and class for each.
- Create a custom record type (Inventory Adjustment Reason Codes) with List/Record fields for GL Account, Department and Class, making GL Account mandatory.
- Load the codes at Setup > Import/Export > Import CSV Records with Import Type set to Custom Records.
- Create a Reason Code transaction body field pointing to the custom record, apply it to Inventory Adjustments and place it near the top of the form.
- Build a workflow on the Inventory Adjustment subtype that fills in and locks the account, department and class from the selected code.
Users then choose a reason and the accounting follows. Include a code for count variances so count results stay separate from day-to-day write-offs.
Step 3: Decide how adjustments get approved
Oracle’s help for entering an inventory adjustment describes no approval step, and Inventory Adjustment is not among the transactions in the Approval Routing accounting preferences (Oracle NetSuite Help, no date shown) or the record types supported by the SuiteApprovals SuiteApp (Oracle NetSuite Help, no date shown). RSM describes controlling adjustments through role permissions instead (RSM US, January 12, 2018). You have three practical controls:
- Restrict permissions. Give Adjust Inventory and Adjust Inventory Worksheet to a small group, and keep warehouse staff on count entry.
- Route corrections through Inventory Count. A count moves through Open, Started and Completed/Pending Approval. A supervisor approves it at Transactions > Inventory > Enter Inventory Count > List, and approval can create one positive and one negative adjustment (Oracle NetSuite Help, Working with an Inventory Count, no date shown). RSM shows how to add value-based approval tiers with saved searches and a workflow.
- Review after posting. A daily saved search of adjustments above a dollar threshold, emailed to the controller, catches large entries the same day.
Step 4: Enter a single adjustment
- Go to Transactions > Inventory > Adjust Inventory. In OneWorld, select the subsidiary first.
- Choose the Adjustment Account (or reason code), date, posting period, department, class and adjustment location.
- On each line, select the item and location and enter Adjust Qty By. For increases, enter Est. Unit Cost; for decreases NetSuite calculates the cost.
- Enter serial, lot or bin details where needed, check Estimated Total Value and save.
Oracle recommends this form for FIFO and LIFO items because it preserves costing history (Oracle NetSuite Help, no date shown).
Step 5: Reset counts with the worksheet
- Go to Transactions > Inventory > Adjust Inventory Worksheet and select the subsidiary.
- Set the Adjustment Account, date, posting period and Transaction Order. First in Day posts before that day’s other transactions; Last in Day includes them.
- Select the Location and enter New Qty for each counted item. Override New Value only to change valuation.
- Save each page before moving to the next, or entries can be lost.
Estimated Value shows the change in value, not the new total (Oracle NetSuite Help, Creating an Inventory Worksheet, no date shown).
Step 6: Import adjustments in bulk after a count
For a full count, open Transactions > Inventory > Adjust Inventory Worksheet > Import, download the template, upload your file, review the mapping and click Run. No email confirmation is sent, so check the Job Status page (Oracle NetSuite Help, no date shown).
The file needs Adjustment Account, Date and Transaction Order, plus Subsidiary and Location where they apply. Each line needs Item, New Qty and New Value, each item can appear once, and a closed period returns an error (Oracle NetSuite Help, no date shown). Each file creates one worksheet for one combination of class, department, location and subsidiary. Oracle supports up to 1,000 lines but warns that large files can time out and skip records, so split counts by location or item range.
For bins, serial or lot items, use Setup > Import/Export > Import CSV Records with record type Inventory Adjustment instead. In RSM’s single-file layout, each row is one bin, an External ID groups rows into transactions, and bin quantities must add up to Adjust Quantity By with the same sign (RSM US, March 28, 2024). This import takes changes, so calculate variances against the snapshot taken when the count froze.
Step 7: Review adjustments at month end
The Period Close Checklist runs five inventory tasks in order: Resolve Date/Period Mismatches, Review Item Line/Inventory Detail Quantity Mismatch, Review Negative Inventory, Review Inventory Cost Accounting and Review Inventory Activity, which opens the Inventory Activity Detail report (Oracle NetSuite Help, no date shown).
Alongside it, run a saved search of the period’s adjustments grouped by account, reason code, location and creator, and tie the total to each adjustment expense account. Investigate backdated entries, round numbers and entries from people outside the approved group. Our guide to inventory reconciliation covers the full count-to-ledger tie-out.
A backdated worksheet recalculates inventory costing on all items, and Oracle warns that closing the period mid-recalculation can cause costing errors (Oracle NetSuite Help, no date shown).
Common mistakes and how to fix them
- Entering a change on the worksheet. Typing 5 into New Qty sets the balance to 5. Correct it with a new worksheet showing the right total.
- Using the worksheet for FIFO or LIFO items. It averages them and loses cost layers. Use Adjust Inventory.
- Wrong Transaction Order. An end-of-day count posted First in Day double-counts that day’s shipments. Use Last in Day.
- Transactions during a count. Include in-count activity in Count Quantity or use the Recalculate Snapshot setting, or approval can fail (Oracle NetSuite Help, Inventory Count, no date shown).
Limitations of the native feature
Oracle documents no approval step for standalone adjustments, and the form has no reason field. Both forms are limited to about 1,000 lines. The worksheet and its import exclude serial, lot and inactive items, and the import ignores bins. Inventory Count approval is approve-or-reject only, so value-based routing needs a workflow. Under standard costing, value differences also flow through variance accounts; see standard cost vs actual cost.
When companies add a third-party tool
If you count often by bin, keying counts into worksheets or CSV files becomes the slow step, and scanning tools remove it. Oracle’s NetSuite WMS lets supervisors approve or reject cycle counts from the Warehouse role (Oracle NetSuite Help, no date shown), and partner mobile apps do similar work. Compare options in our review of cycle counting software.
How we researched this
We used Oracle’s NetSuite Online Help for each transaction, the import assistant, Inventory Count and the Period Close Checklist, checked on October 17, 2026; those pages show no publication date. We used RSM US articles for reason codes, imports and approval routing; RSM sells NetSuite services. We also read the top search results, mostly forum threads and partner blogs. We have no commercial relationship with Oracle or any partner named here.
Related guides
- Inventory Shrinkage: Formula, Journal Entry and Causes
- Negative Inventory in ERP: Causes, Costing and Fixes
Frequently asked questions
What is the difference between Adjust Inventory and the Adjust Inventory Worksheet?
Adjust Inventory adds or subtracts a quantity. The worksheet sets the balance to a new total as of its date. Use Adjust Inventory for write-offs, serial or lot items and FIFO or LIFO items, and the worksheet for resetting average-cost items after a count.
Which account does a NetSuite inventory adjustment post to?
The inventory side posts to the item’s Asset Account and the other side to the Adjustment Account on the transaction, usually an expense account. Approved counts default to the Default Inventory Count Account.
Can you require approval for inventory adjustments in NetSuite?
Not with a standard feature. Oracle does not list inventory adjustments among the transactions covered by Approval Routing or SuiteApprovals. Companies restrict the permission, route corrections through Inventory Count approval, or build a custom workflow.
How do I add reason codes to NetSuite inventory adjustments?
Create a custom record for the codes with their GL account, department and class, add a Reason Code field to the form, and use a workflow to fill in the account from the selected code.
Why does my backdated adjustment not show in reports yet?
A backdated adjustment can trigger an inventory costing recalculation, which can run immediately or overnight. Affected reports show a message that values might change until it completes. Wait until it finishes before closing the period.
Sources
- Oracle NetSuite Help, Inventory Adjustments, no date shown (checked October 17, 2026)
- Oracle, Entering an Inventory Adjustment, no date shown
- Oracle, Creating an Inventory Worksheet, no date shown
- Oracle, Single Inventory Worksheet Import, no date shown
- Oracle, Using the Inventory Worksheet Import Assistant, no date shown
- Oracle, Requirements for Inventory Worksheet CSV File Data, no date shown
- Oracle, Inventory Count, no date shown
- Oracle, Setting Up Inventory Count, no date shown
- Oracle, Working with an Inventory Count, no date shown
- Oracle, Approving or Rejecting Inventory Counts, no date shown
- Oracle, Changing the COGS and Asset Accounts on Items, no date shown
- Oracle, Inventory Costing Recalculations on Inventory Adjustments, no date shown
- Oracle, Inventory Tasks on the Period Close Checklist, no date shown
- Oracle, Approval Routing Accounting Preferences, no date shown
- Oracle, SuiteApprovals Terminology, no date shown
- RSM US, Inventory adjustment reason codes in NetSuite, November 12, 2024 (RSM sells NetSuite services)
- RSM US, NetSuite inventory adjustment single file imports, March 28, 2024
- RSM US, Inventory count approval routing in NetSuite, January 12, 2018
