Skip to content

Online orders

Online orders are orders that arrive from somewhere other than the till: your web shop, your app, an aggregator, a kiosk. Creating one puts it in front of the store exactly as a first-party order would be, including the realtime notification that makes the POS chime.

A Full API token includes the online-order scopes. If ordering is all your integration does, use the Online Order API instead — it is the same endpoints with a narrower bundle and no app review gate.

MethodPathScope
GET/v1/online-ordersonline_orders.read
GET/v1/online-orders/:idonline_orders.read
GET/v1/online-orders/:id/statusonline_orders.read
POST/v1/online-ordersonline_orders.write
Terminal window
curl -s "$API_BASE_URL/online-orders" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"storeId": 1,
"orderType": 3,
"status": 1,
"customerId": 5521,
"customerName": "Priya Nair",
"customerPhone": "+919845012345",
"note": "Leave at reception",
"takenBy": "acme-web",
"subtotal": 11.25,
"taxAmount": 0.56,
"totalAmount": 11.81,
"items": [
{
"id": 8841,
"item": "Flat White",
"qty": 2,
"rate": 3.75,
"note": "extra hot",
"itemModifiers": [14],
"modifiers": [{ "ID": 41, "ModifierId": 14 }]
},
{ "id": 8905, "item": "Almond croissant", "qty": 1, "rate": 3.75 }
]
}'
FieldTypeRequiredNotes
storeIdnumberyesWhich store fulfils the order
itemsarrayyesAt least one line
orderTypenumberno2 takeout, 3 delivery
statusnumberno0 draft, 1 new and visible to the store (default)
customerIdnumbernoExisting customer. Create or match them first
customerName, customerPhonestringnoShown to the store when there is no customer record
subtotal, taxAmount, cessAmount, totalAmountnumbernoYour computed totals
tipAmount, tipPercentnumbernoTip captured at checkout
notestringnoKitchen or delivery note
takenBystringnoChannel identifier — set it to your integration’s name
FieldTypeRequiredNotes
idnumberyesThe LithosPOS item id
itemstringyesItem name as shown to the customer
qtynumberyesMinimum 0
ratenumberyesUnit price charged, minimum 0
variantIdnumberno0 when the item has no variants
notestringnoPer-line preparation note
itemModifiersnumber[]noModifier group ids applied to the line
modifiers{ ID, ModifierId }[]noChosen options: ID is the option, ModifierId its group
201 Created
{
"data": {
"id": 51023,
"storeId": 1,
"status": 1,
"orderType": 3,
"totalAmount": 11.81
}
}

Creating an order with status: 1 publishes a realtime event to the store’s POS and kitchen screens immediately. Use status: 0 to stage a draft that staff will not see yet.

Terminal window
curl -s "$API_BASE_URL/online-orders/51023/status" \
-H "Authorization: Bearer $ACCESS_TOKEN"
{
"data": {
"id": 51023,
"status": "accepted",
"statusCode": 1,
"accepted": true,
"foodReady": false,
"prepTimeMinutes": 18,
"updatedAt": "2026-07-29T09:32:11.004Z"
}
}

Acceptance and food-ready are separate flags layered on the order’s lifecycle state, not values of it. See order lifecycle for the full state table and polling guidance.

Terminal window
curl -s "$API_BASE_URL/online-orders?storeId=1&status=1&fromDate=2026-07-29&limit=50" \
-H "Authorization: Bearer $ACCESS_TOKEN"
ParameterNotes
storeIdOne or more store ids, comma-separated
status0 failed or draft, 1 active, 2 completed, 3 cancelled
customerIdOrders for one customer
typeOrder type filter — note this uses a different numbering from orderType on create
fromDate / toDateOrder date window, YYYY-MM-DD
searchMatches order number, customer name and phone
page, limit, sort, orderStandard paging