Get Order
GET /v1/nextrestaurant/orders/{orderId}
One order, with its lines and payments
Needs orders:read. The response carries an ETag.
Request
GET https://your-site.example/api/index.php/v1/nextrestaurant/orders/{orderId}
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
orderId |
integer |
path |
Yes | (min 1) |
Responses
200 — The order.
{
"data": {
"id": 1,
"order_number": "ORD-000591",
"location_id": 1,
"customer_id": 1,
"table_id": 1,
"channel": "web",
"source": "string",
"status": "placed",
"fulfillment_status": "in_kitchen",
"guest_count": 1,
"subtotal": 1.5,
"discount_total": 1.5,
"tax_total": 1.5,
"service_charge": 1.5,
"tip_total": 1.5,
"delivery_fee": 1.5,
"grand_total": 1.5,
"currency": "string",
"notes": "string",
"scheduled_for": "string",
"placed_at": "string",
"completed_at": "string",
"cancelled_at": "string",
"cancel_reason": "string",
"created_at": "string",
"updated_at": "string",
"items": [
{
"id": 1,
"item_id": 1,
"variation_id": 1,
"name_snapshot": "Margherita Pizza (Large)",
"qty": 1.5,
"unit_price": 1.5,
"modifiers_total": 1.5,
"discount_amount": 1.5,
"line_total": 1.5,
"status": "pending",
"seat_number": 1,
"notes": "string"
}
],
"payments": [
{
"id": 1,
"order_id": 1,
"location_id": 1,
"method": "cash",
"amount": 1.5,
"tip_amount": 1.5,
"refunded_total": 1.5,
"currency": "string",
"status": "captured",
"reference": "string",
"paid_at": "string",
"created_at": "string",
"updated_at": "string"
}
]
}
}
| Field | Type | Meaning |
|---|---|---|
data |
object |
An order with its lines and payments — the same object GET /orders/{id} returns and every order.* webhook carries as data. Datetimes are Y-m-d H:i:s in UTC with no zone suffix. |
data.id |
integer |
(int64) |
data.order_number |
string|null |
|
data.location_id |
integer |
(int64) |
data.customer_id |
integer|null |
|
data.table_id |
integer|null |
|
data.channel |
string|null |
|
data.source |
string|null |
Where an online order came from (web, qr, api); null for staff-entered orders. |
data.status |
string |
placed on creation; then confirmed, preparing, ready, served, completed, cancelled or refunded. |
data.fulfillment_status |
string|null |
|
data.guest_count |
integer|null |
|
data.subtotal |
number |
|
data.discount_total |
number |
|
data.tax_total |
number |
|
data.service_charge |
number |
|
data.tip_total |
number |
|
data.delivery_fee |
number |
|
data.grand_total |
number |
|
data.currency |
string|null |
Often null — take the currency from the location. |
data.notes |
string|null |
|
data.scheduled_for |
string|null |
|
data.placed_at |
string|null |
|
data.completed_at |
string|null |
|
data.cancelled_at |
string|null |
|
data.cancel_reason |
string|null |
|
data.created_at |
string|null |
|
data.updated_at |
string|null |
|
data.items[].id |
integer |
(int64) |
data.items[].item_id |
integer |
(int64) |
data.items[].variation_id |
integer|null |
(int64) |
data.items[].name_snapshot |
string |
The line as the kitchen and the receipt will show it, including the variation. |
data.items[].qty |
number |
|
data.items[].unit_price |
number |
Resolved from the catalogue. A submitted price is ignored. |
data.items[].modifiers_total |
number |
|
data.items[].discount_amount |
number |
|
data.items[].line_total |
number |
|
data.items[].status |
string|null |
|
data.items[].seat_number |
integer|null |
|
data.items[].notes |
string|null |
|
data.payments[].id |
integer |
(int64) |
data.payments[].order_id |
integer|null |
|
data.payments[].location_id |
integer|null |
|
data.payments[].method |
string|null |
|
data.payments[].amount |
number |
|
data.payments[].tip_amount |
number |
|
data.payments[].refunded_total |
number |
Sum of the refunds against this payment. |
data.payments[].currency |
string|null |
|
data.payments[].status |
string |
|
data.payments[].reference |
string|null |
The provider's or the till's transaction reference. |
data.payments[].paid_at |
string|null |
|
data.payments[].created_at |
string|null |
|
data.payments[].updated_at |
string|null |
Errors
| Status | Code | When |
|---|---|---|
401 |
INVALID_TOKEN |
The token is missing, wrong, or none has been generated. |
403 |
INSUFFICIENT_SCOPE |
This API key does not have the permission this request needs. |
403 |
MODULE_DISABLED |
This module is disabled. |
403 |
API_DISABLED |
API is disabled |
404 |
NOT_FOUND |
No such record. |
429 |
RATE_LIMITED |
Too many requests. RATE_LIMITED with a Retry-After header: this key used its budget for the minute, or this address sent 20 bad tokens in 5 minutes. Nothing ran, so the request is safe to retry after the wait. |
Examples
curl
curl -s "https://your-site.example/api/index.php/v1/nextrestaurant/orders/1" \
-H "Authorization: Bearer $API_TOKEN"
PHP
<?php
$ch = curl_init('https://your-site.example/api/index.php/v1/nextrestaurant/orders/1');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('API_TOKEN'),
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
JavaScript
const API_TOKEN = process.env.API_TOKEN;
const response = await fetch("https://your-site.example/api/index.php/v1/nextrestaurant/orders/1", {
headers: {
"Authorization": `Bearer ${API_TOKEN}`,
},
});
const data = await response.json();