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
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
per_page | integer | Results per page (default: 50, max: 100) |
status | string | Filter: completed, voided, pending |
start_date | date | Start of date range (YYYY-MM-DD) |
end_date | date | End 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.