/api/partner/v1/wolt/orders
Requires authentication
Rate limited by the `api-global` limiter
Send a bearer token in the Authorization header.
The venue's orders, newest first.
Page backwards by passing the next_cursor from the previous response as ?cursor=. Stop
when has_more is false.
This is a snapshot for listing and backfill. For keeping in step with the venue in real time, poll the event feed instead: it is append-only and ordered, so nothing is missed.
Full URL: https://fature.al/api/partner/v1/wolt/orders
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| cursor | integer | no | Return orders older than this id; pass the previous next_cursor. |
| limit | integer | no | Page size, 1-100. Defaults to `25`. |
| status | string | no | Filter by raw Wolt status (e.g. received, acknowledged, ready, delivered). |
| from | string | no | Only orders received on/after this date (YYYY-MM-DD). |
| to | string | no | Only orders received on/before this date (YYYY-MM-DD). |
Responses
200 OK
| Field | Type | Description |
|---|---|---|
| status | boolean | |
| data | object | |
| data.orders | array | |
| data.orders[].id | integer | Fatureal order id; use this as {id} in the order and action routes |
| data.orders[].wolt_order_id | string | Wolt's own order id |
| data.orders[].display_number | string, nullable | Human order number shown to the customer |
| data.orders[].status | string | Raw Wolt lifecycle status: received, acknowledged, production, ready, picked_up, courier_at_customer, delivered, rejected, refunded, ... |
| data.orders[].fiscal_state | string | Fiscal state derived from the invoice: pending, deferred, fiscalised or failed |
| data.orders[].total_amount | number | Charged total in major currency units |
| data.orders[].currency | string | ISO 4217 currency code |
| data.orders[].received_at | string, nullable | When Wolt handed the order to us (ISO-8601) |
| data.orders[].pickup_at | string, nullable | Committed handover time (ISO-8601), set when a pickup time was chosen on accept |
| data.orders[].delivery_type | string, nullable | Wolt delivery type: takeaway, eatin, homedelivery, ... |
| data.orders[].self_delivery | boolean | Whether the venue fulfils delivery with its own courier |
| data.orders[].branch | string, nullable | Branch name |
| data.orders[].invoice | object, nullable | Linked fiscal invoice reference, or null before fiscalisation |
| data.orders[].invoice.id | integer | Fatureal invoice id |
| data.orders[].invoice.number | any | Fiscal invoice number, once assigned |
| data.orders[].invoice.state | string | Fiscal state: pending, deferred, fiscalised or failed |
| data.orders[].invoice.fiscal_iic | any | Fiscal IIC (NSLF), once fiscalised |
| data.orders[].invoice.fiscal_fic | any | Fiscal FIC (NIVF), once fiscalised |
| data.next_cursor | string | |
| data.has_more | boolean |
403 The company has no Wolt add-on, the token has no Wolt right, or it resolves to no single active venue.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false |
| message | string | Localised explanation, safe to log but not to branch on |
| code | string | Stable machine readable reason: `unauthenticated`, `wolt_not_enabled`, `forbidden`, `no_venue`, `order_not_found`, `invalid_transition`, `invalid_data`, `action_failed`, `wolt_upstream_error`, `idempotency_key_required`, `idempotency_in_progress` |
429 Rate limit reached: 180 reads a minute per token. Retry after the number of seconds in the Retry-After header.
| Field | Type | Description |
|---|---|---|
| message | string |
Example request
curl -X GET 'https://fature.al/api/partner/v1/wolt/orders' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'X-Client-Id: YOUR_CLIENT_ID' \
-H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
-H 'Accept: application/json'
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
])->get('https://fature.al/api/partner/v1/wolt/orders');
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://fature.al/api/partner/v1/wolt/orders', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/partner/v1/wolt/orders', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'X-Client-Id': 'YOUR_CLIENT_ID',
'X-Client-Secret': 'YOUR_CLIENT_SECRET',
'Accept': 'application/json'
}
});
const data = await response.json();
Example response
{
"status": true,
"data": {
"orders": [
{
"id": 1,
"wolt_order_id": "wolt order id",
"display_number": "display number",
"status": "status",
"fiscal_state": "fiscal state",
"total_amount": 4200,
"currency": "USD",
"received_at": "received at",
"pickup_at": "pickup at",
"delivery_type": "delivery type",
"self_delivery": true,
"branch": "branch",
"invoice": {
"id": 1,
"number": "number",
"state": "state",
"fiscal_iic": "fiscal iic",
"fiscal_fic": "fiscal fic"
}
}
],
"next_cursor": "next cursor",
"has_more": true
}
}
{
"status": true,
"message": "Hello there",
"code": "code"
}
{
"message": "Hello there"
}