Fulfillment Request API
Create fulfillment requests for third-party logistics (3PL) or warehouse management systems.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/fulfillmentRequest | List fulfillment requests |
GET | /record/v1/fulfillmentRequest/{id} | Get specific request |
POST | /record/v1/fulfillmentRequest | Create request |
PATCH | /record/v1/fulfillmentRequest/{id} | Update request |
DELETE | /record/v1/fulfillmentRequest/{id} | Delete request |
Key Fields
| Field | Type | Description | Required |
|---|---|---|---|
createdFrom | object | Sales order or transfer order reference | Yes |
requestDate | string | Request date (YYYY-MM-DD) | Yes |
shipDate | string | Requested ship date (YYYY-MM-DD) | No |
status | object | Request status (system managed) | Read-only |
shipMethod | object | Requested shipping method | No |
memo | string | Special instructions or notes | No |
subsidiary | object | Subsidiary reference | Yes (OneWorld) |
location | object | Fulfillment location | No |
shippingAddress | object | Ship to address | No |
item | collection | Items to fulfill | Yes |
Example: Create Fulfillment Request
Request
POST /record/v1/fulfillmentRequest
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"createdFrom": {
"id": "1001"
},
"requestDate": "2025-12-25",
"shipDate": "2025-12-26",
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"shipMethod": {
"id": "123"
},
"memo": "Rush order - ship express. Customer requires delivery by Dec 27.",
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 10,
"itemIsFulfilled": true
},
{
"item": { "id": "790" },
"quantity": 5,
"itemIsFulfilled": true
}
]
}
}
Response
{
"id": "6001",
"tranId": "FR-10001",
"createdFrom": {
"id": "1001",
"refName": "SO-5001"
},
"requestDate": "2025-12-25",
"shipDate": "2025-12-26",
"status": {
"id": "PENDING",
"refName": "Pending"
},
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"location": {
"id": "1",
"refName": "Main Warehouse"
},
"shipMethod": {
"id": "123",
"refName": "UPS Next Day Air"
},
"memo": "Rush order - ship express. Customer requires delivery by Dec 27.",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/fulfillmentRequest/6001"
}
]
}
Example: Update Fulfillment Request
Request
PATCH /record/v1/fulfillmentRequest/6001
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"shipDate": "2025-12-27",
"memo": "Ship date updated per customer request. No longer rush."
}
Response
{
"id": "6001",
"tranId": "FR-10001",
"shipDate": "2025-12-27",
"memo": "Ship date updated per customer request. No longer rush.",
"status": {
"id": "PENDING",
"refName": "Pending"
},
"lastModifiedDate": "2025-12-25T15:45:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/fulfillmentRequest/6001"
}
]
}
Sublists
Item Sublist
| Field | Type | Description | Required |
|---|---|---|---|
item | object | Item reference | Yes |
quantity | number | Quantity requested | Yes |
itemIsFulfilled | boolean | Mark for fulfillment | Yes |
location | object | Fulfillment location | No |
description | string | Item description | Read-only |
onHand | number | Quantity on hand | Read-only |
Query Filters
Find by Sales Order
GET /record/v1/fulfillmentRequest?q=createdFrom='1001'
Find by Request Date Range
GET /record/v1/fulfillmentRequest?q=requestDate BETWEEN '2025-12-01' AND '2025-12-31'
Find Pending Requests
GET /record/v1/fulfillmentRequest?q=status='PENDING'
Find by Ship Date
GET /record/v1/fulfillmentRequest?q=shipDate='2025-12-26'
Find by Location
GET /record/v1/fulfillmentRequest?q=location='1'
Expand Related Records
GET /record/v1/fulfillmentRequest/6001?expandSubResources=true
Important Notes
Fulfillment Request Statuses
| Status | Description | Typical Use |
|---|---|---|
PENDING | Awaiting fulfillment | Initial state when created |
IN_PROGRESS | Being processed | 3PL has started picking/packing |
FULFILLED | Completed | Item fulfillment created |
CANCELLED | Cancelled | Request cancelled |
Workflow Integration
Standard Fulfillment Request Flow:
- Sales order or transfer order is approved
- Create fulfillment request via API
- 3PL/WMS system retrieves pending requests
- 3PL processes the request (picks, packs items)
- 3PL creates item fulfillment via API when shipped
- Fulfillment request status updates to "Fulfilled"
API Integration Pattern:
NetSuite → Fulfillment Request → 3PL System
3PL System → Item Fulfillment → NetSuite
Use Cases
Third-Party Logistics (3PL)
- Send fulfillment requests to external warehouses
- 3PL systems monitor for new requests
- 3PL creates fulfillments when items ship
Warehouse Management Systems (WMS)
- Push pick/pack instructions to WMS
- WMS uses request details for picking
- WMS confirms shipment via item fulfillment
Multi-Location Fulfillment
- Route orders to appropriate fulfillment centers
- Specify location in the request
- 3PL at each location processes their requests
Creating from Different Source Documents
From Sales Order:
{
"createdFrom": {
"id": "1001",
"type": "salesOrder"
}
}
From Transfer Order:
{
"createdFrom": {
"id": "2001",
"type": "transferOrder"
}
}
Shipping Instructions
Use the memo field for special instructions:
{
"memo": "SPECIAL HANDLING: Fragile items - use extra padding. Signature required on delivery."
}
Status Management
- Status is typically system-managed based on fulfillment state
- Status automatically updates when item fulfillment is created
- Cannot manually set status in most cases (read-only)
- Status changes trigger workflow events for integration
Permissions Required
- Create: Fulfillment Request > Create permission
- Edit: Fulfillment Request > Edit permission
- View: Fulfillment Request > View permission
- Delete: Fulfillment Request > Delete permission
Integration Best Practices
- Poll for New Requests: 3PL systems should regularly poll for pending requests
- Update Status: Update request status as processing progresses
- Error Handling: Handle cases where items are out of stock
- Tracking Updates: Include tracking info when creating item fulfillment
- Batch Processing: Retrieve and process multiple requests in batches
Limitations
- Cannot create fulfillment request from partially fulfilled orders (use remaining quantities)
- Must have sufficient permissions on source transaction
- Items must be available at specified location
- Some fields may be locked based on source document settings
See Also
- Sales Order - Source orders for requests
- Item Fulfillment - Actual shipments created by 3PL
- Transfer Order - Transfer fulfillment requests
- Location - Fulfillment locations