Inventory Adjustment API
Adjust inventory quantities for cycle counts, damage, shrinkage, or other inventory corrections.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /record/v1/inventoryAdjustment | Retrieve list of inventory adjustments |
| GET | /record/v1/inventoryAdjustment/{id} | Retrieve a specific inventory adjustment |
| POST | /record/v1/inventoryAdjustment | Create 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
| Field | Type | Description | Required |
|---|---|---|---|
tranDate | Date | Transaction date | Yes |
subsidiary | Object | Subsidiary reference {"id": "1"} | Yes |
account | Object | Adjustment account reference | Yes |
customer | Object | Customer reference (if adjustment relates to customer) | No |
department | Object | Department reference | No |
class | Object | Class reference | No |
location | Object | Primary location reference | No |
memo | String | Transaction memo/description | No |
tranId | String | Transaction number (auto-generated if not provided) | No |
estimatedTotalValue | Number | Total estimated value of adjustment | No |
Line Item Fields (item.items)
| Field | Type | Description | Required |
|---|---|---|---|
item | Object | Item reference {"id": "789"} | Yes |
adjustQtyBy | Number | Quantity to adjust (positive or negative) | Yes |
location | Object | Location reference for this line | Yes |
unitCost | Number | Unit cost for adjustment | No |
binNumbers | Object | Bin number assignments (if bins enabled) | No |
inventoryDetail | Object | Lot/serial number details | No |
memo | String | Line-level memo | No |
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
binNumberssublist
Permissions Required
- Create: Transactions > Inventory Adjustment > Create
- Edit: Transactions > Inventory Adjustment > Edit
- Delete: Transactions > Inventory Adjustment > Delete
- View: Transactions > Inventory Adjustment > View
Best Practices
- Always verify quantities before creating adjustments to prevent unintended inventory changes
- Use descriptive memos to document the reason for each adjustment
- Review accounting impact to ensure proper GL posting
- Batch similar adjustments when possible for easier reconciliation
- Set up approval workflows for large-value adjustments
- 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
adjustQtyBycannot 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