Skip to main content

Transfer Order API

Transfer inventory between locations within the same subsidiary.


Endpoints

MethodEndpointDescription
GET/record/v1/transferOrderList transfer orders
GET/record/v1/transferOrder/{id}Get specific transfer order
POST/record/v1/transferOrderCreate transfer order
PATCH/record/v1/transferOrder/{id}Update transfer order
DELETE/record/v1/transferOrder/{id}Delete transfer order

Key Fields

FieldTypeDescriptionRequired
tranDatestringTransfer date (YYYY-MM-DD)Yes
subsidiaryobjectSubsidiary referenceYes (OneWorld)
locationobjectFrom location (source)Yes
transferLocationobjectTo location (destination)Yes
orderStatusobjectTransfer statusRead-only
memostringMemo/notesNo
shipDatestringPlanned ship dateNo
expectedReceiptDatestringExpected receipt dateNo
shipMethodobjectShipping methodNo
firmedbooleanFirmed status for planningNo
itemcollectionItems to transferYes

Example: Create Transfer Order

Request

POST /record/v1/transferOrder
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"tranDate": "2025-12-25",
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"transferLocation": {
"id": "2"
},
"shipDate": "2025-12-26",
"expectedReceiptDate": "2025-12-28",
"memo": "Restock West Coast warehouse for holiday demand",
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 50,
"rate": 25.00,
"amount": 1250.00
},
{
"item": { "id": "790" },
"quantity": 25,
"rate": 40.00,
"amount": 1000.00
}
]
}
}

Response

{
"id": "3001",
"tranId": "TO-10001",
"tranDate": "2025-12-25",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"location": {
"id": "1",
"refName": "East Warehouse"
},
"transferLocation": {
"id": "2",
"refName": "West Warehouse"
},
"orderStatus": {
"id": "PENDING_FULFILLMENT",
"refName": "Pending Fulfillment"
},
"shipDate": "2025-12-26",
"expectedReceiptDate": "2025-12-28",
"memo": "Restock West Coast warehouse for holiday demand",
"total": 2250.00,
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/transferOrder/3001"
}
]
}

Example: Update Transfer Order

Request

PATCH /record/v1/transferOrder/3001
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"expectedReceiptDate": "2025-12-30",
"memo": "Restock West Coast warehouse - delivery delayed due to weather",
"shipMethod": {
"id": "456"
}
}

Response

{
"id": "3001",
"tranId": "TO-10001",
"expectedReceiptDate": "2025-12-30",
"memo": "Restock West Coast warehouse - delivery delayed due to weather",
"shipMethod": {
"id": "456",
"refName": "Ground Freight"
},
"lastModifiedDate": "2025-12-25T16:20:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/transferOrder/3001"
}
]
}

Sublists

Item Sublist

FieldTypeDescriptionRequired
itemobjectItem referenceYes
quantitynumberQuantity to transferYes
ratenumberTransfer cost per unitNo
amountnumberTotal line amount (quantity × rate)No
descriptionstringLine descriptionNo
expectedReceiptDatestringLine-level expected receipt dateNo
quantityCommittednumberQuantity fulfilledRead-only
quantityReceivednumberQuantity receivedRead-only
isClosedbooleanLine closed statusNo

Query Filters

Find by Location

GET /record/v1/transferOrder?q=location='1'

Find by Destination Location

GET /record/v1/transferOrder?q=transferLocation='2'

Find by Date Range

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

Find by Status

GET /record/v1/transferOrder?q=orderStatus='PENDING_FULFILLMENT'

Find Pending Fulfillment

GET /record/v1/transferOrder?q=orderStatus IN ('PENDING_FULFILLMENT','PENDING_APPROVAL')

Find by Item

GET /record/v1/transferOrder?q=item.item='789'
GET /record/v1/transferOrder/3001?expandSubResources=true

Important Notes

Transfer Order Statuses

