# List warehouse transfer orders

Operation ID: `warehouseTransferOrders`

Group: Inventory › Warehouse Transfer Orders

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/warehouseTransferOrders)

`GET /inventory/warehouse-transfer-orders`

Read-only: Reads and returns; changes nothing.

Lists warehouse transfer orders. Each order comes back without its lines, with lineCount and openLineCount instead. Every other field matches GET inventory/warehouse-transfer-orders/:id.

locationId and targetLocationId are the order's overall source and destination. A line can name its own warehouses, which only GET inventory/warehouse-transfer-orders/:id and POST inventory/warehouse-transfer-orders/search return.

To filter by item, 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`. |

## Query surface

- `id` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `documentNumber` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `documentStatus` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `documentDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `entityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `locationId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `targetLocationId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, documentNumber, documentDate, documentStatus, createdDate, lastModifiedDate
- Selectable: id, documentNumber, documentStatus, documentDate, referenceNumber, entityId, entityName, locationId, locationCode, locationName, targetLocationId, targetLocationCode, targetLocationName, notes, lineCount, openLineCount, createdDate, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of warehouseTransferOrdersRow:

| Field | Type | Required | Filter | Sort | Description |
| --- | --- | --- | --- | --- | --- |
| `id` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The unique identifier for the transfer order. Example: `"7c1e5a90-3d24-4f68-b0a7-91e5d2c46f38"`. |
| `documentNumber` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The transfer order's number, for example 'WTO-1043'. Example: `"WTO-1043"`. |
| `documentStatus` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | 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 \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date the transfer order is dated. Format YYYY-MM-DD. Example: `"2026-08-18"`. |
| `referenceNumber` | string \| null | no | no | no | Your own reference on the transfer order. Example: `"REPLEN-2026-33"`. |
| `entityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The legal entity the transfer order belongs to. See id on GET base/entities. Example: `"1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43"`. |
| `entityName` | string \| null | no | no | no | The name of that legal entity. Example: `"Acme Netherlands B.V."`. |
| `locationId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | 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 \| null | no | no | no | The code of that warehouse. Example: `"WH-CENTRAL"`. |
| `locationName` | string \| null | no | no | no | The name of that warehouse. Example: `"Central warehouse"`. |
| `targetLocationId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The warehouse the goods go to. See id on GET inventory/warehouses/:id. Example: `"e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1"`. |
| `targetLocationCode` | string \| null | no | no | no | The code of that warehouse. Example: `"WH-NORTH"`. |
| `targetLocationName` | string \| null | no | no | no | The name of that warehouse. Example: `"Northern depot"`. |
| `notes` | string \| null | no | no | no | Free text on the document. |
| `lineCount` | number \| null | no | no | no | The number of lines on the transfer order. Example: `1`. |
| `openLineCount` | number \| null | no | no | no | How many lines still have quantity left to transfer. Zero means everything has been taken. Example: `1`. |
| `createdDate` | date-time \| null | no | no | yes | The date and time the transfer order was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: `"2026-08-18T09:14:22.104Z"`. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | 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"`. |

```json
{
  "data": [
    {
      "id": "7c1e5a90-3d24-4f68-b0a7-91e5d2c46f38",
      "documentNumber": "WTO-1043",
      "documentStatus": "DRAFT",
      "documentDate": "2026-08-18",
      "referenceNumber": "REPLEN-2026-33",
      "entityId": "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43",
      "entityName": "Acme Netherlands B.V.",
      "locationId": "b6f0d2a4-77c1-4e39-8a52-0c4e1f9b73d5",
      "locationCode": "WH-CENTRAL",
      "locationName": "Central warehouse",
      "targetLocationId": "e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1",
      "targetLocationCode": "WH-NORTH",
      "targetLocationName": "Northern depot",
      "notes": "<notes>",
      "lineCount": 1,
      "openLineCount": 1,
      "createdDate": "2026-08-18T09:14:22.104Z",
      "lastModifiedDate": "2026-08-18T09:14:22.517Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
