Error
A valid request URL is required to generate request examples{
"id": "list-1",
"number": "T-list-1",
"storeId": "store-list",
"sellerId": "user-camille",
"sessionId": "sess-1",
"customerId": null,
"customerName": null,
"recordedAt": "2026-07-16T09:30:00.000Z",
"lineCount": 1,
"unitsSold": 2,
"subtotalCents": 3600,
"totalCents": 3600,
"vatTotalCents": 600,
"vatByRate": [
{
"rate": 20,
"baseCents": 3000,
"vatCents": 600,
"grossCents": 3600
}
],
"paymentMethod": "cash",
"lines": [
{
"skuId": "sku-espresso-1kg",
"quantity": 2,
"unitPriceCents": 1800
}
]
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Finance
Get a sale ticket by id
Returns one finalized sale ticket (vente / ticket de caisse / reçu) by its id — the same back-office projection the list returns, resolved directly so an agent need not page + filter to fetch a ticket (e.g. before processing a return / remboursement). 404s when no ticket carries the given id.
GET
/
v1
/
sales
/
{id}
Error
A valid request URL is required to generate request examples{
"id": "list-1",
"number": "T-list-1",
"storeId": "store-list",
"sellerId": "user-camille",
"sessionId": "sess-1",
"customerId": null,
"customerName": null,
"recordedAt": "2026-07-16T09:30:00.000Z",
"lineCount": 1,
"unitsSold": 2,
"subtotalCents": 3600,
"totalCents": 3600,
"vatTotalCents": 600,
"vatByRate": [
{
"rate": 20,
"baseCents": 3000,
"vatCents": 600,
"grossCents": 3600
}
],
"paymentMethod": "cash",
"lines": [
{
"skuId": "sku-espresso-1kg",
"quantity": 2,
"unitPriceCents": 1800
}
]
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123,
"fieldErrors": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"statusCode": 123
}
}Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Path Parameters
Sale-ticket id (the finalized transaction id), e.g. T-2026-07-16-0001.
Minimum string length:
1Response
The finalized sale ticket read model.
The finalized sale ticket read model.
Required range:
-9007199254740991 <= x <= 9007199254740991Required range:
-9007199254740991 <= x <= 9007199254740991Required range:
-9007199254740991 <= x <= 9007199254740991Required range:
-9007199254740991 <= x <= 9007199254740991Required range:
-9007199254740991 <= x <= 9007199254740991Show child attributes
Show child attributes
Show child attributes
Show child attributes

