# List serial transactions

Operation ID: `serialTransactions`

Group: Inventory › Serial Transactions

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

`GET /inventory/serial-transactions`

Read-only: Reads and returns; changes nothing.

Lists serial transactions.

## 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
- `serialNumberId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `serialNumber` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `manufacturerSerialNumber` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `expirationDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `entryDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `isSold` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `itemId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `itemCode` — 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
- `locationCode` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `transactionDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `sourceDocumentLineType` — 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, transactionDate, entryDate, expirationDate, serialNumber, itemCode, locationCode, lastModifiedDate
- Selectable: id, serialNumberId, serialNumber, manufacturerSerialNumber, expirationDate, entryDate, isSold, transactionId, itemId, itemCode, itemName, locationId, locationCode, locationName, transactionDate, inQuantity, outQuantity, cost, currency, sourceDocumentLineType, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of serialTransactionsRow:

| 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 serial transaction. Format: UUID. Example: `"b41e7c05-2d68-4f13-9a70-5c8e1b3d0f92"`. |
| `serialNumberId` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The unique identifier of the serialized unit this transaction is for. Format: UUID. See `id` on GET inventory/serial-numbers/:id (getSerialNumber). Example: `"7e05c3a9-64b1-4d82-b0f7-19a4c8e2b537"`. |
| `serialNumber` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The serial number of the unit, such as the one printed on its label. It is entered on the receipt, inventory increase, or other document that first recorded the unit. The same serial number can be used for other items and in other legal entities, so it identifies a unit only together with the item and the legal entity. Example: 'SN-000412'. Example: `"SN-000412"`. |
| `manufacturerSerialNumber` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The manufacturer's serial number. It shows the unit's current value, not the value at the time of the serial transaction. Example: `"ACME-77-000412"`. |
| `expirationDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date the unit expires. It shows the unit's current value, not the value at the time of the serial transaction. Format: YYYY-MM-DD. Example: `"2029-05-31"`. |
| `entryDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date the unit's age is counted from. Format: YYYY-MM-DD. It is the unit's current `entryDate`, not the date at the time of this serial transaction. Example: `"2026-08-03"`. |
| `isSold` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether the unit has been sold. It shows the unit's current value, not the value at the time of the serial transaction. A unit that was sold and then returned has the value false. Example: `false`. |
| `transactionId` | string \| null | no | no | no | The unique identifier of the inventory transaction this serial transaction belongs to. Format: UUID. See `id` on GET inventory/inventory-transactions/:id (getInventoryTransaction). Example: `"3a7c1f95-04eb-4d62-8917-5c0e2b8d4a63"`. |
| `itemId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The unique identifier of the item. Format: UUID. See `id` on GET inventory/items/:id (getItem). Example: `"5f21c8b0-9d34-4a76-8e12-04b93c7de5a8"`. |
| `itemCode` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The code of the item in `itemId`. Example: `"LAPTOP-14"`. |
| `itemName` | string \| null | no | no | no | The name of the item in `itemId`. Example: `"14-inch laptop"`. |
| `locationId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The unique identifier of the warehouse. Format: UUID. See `id` on GET inventory/warehouses/:id (getWarehouse). Example: `"e1d84c07-5b39-4a26-9f70-2c8b613ad495"`. |
| `locationCode` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | The code of the warehouse in `locationId`. Example: `"WH-01"`. |
| `locationName` | string \| null | no | no | no | The name of the warehouse in `locationId`. Example: `"Rotterdam Distribution Centre"`. |
| `transactionDate` | date \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date of the inventory transaction this serial transaction belongs to. Format: YYYY-MM-DD. Example: `"2026-08-03"`. |
| `inQuantity` | decimal \| null | no | no | no | The quantity of the unit that came into stock. It is 1 when the unit came in, and 0 when only the unit's cost changed. Example: `"1.00"`. |
| `outQuantity` | decimal \| null | no | no | no | The quantity of the unit that went out of stock. It is 1 when the unit went out. |
| `cost` | decimal \| null | no | no | no | The cost of the unit, in the currency named by `currency`. When the unit comes in, it is the cost the unit was received at. When the unit goes out, it is the unit's cost at that time. On an inventory revaluation, it is the unit's new cost. Example: `"742.50"`. |
| `currency` | string \| null | no | no | no | The currency that `cost` is in. Format: ISO 4217, for example 'USD'. Example: `"EUR"`. |
| `sourceDocumentLineType` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | The type of document line the inventory transaction came from. Possible values: 'IMInventorySalesOrderLine', 'IMInventorySalesDeliveryLine', 'IMSalesOrderLine', 'IMInventoryPurchaseReturnLine', 'IMInventorySalesReturnLine', 'IMWarehouseTransferLine', 'IMInventoryDecreaseLine', 'IMInventoryIncreaseLine', 'IMInventoryRevaluationLine', 'IMInventoryTransferLine', 'IMInventoryAdjustmentLine', 'IMInventoryCountLine', 'IMInventoryPutAwayTask', 'IMInventoryPurchaseReturnReversal', 'PurchaseOrderLine', 'IMLandedCostAllocationLine', 'SalesOrderProductItem', 'IMWarehouseTransferOrderLine', 'VendorBillItemBase', 'InvPurchaseDeliveryLine'. Example: `"InvPurchaseDeliveryLine"`. |
| `lastModifiedDate` | date-time \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | The date and time the serial transaction last changed, in UTC. Format: YYYY-MM-DDTHH:mm:ss.sssZ. Changes to the unit itself, such as its `isSold` or `entryDate`, do not update this field. Example: `"2026-08-03T11:15:00.000Z"`. |

```json
{
  "data": [
    {
      "id": "b41e7c05-2d68-4f13-9a70-5c8e1b3d0f92",
      "serialNumberId": "7e05c3a9-64b1-4d82-b0f7-19a4c8e2b537",
      "serialNumber": "SN-000412",
      "manufacturerSerialNumber": "ACME-77-000412",
      "expirationDate": "2029-05-31",
      "entryDate": "2026-08-03",
      "isSold": false,
      "transactionId": "3a7c1f95-04eb-4d62-8917-5c0e2b8d4a63",
      "itemId": "5f21c8b0-9d34-4a76-8e12-04b93c7de5a8",
      "itemCode": "LAPTOP-14",
      "itemName": "14-inch laptop",
      "locationId": "e1d84c07-5b39-4a26-9f70-2c8b613ad495",
      "locationCode": "WH-01",
      "locationName": "Rotterdam Distribution Centre",
      "transactionDate": "2026-08-03",
      "inQuantity": "1.00",
      "outQuantity": "19.99",
      "cost": "742.50",
      "currency": "EUR",
      "sourceDocumentLineType": "InvPurchaseDeliveryLine",
      "lastModifiedDate": "2026-08-03T11:15:00.000Z"
    }
  ],
  "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
