# List warehouse transfers

Operation ID: `warehouseTransfers`

Group: Inventory › Warehouse Transfers

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

`GET /inventory/warehouse-transfers`

Read-only: Reads and returns; changes nothing.

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

To find intercompany transfers that are committed but not billed, filter on transferType 'INTERCOMPANY', documentStatus 'COMMITTED' and billingStatus 'NOT_BILLED'.

To filter by item, use POST inventory/warehouse-transfers/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
- `transferType` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `entityId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `toEntityId` — 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
- `billingStatus` — 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, transferType, createdDate, lastModifiedDate
- Selectable: id, documentNumber, documentStatus, documentDate, referenceNumber, transferType, entityId, entityName, toEntityId, toEntityName, locationId, locationCode, locationName, targetLocationId, targetLocationCode, targetLocationName, billingStatus, intercompanyBillId, contractualCurrency, currency, sourceAmount, destinationCurrency, destinationAmount, notes, lineCount, createdDate, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of warehouseTransfersRow:

| 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. Example: `"c41f9a08-6b23-4e57-90d8-2f7a5c31e0b6"`. |
| `documentNumber` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The transfer's number, for example 'WTR-2291'. Example: `"WTR-2291"`. |
| `documentStatus` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The status of the transfer. Possible values: 'DRAFT', 'COMMITTED', 'CANCELLED'. Example: `"DRAFT"`. |
| `documentDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date the transfer is dated. Format YYYY-MM-DD. Example: `"2026-08-18"`. |
| `referenceNumber` | string \| null | no | no | no | Your own reference on the transfer. |
| `transferType` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | 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 \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The legal entity the goods leave. 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."`. |
| `toEntityId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The legal entity receiving the goods, on an intercompany transfer. See id on GET base/entities. |
| `toEntityName` | string \| null | no | no | no | The name of that legal entity. |
| `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. 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"`. |
| `billingStatus` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | 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 \| null | no | no | 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 \| null | no | no | 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 \| null | no | no | no | The currency sourceAmount is stated in, the source entity's functional currency. Format ISO 4217, for example 'EUR'. Example: `"EUR"`. |
| `sourceAmount` | decimal \| null | no | no | no | What the goods were worth leaving the source entity, in currency. Written by the commit. |
| `destinationCurrency` | string \| null | no | no | 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 \| null | no | no | 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 \| null | no | no | no | Free text on the document. |
| `lineCount` | number \| null | no | no | no | The number of lines on the transfer. Example: `1`. |
| `createdDate` | date-time \| null | no | no | yes | The date and time the transfer 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 record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: `"2026-08-18T09:14:22.517Z"`. |

```json
{
  "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": "Central warehouse",
      "targetLocationId": "e94a17c3-5b28-4d60-91f7-3a8c2e05b6d1",
      "targetLocationCode": "WH-NORTH",
      "targetLocationName": "Northern depot",
      "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-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