StatusDescriptionNext Action
PENDING_APPROVALAwaiting approvalApprove the order
PENDING_FULFILLMENTApproved, ready to shipCreate item fulfillment
PARTIALLY_FULFILLEDSome items shippedCreate fulfillment for remaining items
PENDING_RECEIPTShipped, awaiting receiptCreate item receipt
PARTIALLY_RECEIVEDPartially receivedCreate receipt for remaining items
RECEIVEDFully receivedComplete
CLOSEDManually closedNone - closed
CANCELLEDCancelledNone - cancelled

Transfer Order Workflow

Standard Transfer Process:

  1. Create Transfer Order - Specifies what to transfer and where
  2. Approval (if required) - Order moves to Pending Fulfillment
  3. Create Item Fulfillment - Ship from source location (reduces inventory at source)
  4. Create Item Receipt - Receive at destination location (increases inventory at destination)

API Workflow Example:

1. POST /transferOrder → Creates order (PENDING_FULFILLMENT)
2. POST /itemFulfillment (createdFrom: transferOrder) → Ships items
3. POST /itemReceipt (createdFrom: transferOrder) → Receives items

Inventory Impact

At Fulfillment:

  • Inventory reduced at source location (location)
  • Inventory in "In Transit" state

At Receipt:

  • Inventory increased at destination location (transferLocation)
  • Inventory moved from "In Transit" to available

Transfer Costing

Rate Field:

  • Optional transfer cost per unit
  • Can be different from standard cost
  • Used for intercompany pricing or transfer fees
  • If omitted, uses item's standard cost

Example with Transfer Pricing:

{
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 100,
"rate": 30.00,
"amount": 3000.00
}
]
}
}

Same-Subsidiary Requirement

  • Source and destination locations must be in the same subsidiary
  • For cross-subsidiary transfers, use Intercompany Transfer Order
  • Validates subsidiary assignment on locations

Partial Fulfillment and Receipt

Fulfill Partial Quantities:

  • Create item fulfillment for available items
  • Order status becomes "Partially Fulfilled"
  • Create additional fulfillments for remaining items

Receive Partial Quantities:

  • Create item receipt for delivered items
  • Order status becomes "Partially Received"
  • Create additional receipts as items arrive

Firmed Orders

Set firmed: true for supply planning:

{
"firmed": true,
"memo": "Firmed for production planning - do not modify"
}

Firmed orders:

  • Locked for planning purposes
  • Visible to supply planning tools
  • Requires special permission to modify

Line-Level Expected Dates

Override expected receipt date per line:

{
"item": {
"items": [
{
"item": { "id": "789" },
"quantity": 50,
"expectedReceiptDate": "2025-12-28"
},
{
"item": { "id": "790" },
"quantity": 25,
"expectedReceiptDate": "2025-12-30"
}
]
}
}

Closing Transfer Orders

Manual Close:

{
"orderStatus": {
"id": "CLOSED"
}
}
  • Use when not fully fulfilling/receiving
  • Cancels remaining quantities
  • Cannot reopen once closed

Permissions Required

  • Create: Transfer Order > Create permission
  • Edit: Transfer Order > Edit permission
  • View: Transfer Order > View permission
  • Delete: Transfer Order > Delete permission
  • Approve: Transfer Order > Approve permission (if approval required)

Deletion Constraints

  • Can only delete if not fulfilled or received
  • Cannot delete if fulfillments or receipts exist
  • Delete related fulfillments/receipts first, or close the order

Best Practices

  1. Accurate Dates: Set realistic ship and expected receipt dates
  2. Complete Memos: Document reason for transfer
  3. Verify Availability: Check inventory at source location before creating
  4. Track In-Transit: Monitor time between fulfillment and receipt
  5. Close Unused Orders: Close or cancel orders that won't be completed
  6. Transfer Pricing: Use appropriate transfer costs for financial accuracy

See Also