Get Sales page
GET/sales
Returns a paginated list of completed sales for the company resolved from gateway context.
The status filter is required; currently the only accepted value is completed.
Each sale includes the full positions array. Page size is fixed at 20 items per page.
Request
Query Parameters
Possible values: [completed]
Filter sales by fulfillment status. Required. Currently the only accepted value is completed.
Additional values may be added in future API versions.
Possible values: <= 128 characters
Pagination cursor (opaque token). Invalid or expired cursors yield 400 with code invalid_cursor.
Possible values: [initiated_at_asc, initiated_at_desc, created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, number_asc, number_desc]
Default value: initiated_at_desc
Sort order for returned sales.
Return only sales with initiated_at ≥ this value (inclusive). ISO 8601 date-time.
When combined with initiated_at_to, defines a closed time window.
Return only sales with initiated_at ≤ this value (inclusive). ISO 8601 date-time.
When combined with initiated_at_from, defines a closed time window.
Responses
- 200
- 400
- 401
- 403
- 429
- 500
- 503
OK
- application/json
- Schema
- Example (from schema)
Schema
Array [
Array [
Array [
]
]
]
Token of the next page of the list. null when there is no next page.
items
object[]
required
Sale identifier
Possible values: non-empty and <= 36 characters
Human-readable sale number
Possible values: non-empty and <= 16 characters
Short sequential number (e.g. receipt or table ticket number)
Possible values: [completed, unknown]
Sale fulfillment status
Date and time when the sale was initiated
Possible values: <= 1024 characters
Free-text comment on the sale
Point-of-sale terminal identifier
Identifier of the employee who initiated the sale; null when not recorded
external_data
object
nullable
External system reference data; null when the sale has no external system link
Possible values: >= 4 characters and <= 128 characters
Unique identifier in the external system
External system reference data; null when the sale has no external system link
positions
object[]
nullable
required
Line items included in the sale
Position identifier
Possible values: non-empty and <= 512 characters
Product name at the time of sale
quantity
object
required
Quantity of a sold item with unit of measure information
Quantity in the smallest unit (divide by 10^exponent to get the real quantity)
Possible values: <= 3
Decimal exponent (e.g. 3 means value is in thousandths)
Unit of measure identifier; matches id in GET /uoms response
Possible values: >= 2 characters and <= 32 characters
Unit of measure full name
Possible values: non-empty and <= 16 characters
Unit of measure short display label
codes
object[]
required
Possible values: <= 20
Typed identifiers (barcodes and SKUs) of the sold item
Possible values: [ean_8, ean_13, itf_14, upc_a, sku, other]
Type of code; use other when the value does not map to a listed barcode or SKU kind.
Possible values: >= 4 characters and <= 128 characters
Catalog good identifier; null when the position was added without a catalog reference
Catalog good variation identifier; null when the position was added without a catalog reference
How the position was added. Available values: catalog, manual_input, custom_amount.
vat
object
required
VAT fee item applied to this position; matches fee_items[] entries returned by GET /fees.
Fee item identifier; matches id in fee_items[].
Possible values: >= 2 characters and <= 64 characters
Fee item display name (e.g. tax rate label).
Possible values: <= 100
Tax rate in percent (decimal, e.g. 5 or 5.25). Omitted when the fee item is exempt or non-percentage.
unit_price_including_tax
object
required
Unit price with tax included
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
total_price
object
required
Position total after discounts and taxes
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
discount_amount
object
nullable
required
Total discount applied to this position; null when no discount was applied
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
taxable_amount
object
required
Amount subject to tax before tax is added
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
Possible values: <= 100
Tax rate in percent; null when the fee is exempt or non-percentage
totals
object
required
Pre-calculated monetary totals for the entire sale.
discount
object
nullable
Total discount applied at sale level; null when no sale-level discount was applied
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
taxable_amount
object
required
Total amount subject to tax across all positions
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
tax
object
required
Total tax amount across all positions
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
total
object
required
Final sale total after all discounts and taxes
Amount in minimum currency units
ISO 4217 currency code. Available values: AED
Date and time when the sale record was created
Date and time when the sale record was last updated
{
"cursor": "aQvigECEB7y9rBL9ObjlA0z0KRmGgHmUPNkQ",
"items": [
{
"id": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"number": "0006-0973-152658",
"ticket_number": "T1-4",
"status": "completed",
"initiated_at": "2026-07-28T10:03:43.303Z",
"comment": "Deliver to the address",
"point_of_sale_id": "cccccccc-cccc-4ccc-8ccc-cccccccccccc",
"initiated_by_id": "eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee",
"external_data": {
"id": "external-system-id-001"
},
"positions": [
{
"id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"name": "Grande Latte",
"quantity": {
"value": 500,
"exponent": 3,
"uom_id": "33333333-3333-4333-8333-333333333333",
"uom_name": "Kilogram",
"uom_symbol": "kg"
},
"codes": [
{
"type": "ean_8",
"value": "string"
}
],
"catalog_good_id": "11111111-1111-4111-8111-111111111111",
"catalog_good_variation_id": "22222222-2222-4222-8222-222222222222",
"source": "catalog",
"vat": {
"fee_item_id": "66666666-6666-4666-8666-666666666666",
"fee_item_name": "5%",
"fee_item_percentage": 5
},
"unit_price_including_tax": {
"value": 50000,
"currency_code": "AED"
},
"total_price": {
"value": 50000,
"currency_code": "AED"
},
"discount_amount": null,
"taxable_amount": {
"value": 47619,
"currency_code": "AED"
},
"tax_percentage": 5
}
],
"totals": {
"discount": null,
"taxable_amount": {
"value": 50000,
"currency_code": "AED"
},
"tax": {
"value": 2500,
"currency_code": "AED"
},
"total": {
"value": 52500,
"currency_code": "AED"
}
},
"created_at": "2026-07-28T10:03:43.304Z",
"updated_at": "2026-07-28T10:03:43.304Z"
}
]
}
Bad request — malformed syntax, invalid parameters, or failed validation.
Typical code values: validation_error, invalid_request.
List endpoints that accept a cursor parameter additionally return invalid_cursor when the cursor is invalid or expired.
- application/problem+json
- Schema
- Example (from schema)
- validation
Schema
Array [
]
Short human-readable summary
URI reference identifying the problem category
URI reference identifying the specific request that caused this error (e.g. the request path).
Correlation id for support (report when contacting support)
HTTP status code
Machine-readable code for client branching
Human-readable explanation (optional)
Stable extension when code is existing_entity_conflict. For a duplicate external_data.id within the company,
the value is duplicate_external_data_id.
errors
object
nullable
Present when code is validation_error. Keys are field names; values are arrays of human-readable error messages for that field.
property name*
string[]
nullable
string
{
"title": "string",
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"instance": "/api/catalog/goods/regular",
"trace_id": "00-84c1fd4063c38d9f3900d06e56542d48-85d1d4-00",
"status": 0,
"code": "validation_error",
"detail": "string",
"reason": "duplicate_external_data_id",
"errors": {
"uom_id": [
"'uom_id' must not be empty."
],
"vat": [
"'vat' must not be empty."
],
"variations": [
"'variations' must contain between 1 and 150 items."
]
}
}
{
"title": "One or more errors occurred.",
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"trace_id": "00-00000000000000000000000000000000-00000000-00",
"status": 400,
"instance": "/api/catalog/goods/regular",
"code": "validation_error",
"errors": {
"name": [
"'name' must not be empty."
]
}
}
Missing or invalid credentials before the gateway forwards context (when applicable). The response has no body (empty payload).
Caller is not allowed to access this resource or company. The response has no body (empty payload).
Rate limit exceeded.
Response Headers
Retry-After
integer
Seconds to wait before retrying
- application/problem+json
- Schema
- Example (from schema)
- rateLimit
Schema
Array [
]
Short human-readable summary
URI reference identifying the problem category
URI reference identifying the specific request that caused this error (e.g. the request path).
Correlation id for support (report when contacting support)
HTTP status code
Machine-readable code for client branching
Human-readable explanation (optional)
Stable extension when code is existing_entity_conflict. For a duplicate external_data.id within the company,
the value is duplicate_external_data_id.
errors
object
nullable
Present when code is validation_error. Keys are field names; values are arrays of human-readable error messages for that field.
property name*
string[]
nullable
string
{
"title": "string",
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"instance": "/api/catalog/goods/regular",
"trace_id": "00-84c1fd4063c38d9f3900d06e56542d48-85d1d4-00",
"status": 0,
"code": "validation_error",
"detail": "string",
"reason": "duplicate_external_data_id",
"errors": {
"uom_id": [
"'uom_id' must not be empty."
],
"vat": [
"'vat' must not be empty."
],
"variations": [
"'variations' must contain between 1 and 150 items."
]
}
}
{
"title": "Too Many Requests",
"type": "https://tools.ietf.org/html/rfc6585#section-4",
"trace_id": "00-00000000000000000000000000000000-00000000-00",
"status": 429,
"code": "unexpected_error"
}
Unexpected server error.
- application/problem+json
- Schema
- Example (from schema)
- unexpected
Schema
Array [
]
Short human-readable summary
URI reference identifying the problem category
URI reference identifying the specific request that caused this error (e.g. the request path).
Correlation id for support (report when contacting support)
HTTP status code
Machine-readable code for client branching
Human-readable explanation (optional)
Stable extension when code is existing_entity_conflict. For a duplicate external_data.id within the company,
the value is duplicate_external_data_id.
errors
object
nullable
Present when code is validation_error. Keys are field names; values are arrays of human-readable error messages for that field.
property name*
string[]
nullable
string
{
"title": "string",
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"instance": "/api/catalog/goods/regular",
"trace_id": "00-84c1fd4063c38d9f3900d06e56542d48-85d1d4-00",
"status": 0,
"code": "validation_error",
"detail": "string",
"reason": "duplicate_external_data_id",
"errors": {
"uom_id": [
"'uom_id' must not be empty."
],
"vat": [
"'vat' must not be empty."
],
"variations": [
"'variations' must contain between 1 and 150 items."
]
}
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.6.1",
"trace_id": "00-00000000000000000000000000000000-00000000-00",
"status": 500,
"code": "internal_server_error"
}
Service temporarily unavailable.
- application/problem+json
- Schema
- Example (from schema)
- unavailable
Schema
Array [
]
Short human-readable summary
URI reference identifying the problem category
URI reference identifying the specific request that caused this error (e.g. the request path).
Correlation id for support (report when contacting support)
HTTP status code
Machine-readable code for client branching
Human-readable explanation (optional)
Stable extension when code is existing_entity_conflict. For a duplicate external_data.id within the company,
the value is duplicate_external_data_id.
errors
object
nullable
Present when code is validation_error. Keys are field names; values are arrays of human-readable error messages for that field.
property name*
string[]
nullable
string
{
"title": "string",
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"instance": "/api/catalog/goods/regular",
"trace_id": "00-84c1fd4063c38d9f3900d06e56542d48-85d1d4-00",
"status": 0,
"code": "validation_error",
"detail": "string",
"reason": "duplicate_external_data_id",
"errors": {
"uom_id": [
"'uom_id' must not be empty."
],
"vat": [
"'vat' must not be empty."
],
"variations": [
"'variations' must contain between 1 and 150 items."
]
}
}
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.6.4",
"trace_id": "00-00000000000000000000000000000000-00000000-00",
"status": 503
}