Item Fulfillment API
Create item fulfillments to ship items from sales orders.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/itemFulfillment | List item fulfillments |
GET | /record/v1/itemFulfillment/{id} | Get specific fulfillment |
POST | /record/v1/itemFulfillment | Create fulfillment |
PATCH | /record/v1/itemFulfillment/{id} | Update fulfillment |
DELETE | /record/v1/itemFulfillment/{id} | Delete fulfillment |
Key Fields
| Field | Type | Description | Required |
|---|---|---|---|
createdFrom | object | Sales order reference | Yes |
tranDate | string | Fulfillment date (YYYY-MM-DD) | Yes |
subsidiary | object | Subsidiary reference | Yes (OneWorld) |
location | object | Ship from location | No |
shipMethod | object | Shipping method reference | No |
shipStatus | object | Shipping status (PICKED, PACKED, SHIPPED) | No |
trackingNumbers | string | Tracking numbers (comma-separated for multiple) | No |
memo | string | Memo/notes | No |
shipDate | string | Ship date (YYYY-MM-DD) | No |
shipCarrier | object | Shipping carrier reference | No |
shipAddressList | object | Ship to address reference | No |
item | collection | Line items to fulfill | Yes |
Example: Create Item Fulfillment
Request
POST /record/v1/itemFulfillment
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"createdFrom": {
"id": "1001"
},
"tranDate": "2025-12-25",
"shipDate": "2025-12-25",
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"shipMethod": {
"id": "123"
},
"shipStatus": {
"id": "SHIPPED"
},
"shipCarrier": {
"id": "ups"
},
"trackingNumbers": "1Z999AA10123456784",
"memo": "Rush order - expedited shipping",
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 10,
"itemIsFulfilled": true,
"location": { "id": "1" }
},
{
"item": { "id": "790" },
"quantity": 5,
"itemIsFulfilled": true,
"location": { "id": "1" }
}
]
}
}
Response
{
"id": "5001",
"tranId": "IF-10001",
"createdFrom": {
"id": "1001",
"refName": "SO-5001"
},
"tranDate": "2025-12-25",
"shipDate": "2025-12-25",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"location": {
"id": "1",
"refName": "Main Warehouse"
},
"shipMethod": {
"id": "123",
"refName": "UPS Ground"
},
"shipStatus": {
"id": "SHIPPED",
"refName": "Shipped"
},
"trackingNumbers": "1Z999AA10123456784",
"status": "Shipped",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/itemFulfillment/5001"
}
]
}
Example: Update Item Fulfillment
Request
PATCH /record/v1/itemFulfillment/5001
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"trackingNumbers": "1Z999AA10123456784,1Z999AA10123456785",
"memo": "Updated with additional tracking number",
"shipStatus": {
"id": "SHIPPED"
}
}
Response
{
"id": "5001",
"tranId": "IF-10001",
"trackingNumbers": "1Z999AA10123456784,1Z999AA10123456785",
"memo": "Updated with additional tracking number",
"shipStatus": {
"id": "SHIPPED",
"refName": "Shipped"
},
"lastModifiedDate": "2025-12-25T14:30:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/itemFulfillment/5001"
}
]
}
Sublists
Item Sublist
| Field | Type | Description | Required |
|---|---|---|---|
item | object | Item reference | Yes |
quantity | number | Quantity ordered | Read-only |
quantityRemaining | number | Quantity not yet fulfilled | Read-only |
itemIsFulfilled | boolean | Check to fulfill this line | Yes |
location | object | Fulfillment location | No |
binNumbers | string | Bin numbers for picking | No |
serialNumbers | string | Serial numbers (for serialized items) | Conditional |
inventoryDetail | object | Lot/serial number details | Conditional |
Query Filters
Find by Sales Order
GET /record/v1/itemFulfillment?q=createdFrom='1001'
Find by Date Range
GET /record/v1/itemFulfillment?q=tranDate BETWEEN '2025-12-01' AND '2025-12-31'
Find by Ship Status
GET /record/v1/itemFulfillment?q=shipStatus='SHIPPED'
Find by Tracking Number
GET /record/v1/itemFulfillment?q=trackingNumbers LIKE '%1Z999AA%'
Find by Customer (via Sales Order)
GET /record/v1/itemFulfillment?q=createdFrom.entity='456'
Expand Related Records
GET /record/v1/itemFulfillment/5001?expandSubResources=true
Important Notes
Inventory Impact
- Creating an item fulfillment reduces inventory on-hand quantities at the specified location
- Inventory is reduced only for lines where
itemIsFulfilledis set totrue - Bin-tracked items require
binNumbersto be specified - Serialized items require serial numbers via
serialNumbersorinventoryDetail - Lot-numbered items require lot numbers via
inventoryDetail
Shipping Statuses
| Status | Description | Use Case |
|---|---|---|
PICKED | Items picked from inventory | Picking complete, not yet packed |
PACKED | Items packed for shipping | Ready to ship |
SHIPPED | Items shipped to customer | Shipped with tracking |
Fulfillment Workflow
- Sales order is approved and awaiting fulfillment
- Create item fulfillment from the sales order
- Select items to fulfill (
itemIsFulfilled: true) - Specify shipping method and tracking information
- Set appropriate ship status
- Item fulfillment reduces inventory and updates sales order status
Partial Fulfillments
- You can fulfill only some items or quantities from a sales order
- Set
itemIsFulfilled: trueonly for lines you want to fulfill - Remaining items can be fulfilled in subsequent item fulfillments
- Sales order status will update to "Partially Fulfilled" until complete
Multi-Location Fulfillment
- Items can be fulfilled from different locations
- Specify
locationat the line level to override the header location - Each line reduces inventory at its specified location
Serial/Lot Number Tracking
For serialized items:
{
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 2,
"itemIsFulfilled": true,
"serialNumbers": "SN001,SN002"
}
]
}
}
For lot-numbered items:
{
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 10,
"itemIsFulfilled": true,
"inventoryDetail": {
"inventoryAssignment": {
"items": [
{
"issueInventoryNumber": { "id": "LOT-12345" },
"quantity": 10
}
]
}
}
}
]
}
}
Permissions Required
- Create: Item Fulfillment > Create permission
- Edit: Item Fulfillment > Edit permission
- View: Item Fulfillment > View permission
- Delete: Item Fulfillment > Delete permission
Deletion Constraints
- Item fulfillments can only be deleted if they haven't been invoiced
- Deleting restores inventory quantities
- Consider voiding instead of deleting for audit trail purposes
See Also
- Sales Order - Source orders for fulfillment
- Invoice - Bill shipped orders
- Transfer Order - Transfer between locations
- Fulfillment Request - Request fulfillment from 3PL
- Return Authorization - Process returns