List Payments
GET /v1/nextrestaurant/payments
Money taken, oldest change first
Needs payments:read and the POS app.
Request
GET https://your-site.example/api/index.php/v1/nextrestaurant/payments?location_id=<integer>&status=captured&updated_since=2026-11-01T00:00:00Z&limit=<integer>&cursor=<string>
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
location_id |
integer |
query |
No | Only this location. Omit for all. (min 1) |
status |
string |
query |
No | |
updated_since |
string |
query |
No | Only records changed at or after this UTC date-time (ISO 8601 or Y-m-d H:i:s). |
limit |
integer |
query |
No | Page size. Above 100 is clamped to 100; meta.limit says what was used. (min 1, max 100) Defaults to 25. |
cursor |
string |
query |
No | The meta.next_cursor of the previous page. Opaque; do not build one. |
Responses
200 — One page.
{
"data": [
{
"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"
}
],
"meta": {
"limit": 1,
"next_cursor": "string"
}
}
| Field | Type | Meaning |
|---|---|---|
data[].id |
integer |
(int64) |
data[].order_id |
integer|null |
|
data[].location_id |
integer|null |
|
data[].method |
string|null |
|
data[].amount |
number |
|
data[].tip_amount |
number |
|
data[].refunded_total |
number |
Sum of the refunds against this payment. |
data[].currency |
string|null |
|
data[].status |
string |
|
data[].reference |
string|null |
The provider's or the till's transaction reference. |
data[].paid_at |
string|null |
|
data[].created_at |
string|null |
|
data[].updated_at |
string|null |
|
meta.limit |
integer |
The page size used. |
meta.next_cursor |
string|null |
Pass as cursor for the next page; null on the last page. |
Errors
| Status | Code | When |
|---|---|---|
400 |
INVALID_CURSOR: use meta.next_cursor exactly as given. |
|
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 |
422 |
VALIDATION_FAILED |
One error per invalid field, each with source.pointer. |
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/payments" \
-H "Authorization: Bearer $API_TOKEN"
PHP
<?php
$ch = curl_init('https://your-site.example/api/index.php/v1/nextrestaurant/payments?location_id=<integer>&status=captured&updated_since=2026-11-01T00:00:00Z&limit=<integer>&cursor=<string>');
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/payments?location_id=<integer>&status=captured&updated_since=2026-11-01T00:00:00Z&limit=<integer>&cursor=<string>", {
headers: {
"Authorization": `Bearer ${API_TOKEN}`,
},
});
const data = await response.json();