Skip to main content

Sales API

Required scope: sales:read

Sales are read-only via the Developer API. Creating and voiding sales is restricted to the POS interface.


List Sales

GET /api/v1/sales

Returns a paginated list of sales, newest first.

Query Parameters

ParameterTypeDescription
pageintegerPage number (default: 1)
per_pageintegerResults per page (default: 50, max: 100)
statusstringFilter: completed, voided, pending
start_datedateStart of date range (YYYY-MM-DD)
end_datedateEnd of date range (YYYY-MM-DD)

Response

{
"data": [
{
"id": 456,
"receipt_number": "R-000456",
"status": "completed",
"source": "pos",
"sale_type": "retail",
"payment_method": "debit",
"subtotal": 42.50,
"tax_amount": 5.53,
"discount_amount": 0.00,
"total": 48.03,
"line_items": [
{
"id": 1001,
"product_id": 1,
"product_name": "Blue Dream 3.5g",
"sku": "BD-35",
"quantity": 1.0,
"unit_price": 35.00,
"discount_amount": 0.00,
"total": 35.00
}
],
"customer": {
"id": 1,
"name": "Jane Smith",
"customer_code": "C10001"
},
"clerk": "Mike",
"completed_at": "2026-03-22T14:30:00Z",
"created_at": "2026-03-22T14:28:00Z",
"updated_at": "2026-03-22T14:30:00Z"
}
],
"pagination": { ... }
}

Get a Sale

GET /api/v1/sales/:id

Returns a single sale with full line items and payment details.