Retrieve a warehouse transfer
Operation ID: getWarehouseTransfer
Group: Inventory › Warehouse Transfers
Open in the interactive reference
GET /inventory/warehouse-transfers/{id}
Read-only: Reads and returns; changes nothing.
Retrieves a warehouse transfer, with its lines. Each line includes its batch, serial and bin details. The collection GET inventory/warehouse-transfers returns the same fields without the lines.
A draft has no costs yet. transferCost and the batch and serial unitCost are set when the transfer is committed, and so are sourceAmount and destinationAmount on an intercompany transfer.
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 you want to retrieve. |
Response
200 Success
Under data (getWarehouseTransferOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the transfer. Example: "c41f9a08-6b23-4e57-90d8-2f7a5c31e0b6". |
documentNumber |
string | no | The transfer's number, for example 'WTR-2291'. Example: "WTR-2291". |
documentStatus |
string | yes | The status of the transfer. Possible values: 'DRAFT', 'COMMITTED', 'CANCELLED'. Example: "DRAFT". |
documentDate |
date | no | The date the transfer is dated. Format YYYY-MM-DD. Example: "2026-08-18". |
referenceNumber |
string | no | Your own reference on the transfer. |
transferType |
string | no | The type of transfer. Possible values: 'NORMAL', 'INTERCOMPANY', 'INTERCOMPANY_RETURN'. An intercompany transfer sells the goods to another legal entity and can be billed. Example: "NORMAL". |
entityId |
string | no | The legal entity the goods leave. 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.". |
toEntityId |
string | no | The legal entity receiving the goods, on an intercompany transfer. See id on GET base/entities. |
toEntityName |
string | no | The name of that legal entity. |
locationId |
string | no | The warehouse the goods leave. 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. |
billingStatus |
string | no | The billing status of the transfer. Possible values: 'NOT_BILLED', 'BILLED'. Only an intercompany transfer is billed, through POST inventory/warehouse-transfers/:id/bill. |
intercompanyBillId |
string | no | The numeric id of the intercompany bill this transfer created, not a UUID. It does not match id on GET accounting/intercompany-bills/:id. |
contractualCurrency |
string | no | The currency an intercompany transfer is contracted in. Format ISO 4217, for example 'EUR'. Each line's unitTransferValue is stated in it. |
currency |
string | no | The currency sourceAmount is stated in, the source entity's functional currency. Format ISO 4217, for example 'EUR'. Example: "EUR". |
sourceAmount |
decimal | no | What the goods were worth leaving the source entity, in currency. Written by the commit. |
destinationCurrency |
string | no | The currency destinationAmount is stated in, the destination entity's functional currency. Format ISO 4217, for example 'GBP'. Differs from currency on an intercompany transfer between entities with different functional currencies. |
destinationAmount |
decimal | no | What the goods were worth arriving at the destination entity, in destinationCurrency. Written by the commit. On an intercompany transfer it differs from sourceAmount; when both share a currency, the difference is the margin. |
notes |
string | no | Free text on the document. |
lineCount |
number | no | The number of lines on the transfer. Example: 1. |
createdDate |
date-time | no | The date and time the transfer was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
lastModifiedDate |
date-time | no | The date and time the transfer record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-18T09:14:22.517Z". |
lines |
array<object> | no | The lines of the transfer. The collection GET inventory/warehouse-transfers returns lineCount in place of these. Example: [{"id":"7d2b48e1-95c3-4a06-8f17-3e5a9c06b2d4","itemId":"517a93e4-cbb4-4571-9e3d-2343e56cfd84","itemCode":"WIDGET-01","unitCode":"EA","quantity":"24","inventoryQuantity":"24"}]. |
lines[].id |
string | yes | The unique identifier for the transfer line. updateLines and deleteLines address lines by it. |
lines[].itemId |
string | no | The item being moved. 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, the document's warehouse applied to every line. See id on GET inventory/warehouses/:id. |
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 moves, in the line's unit. |
lines[].inventoryQuantity |
decimal | no | The same amount in the item's stocking unit, which is what the warehouse counts. |
lines[].transferCost |
decimal | no | What one unit left the source warehouse at, in the transfer's currency. The valuation method sets it at commit. Absent on a draft. |
lines[].unitTransferValue |
decimal | no | The contractual price of one unit on an intercompany transfer, in the contractual currency. Supplied on create. |
lines[].totalTransferValue |
decimal | no | The line's total on an intercompany transfer, in the contractual currency: totalTransferValue = unitTransferValue x quantity. Written by the platform. |
lines[].returnedQuantity |
decimal | no | How much of this line has come back on an intercompany return. |
lines[].status |
string | no | The status of the line. |
lines[].notes |
string | no | Free text on the line. |
lines[].batches |
array<object> | no | The batches that make up the line's quantity. |
lines[].batches[].batchNumberId |
string | no | The unique identifier for the batch number. See id on GET inventory/batch-numbers/:id. |
lines[].batches[].batchNumber |
string | no | The batch number. |
lines[].batches[].quantity |
decimal | no | How much of the line this batch accounts for. |
lines[].batches[].inventoryQuantity |
decimal | no | The same amount in the item's stocking unit. |
lines[].batches[].unitCost |
decimal | no | What this batch moved at, in the transfer's currency. Set at commit. |
lines[].serials |
array<object> | no | The serialized units that move. |
lines[].serials[].serialNumberId |
string | no | The unique identifier for the serial number. See id on GET inventory/serial-numbers/:id. |
lines[].serials[].serialNumber |
string | no | The serial number. |
lines[].serials[].quantity |
decimal | no | Always one, for a serialized unit. |
lines[].serials[].unitCost |
decimal | no | What this unit moved at, in the transfer's currency. Set at commit. |
lines[].binLocations |
array<object> | no | The bins the goods leave and arrive in. Each entry names both ends of the move, and the batch or serial it belongs to where it belongs to one. |
lines[].binLocations[].fromBinLocationId |
string | no | The bin the goods leave, in the source warehouse. See id on GET inventory/bins/:id. |
lines[].binLocations[].fromBinLocationCode |
string | no | The code of that bin. |
lines[].binLocations[].toBinLocationId |
string | no | The bin the goods arrive in, in the target warehouse. See id on GET inventory/bins/:id. |
lines[].binLocations[].toBinLocationCode |
string | no | The code of that bin. |
lines[].binLocations[].quantity |
decimal | no | How much moves between these two bins. |
lines[].binLocations[].inventoryQuantity |
decimal | no | The same amount in the item's stocking unit. |
lines[].binLocations[].batchNumber |
string | no | The batch this entry belongs to, when it belongs to one of the line's batches. |
lines[].binLocations[].serialNumber |
string | no | The serialized unit this entry belongs to, when it belongs to one of the line's serials. |
{
"data": {
"id": "c41f9a08-6b23-4e57-90d8-2f7a5c31e0b6",
"documentNumber": "WTR-2291",
"documentStatus": "DRAFT",
"documentDate": "2026-08-18",
"referenceNumber": "<referenceNumber>",
"transferType": "NORMAL",
"entityId": "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43",
"entityName": "Acme Netherlands B.V.",
"toEntityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"toEntityName": "<toEntityName>",
"locationId": "b6f0d2a4-77c1-4e39-8a52-0c4e1f9b73d5",
"locationCode": "WH-CENTRAL",
"locationName": "<locationName>",
"targetLocationId": "e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1",
"targetLocationCode": "WH-NORTH",
"targetLocationName": "<targetLocationName>",
"billingStatus": "<billingStatus>",
"intercompanyBillId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"contractualCurrency": "<contractualCurrency>",
"currency": "EUR",
"sourceAmount": "19.99",
"destinationCurrency": "<destinationCurrency>",
"destinationAmount": "19.99",
"notes": "<notes>",
"lineCount": 1,
"createdDate": "2026-01-15T09:30:00.000Z",
"lastModifiedDate": "2026-08-18T09:14:22.517Z",
"lines": [
{
"id": "7d2b48e1-95c3-4a06-8f17-3e5a9c06b2d4",
"itemId": "517a93e4-cbb4-4571-9e3d-2343e56cfd84",
"itemCode": "WIDGET-01",
"unitCode": "EA",
"quantity": "24",
"inventoryQuantity": "24"
}
]
},
"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