Skip to main content

Inventory Adjustment API

Adjust inventory quantities for cycle counts, damage, shrinkage, or other inventory corrections.

Endpoints

MethodEndpointDescription
GET/record/v1/inventoryAdjustmentRetrieve list of inventory adjustments
GET/record/v1/inventoryAdjustment/{id}Retrieve a specific inventory adjustment
POST/record/v1/inventoryAdjustmentCreate a new inventory adjustment
PATCH/record/v1/inventoryAdjustment/{id}Update an existing inventory adjustment
DELETE/record/v1/inventoryAdjustment/{id}Delete an inventory adjustment

Key Fields

Header Fields

FieldTypeDescriptionRequired
tranDateDateTransaction dateYes
subsidiaryObjectSubsidiary reference {"id": "1"}Yes
accountObjectAdjustment account referenceYes
customerObjectCustomer reference (if adjustment relates to customer)No
departmentObjectDepartment referenceNo
classObjectClass referenceNo
locationObjectPrimary location referenceNo
memoStringTransaction memo/descriptionNo
tranIdStringTransaction number (auto-generated if not provided)No
estimatedTotalValueNumberTotal estimated value of adjustmentNo

Line Item Fields (item.items)

FieldTypeDescriptionRequired
itemObjectItem reference {"id": "789"}Yes
adjustQtyByNumberQuantity to adjust (positive or negative)Yes
locationObjectLocation reference for this lineYes
unitCostNumberUnit cost for adjustmentNo
binNumbersObjectBin number assignments (if bins enabled)No
inventoryDetailObjectLot/serial number detailsNo
memoStringLine-level memoNo

Example: Create Inventory Adjustment

Request

POST /record/v1/inventoryAdjustment
Content-Type: application/json
{
"tranDate": "2025-12-25",
"subsidiary": {"id": "1"},
"account": {"id": "540"},
"department": {"id": "10"},
"class": {"id": "5"},
"memo": "Cycle count adjustment - Warehouse A",
"item": {
"items": [
{
"item": {"id": "789"},
"adjustQtyBy": 10,
"location": {"id": "1"},
"unitCost": 25.00,
"memo": "Found during cycle count"
},
{
"item": {"id": "790"},
"adjustQtyBy": -5,
"location": {"id": "1"},
"unitCost": 15.50,
"memo": "Damaged inventory write-off"
}
]
}
}

Response

{
"id": "12345",
"tranDate": "2025-12-25",
"tranId": "INVADJ-2025-001",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"account": {
"id": "540",
"refName": "Inventory Adjustments"
},
"department": {
"id": "10",
"refName": "Operations"
},
"class": {
"id": "5",
"refName": "Warehouse A"
},
"memo": "Cycle count adjustment - Warehouse A",
"estimatedTotalValue": 172.50,
"item": {
"items": [
{
"item": {
"id": "789",
"refName": "Widget A"
},
"adjustQtyBy": 10,
"location": {
"id": "1",
"refName": "Main Warehouse"
},
"unitCost": 25.00,
"amount": 250.00,
"memo": "Found during cycle count"
},
{
"item": {
"id": "790",
"refName": "Widget B"
},
"adjustQtyBy": -5,
"location": {
"id": "1",
"refName": "Main Warehouse"
},
"unitCost": 15.50,
"amount": -77.50,
"memo": "Damaged inventory write-off"
}
]
},
"links": [
{
"rel": "self",
"href": "https://{{account}}.suitetalk.api.netsuite.com/services/rest/record/v1/inventoryAdjustment/12345"
}
]
}

Example: Update Inventory Adjustment

Request

PATCH /record/v1/inventoryAdjustment/12345
Content-Type: application/json
{
"memo": "Cycle count adjustment - Warehouse A - Updated",
"item": {
"items": [
{
"item": {"id": "791"},
"adjustQtyBy": 3,
"location": {"id": "1"},
"unitCost": 12.00,
"memo": "Additional adjustment found"
}
]
}
}

Response

{
"id": "12345",
"memo": "Cycle count adjustment - Warehouse A - Updated",
"estimatedTotalValue": 208.50,
"links": [
{
"rel": "self",
"href": "https://{{account}}.suitetalk.api.netsuite.com/services/rest/record/v1/inventoryAdjustment/12345"
}
]
}

Sublists/Line Items

Item Sublist Structure

The item.items array contains inventory adjustment line items. Each line represents an adjustment to a specific item at a specific location.

{
"item": {
"items": [
{
"item": {"id": "789"},
"adjustQtyBy": 10,
"location": {"id": "1"},
"unitCost": 25.00,
"memo": "Line memo"
}
]
}
}

Bin Numbers (if Advanced Bin Management enabled)

{
"item": {
"items": [
{
"item": {"id": "789"},
"adjustQtyBy": 10,
"location": {"id": "1"},
"binNumbers": {
"items": [
{
"binNumber": {"id": "10"},
"quantity": 10
}
]
}
}
]
}
}

Inventory Detail (Lot/Serial Numbers)

{
"item": {
"items": [
{
"item": {"id": "789"},
"adjustQtyBy": 10,
"location": {"id": "1"},
"inventoryDetail": {
"items": [
{
"inventoryNumber": {"id": "500"},
"quantity": 5
},
{
"inventoryNumber": {"id": "501"},
"quantity": 5
}
]
}
}
]
}
}

Query Filters

Filter by Date Range

GET /record/v1/inventoryAdjustment?q=tranDate BETWEEN '2025-01-01' AND '2025-12-31'

Filter by Subsidiary

GET /record/v1/inventoryAdjustment?q=subsidiary.id = 1

Filter by Account

GET /record/v1/inventoryAdjustment?q=account.id = 540

Filter by Transaction ID

GET /record/v1/inventoryAdjustment?q=tranId = 'INVADJ-2025-001'

Filter by Department and Class

GET /record/v1/inventoryAdjustment?q=department.id = 10 AND class.id = 5

Complex Query with Sorting

GET /record/v1/inventoryAdjustment?q=tranDate >= '2025-01-01' AND subsidiary.id = 1&orderby=tranDate DESC&limit=50

Important Notes

Accounting Impact

  • Positive Adjustments: Debit Inventory Asset, Credit Adjustment Account
  • Negative Adjustments: Debit Adjustment Account, Credit Inventory Asset
  • Ensure the adjustment account is properly configured for inventory adjustments

Inventory Tracking

  • For serialized items, you must provide serial numbers via inventoryDetail
  • For lot-tracked items, lot numbers must be specified via inventoryDetail
  • Bin management requires bin assignments via binNumbers sublist

Permissions Required

  • Create: Transactions > Inventory Adjustment > Create
  • Edit: Transactions > Inventory Adjustment > Edit
  • Delete: Transactions > Inventory Adjustment > Delete
  • View: Transactions > Inventory Adjustment > View

Best Practices

  1. Always verify quantities before creating adjustments to prevent unintended inventory changes
  2. Use descriptive memos to document the reason for each adjustment
  3. Review accounting impact to ensure proper GL posting
  4. Batch similar adjustments when possible for easier reconciliation
  5. Set up approval workflows for large-value adjustments
  6. Regular cycle counts help identify discrepancies early

Limitations

  • Cannot adjust inventory for items with pending transactions
  • Some item types (e.g., non-inventory items) cannot be adjusted
  • Closed accounting periods may restrict adjustments
  • Negative inventory may be prevented based on account settings

Data Validation

  • adjustQtyBy cannot be zero
  • Location must be valid for the item
  • Unit cost should match or be close to the item's standard cost
  • Transaction date must be within an open accounting period