# Sales Orders

`GET /accounting/sales-orders`

Group: Accounting › Sales Orders · Operation ID: `salesOrders`

List sales orders with structured filters. GET data-set exposing filter[field][op]= (eq/ne/gt/gte/lt/lte/in/notIn/between/like), sort=-bookDate,orderNumber, sparse fields=, and page[size]/page[cursor] cursor pagination. Returns the collection header of each order; the full header with totals, customer and external identifiers comes from GET accounting/sales-orders/:id or POST accounting/sales-orders/search. Every request must carry the Api-Version header.

[Open in the interactive reference](https://docs.api.lensing.ai/?op=salesOrders)

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | `"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
- `orderNumber` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `orderType` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `approvalStatus` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `bookDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `serviceStartDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `serviceEndDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `currency` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `isEvergreen` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- Orderable: id, orderNumber, orderType, approvalStatus, bookDate, serviceStartDate, serviceEndDate, currency, isEvergreen, term, lastModifiedDate
- Selectable: id, orderNumber, orderType, approvalStatus, bookDate, serviceStartDate, serviceEndDate, currency, isEvergreen, term, customerName, customerNumber, entityName, entityNumber, salesArrangement, lastModifiedDate

## Response

`200` Success

Under `data`, an array of salesOrdersRow:

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | no | Stable, platform-assigned id (a UUID) of the sales order — the public identifier used by GET accounting/sales-orders/:id. |
| `orderNumber` | string or null | no | System-assigned sales-order number. Filter target: filter[orderNumber][eq]=SO-1042. |
| `orderType` | string or null | no | Order type. An `OrderType` member. Filter target: filter[orderType][eq]=renewal. |
| `approvalStatus` | string or null | no | Approval state. An `ApprovalStatus` member. Filter target: filter[approvalStatus][eq]=approved. |
| `bookDate` | string (date) | no | Date the order was booked (YYYY-MM-DD). Filter target: filter[bookDate][gte]=2026-01-01. |
| `serviceStartDate` | string (date) | no | First day of the service period (YYYY-MM-DD). |
| `serviceEndDate` | string (date) or null | no | Last day of the service period (YYYY-MM-DD). Absent on an evergreen order. |
| `currency` | string | no | Transaction currency as a 3-letter ISO 4217 code. Filter target: filter[currency][in]=USD,EUR. |
| `isEvergreen` | boolean | no | True when the order renews indefinitely. Filter target: filter[isEvergreen][eq]=false. |
| `term` | string (decimal) or null | no | Contract term in months, when the order is not evergreen. |
| `customerName` | string or null | no | Customer display name, denormalised onto the order. Returned only — in neither filterableFields nor orderableFields, because it identifies the counterparty. |
| `customerNumber` | string or null | no | System-generated customer number, denormalised onto the order. Returned only — in neither filterableFields nor orderableFields, because it identifies the counterparty. |
| `entityName` | string or null | no | Name of the owning legal entity, denormalised onto the order. Returned only — in neither filterableFields nor orderableFields. To scope a query by entity, use POST accounting/sales-orders/search, which filters on entityId. |
| `entityNumber` | string or null | no | System-assigned number of the owning legal entity. Returned only — in neither filterableFields nor orderableFields. To scope a query by entity, use POST accounting/sales-orders/search, which filters on entityId. |
| `salesArrangement` | string or null | no | Number of the sales arrangement this order belongs to. Returned only — in neither filterableFields nor orderableFields, because it exposes internal commercial structure. |
| `lastModifiedDate` | string (date-time) | no | Instant the order last changed, as ISO 8601 UTC (YYYY-MM-DDTHH:mm:ss.sssZ). Filter and sort on this to sync incrementally: filter[lastModifiedDate][gte]=2026-08-01T00:00:00.000Z with sort=lastModifiedDate. |

## Statuses

- `400` — Invalid request or business failure
- `401` — Missing or invalid access token
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests
- `500` — Internal server error
