Skip to main content

Fulfillment Request API

Create fulfillment requests for third-party logistics (3PL) or warehouse management systems.


Endpoints

MethodEndpointDescription
GET/record/v1/fulfillmentRequestList fulfillment requests
GET/record/v1/fulfillmentRequest/{id}Get specific request
POST/record/v1/fulfillmentRequestCreate request
PATCH/record/v1/fulfillmentRequest/{id}Update request
DELETE/record/v1/fulfillmentRequest/{id}Delete request

Key Fields

FieldTypeDescriptionRequired
createdFromobjectSales order or transfer order referenceYes
requestDatestringRequest date (YYYY-MM-DD)Yes
shipDatestringRequested ship date (YYYY-MM-DD)No
statusobjectRequest status (system managed)Read-only
shipMethodobjectRequested shipping methodNo
memostringSpecial instructions or notesNo
subsidiaryobjectSubsidiary referenceYes (OneWorld)
locationobjectFulfillment locationNo
shippingAddressobjectShip to addressNo
itemcollectionItems to fulfillYes

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

FieldTypeDescriptionRequired
itemobjectItem referenceYes
quantitynumberQuantity requestedYes
itemIsFulfilledbooleanMark for fulfillmentYes
locationobjectFulfillment locationNo
descriptionstringItem descriptionRead-only
onHandnumberQuantity on handRead-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'
GET /record/v1/fulfillmentRequest/6001?expandSubResources=true

Important Notes

Fulfillment Request Statuses

StatusDescriptionTypical Use
PENDINGAwaiting fulfillmentInitial state when created
IN_PROGRESSBeing processed3PL has started picking/packing
FULFILLEDCompletedItem fulfillment created
CANCELLEDCancelledRequest cancelled

Workflow Integration

Standard Fulfillment Request Flow:

  1. Sales order or transfer order is approved
  2. Create fulfillment request via API
  3. 3PL/WMS system retrieves pending requests
  4. 3PL processes the request (picks, packs items)
  5. 3PL creates item fulfillment via API when shipped
  6. 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

  1. Poll for New Requests: 3PL systems should regularly poll for pending requests
  2. Update Status: Update request status as processing progresses
  3. Error Handling: Handle cases where items are out of stock
  4. Tracking Updates: Include tracking info when creating item fulfillment
  5. 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