Transfer Order API
Transfer inventory between locations within the same subsidiary.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/transferOrder | List transfer orders |
GET | /record/v1/transferOrder/{id} | Get specific transfer order |
POST | /record/v1/transferOrder | Create transfer order |
PATCH | /record/v1/transferOrder/{id} | Update transfer order |
DELETE | /record/v1/transferOrder/{id} | Delete transfer order |
Key Fields
| Field | Type | Description | Required |
|---|---|---|---|
tranDate | string | Transfer date (YYYY-MM-DD) | Yes |
subsidiary | object | Subsidiary reference | Yes (OneWorld) |
location | object | From location (source) | Yes |
transferLocation | object | To location (destination) | Yes |
orderStatus | object | Transfer status | Read-only |
memo | string | Memo/notes | No |
shipDate | string | Planned ship date | No |
expectedReceiptDate | string | Expected receipt date | No |
shipMethod | object | Shipping method | No |
firmed | boolean | Firmed status for planning | No |
item | collection | Items to transfer | Yes |
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
| Field | Type | Description | Required |
|---|---|---|---|
item | object | Item reference | Yes |
quantity | number | Quantity to transfer | Yes |
rate | number | Transfer cost per unit | No |
amount | number | Total line amount (quantity × rate) | No |
description | string | Line description | No |
expectedReceiptDate | string | Line-level expected receipt date | No |
quantityCommitted | number | Quantity fulfilled | Read-only |
quantityReceived | number | Quantity received | Read-only |
isClosed | boolean | Line closed status | No |
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'
Expand Related Records
GET /record/v1/transferOrder/3001?expandSubResources=true
Important Notes
Transfer Order Statuses
| Status | Description | Next Action |
|---|---|---|
PENDING_APPROVAL | Awaiting approval | Approve the order |
PENDING_FULFILLMENT | Approved, ready to ship | Create item fulfillment |
PARTIALLY_FULFILLED | Some items shipped | Create fulfillment for remaining items |
PENDING_RECEIPT | Shipped, awaiting receipt | Create item receipt |
PARTIALLY_RECEIVED | Partially received | Create receipt for remaining items |
RECEIVED | Fully received | Complete |
CLOSED | Manually closed | None - closed |
CANCELLED | Cancelled | None - cancelled |
Transfer Order Workflow
Standard Transfer Process:
- Create Transfer Order - Specifies what to transfer and where
- Approval (if required) - Order moves to Pending Fulfillment
- Create Item Fulfillment - Ship from source location (reduces inventory at source)
- 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
- Accurate Dates: Set realistic ship and expected receipt dates
- Complete Memos: Document reason for transfer
- Verify Availability: Check inventory at source location before creating
- Track In-Transit: Monitor time between fulfillment and receipt
- Close Unused Orders: Close or cancel orders that won't be completed
- Transfer Pricing: Use appropriate transfer costs for financial accuracy
See Also
- Item Fulfillment - Ship transfer orders
- Item Receipt - Receive transfers
- Intercompany Transfer Order - Cross-subsidiary transfers
- Location - Manage locations