Retrieve a warehouse transfer order
Operation ID: getTransferOrder
Group: Inventory › Warehouse Transfer Orders
Open in the interactive reference
GET /inventory/warehouse-transfer-orders/{id}
Read-only: Reads and returns; changes nothing.
Retrieves a warehouse transfer order, with its lines. Each line includes its source warehouse, status, and open and processed quantities. The fields are the same as on POST inventory/warehouse-transfer-orders/search. The collection GET inventory/warehouse-transfer-orders returns them without the lines.
Check the lines before converting the order. A line at 'NEEDS_SOURCE', or without a locationId, has no warehouse to draw from, and POST inventory/warehouse-transfer-orders/:id/commit fails while any such line remains.
To look an order up by documentNumber, use POST inventory/warehouse-transfer-orders/search.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
id |
path | string | yes | The unique identifier of the transfer order you want to retrieve. |
Response
200 Success
Under data (getTransferOrderOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the transfer order. Example: "7c1e5a90-3d24-4f68-b0a7-91e5d2c46f38". |
documentNumber |
string | no | The transfer order's number, for example 'WTO-1043'. Example: "WTO-1043". |
documentStatus |
string | yes | The status of the transfer order, computed from the lines and set by no endpoint directly. Possible values: 'DRAFT', 'IN_TRANSFER', 'PARTIALLY_PROCESSED', 'PROCESSED'. 'DRAFT' while the order is being written, 'IN_TRANSFER' while a transfer created from it has yet to commit, 'PARTIALLY_PROCESSED' once a transfer has moved part of what was asked for and a remainder is still open, and 'PROCESSED' once nothing is open. Example: "DRAFT". |
documentDate |
date | no | The date the transfer order is dated. Format YYYY-MM-DD. Example: "2026-08-18". |
referenceNumber |
string | no | Your own reference on the transfer order. |
entityId |
string | no | The legal entity the transfer order belongs to. See id on GET base/entities. Example: "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43". |
entityName |
string | no | The name of that legal entity. Example: "Acme Netherlands B.V.". |
locationId |
string | no | The warehouse the goods leave, where the order names one for the whole document. A line may name its own. See id on GET inventory/warehouses/:id. Example: "b6f0d2a4-77c1-4e39-8a52-0c4e1f9b73d5". |
locationCode |
string | no | The code of that warehouse. Example: "WH-CENTRAL". |
locationName |
string | no | The name of that warehouse. |
targetLocationId |
string | no | The warehouse the goods go to. See id on GET inventory/warehouses/:id. Example: "e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1". |
targetLocationCode |
string | no | The code of that warehouse. Example: "WH-NORTH". |
targetLocationName |
string | no | The name of that warehouse. |
notes |
string | no | Free text on the document. |
lineCount |
number | no | The number of lines on the transfer order. Example: 1. |
openLineCount |
number | no | How many lines still have quantity left to transfer. Zero means everything has been taken. Example: 1. |
createdDate |
date-time | no | The date and time the transfer order was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
lastModifiedDate |
date-time | no | The date and time the transfer order record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-18T09:14:22.517Z". |
lines |
array<object> | yes | The lines of the transfer order. Absent from the collection GET inventory/warehouse-transfer-orders, which returns lineCount instead. Example: [{"id":"2d5b81f7-4c93-4a16-8e70-5f1c9d3a82b4","itemId":"517a93e4-cbb4-4571-9e3d-2343e56cfd84","itemCode":"WIDGET-01","locationId":"b6f0d2a4-77c1-4e39-8a52-0c4e1f9b73d5","targetLocationId":"e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1","unitCode":"EA","quantity":"40","inventoryQuantity":"40","openQuantity":"40","status":"DRAFT"}]. |
lines[].id |
string | yes | The unique identifier for the line. updateLines and deleteLines address a line by it. |
lines[].itemId |
string | no | The item to move. See id on GET inventory/items/:id. |
lines[].itemCode |
string | no | The code of that item. |
lines[].itemName |
string | no | The name of that item. |
lines[].locationId |
string | no | The warehouse this line draws from. See id on GET inventory/warehouses/:id. Absent while no source warehouse has been resolved, and such a line blocks the conversion. |
lines[].locationCode |
string | no | The code of that warehouse. |
lines[].locationName |
string | no | The name of that warehouse. |
lines[].targetLocationId |
string | no | The warehouse this line delivers to. See id on GET inventory/warehouses/:id. |
lines[].targetLocationCode |
string | no | The code of that warehouse. |
lines[].targetLocationName |
string | no | The name of that warehouse. |
lines[].unitId |
string | no | The unit the quantity is in. See id on GET inventory/unit-of-measures/:id. |
lines[].unitCode |
string | no | The code of that unit. |
lines[].quantity |
decimal | no | How much to move, in the line's unit. Always greater than zero. |
lines[].inventoryQuantity |
decimal | no | The same amount in the item's stocking unit, which is what the warehouse counts. |
lines[].openQuantity |
decimal | no | How much of the line is still to be transferred. |
lines[].processedQuantity |
decimal | no | How much of the line a transfer has already taken. |
lines[].status |
string | no | The state of the line. 'NEEDS_SOURCE' means no source warehouse has been resolved, and the transfer order cannot be converted until it is. |
lines[].notes |
string | no | Free text on the line. |
{
"data": {
"id": "7c1e5a90-3d24-4f68-b0a7-91e5d2c46f38",
"documentNumber": "WTO-1043",
"documentStatus": "DRAFT",
"documentDate": "2026-08-18",
"referenceNumber": "<referenceNumber>",
"entityId": "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43",
"entityName": "Acme Netherlands B.V.",
"locationId": "b6f0d2a4-77c1-4e39-8a52-0c4e1f9b73d5",
"locationCode": "WH-CENTRAL",
"locationName": "<locationName>",
"targetLocationId": "e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1",
"targetLocationCode": "WH-NORTH",
"targetLocationName": "<targetLocationName>",
"notes": "<notes>",
"lineCount": 1,
"openLineCount": 1,
"createdDate": "2026-01-15T09:30:00.000Z",
"lastModifiedDate": "2026-08-18T09:14:22.517Z",
"lines": [
{
"id": "2d5b81f7-4c93-4a16-8e70-5f1c9d3a82b4",
"itemId": "517a93e4-cbb4-4571-9e3d-2343e56cfd84",
"itemCode": "WIDGET-01",
"locationId": "b6f0d2a4-77c1-4e39-8a52-0c4e1f9b73d5",
"targetLocationId": "e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1",
"unitCode": "EA",
"quantity": "40",
"inventoryQuantity": "40",
"openQuantity": "40",
"status": "DRAFT"
}
]
},
"diagnostics": [
{
"code": "<code>",
"message": "<message>",
"severity": "error",
"path": [
"<path>"
],
"details": "<details>"
}
]
}
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error