Test Order Traceability (API)
REAL ORDERS
This API covers orders placed on the allocated test store. For orders from your real stores, use the Order Traceability screen in the portal.
The traceability API allows you to verify an order's journey through the Glovo integration system — from receipt from Glovo, through processing and delivery to the POS, to the POS response.
Order Journey
Glovo App → Glovo Backend → Integration Middleware → POS
│
┌─────┴─────┐
│ Receive │ receivedTime
│ Order │ status: INITIAL
└─────┬─────┘
│
┌─────┴─────┐
│ Transform │ Convert format
│ & Execute │ Glovo → POS
└─────┬─────┘
│
┌─────┴─────┐
│ Send to │ executedTime
│ POS │ status: EXECUTED
└─────┬─────┘
│
┌─────┴─────┐
│ POS │ posResponse
│ Response │ (success / error)
└───────────┘Processing Stages
| Stage | What Happens | Field Updated |
|---|---|---|
| Receive | Order arrives from Glovo into the middleware | receivedTime, status → INITIAL |
| Transform | Glovo JSON format is converted to POS-accepted format | status → TRANSFORMED |
| Execute | Transformed order is sent to the POS endpoint | executedTime, status → EXECUTED |
| POS Response | The POS response is captured and stored | posResponse (success or error) |
Traceability Endpoint
GET /api/v3/orders/traceability/{orderCode}
AUTHENTICATION
This endpoint uses the accessToken received when the test store was allocated (not the POS integration token).
Parameters:
| Parameter | In | Type | Description |
|---|---|---|---|
orderCode | path | string | Order code (e.g., ISRQHPPK1) — the order_code field from the received notification |
curl -X GET "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/ISRQHPPK1" \
-H "Authorization: ACCESS_TOKEN_FROM_ALLOCATION"import requests
url = "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/ISRQHPPK1"
headers = {"Authorization": access_token}
response = requests.get(url, headers=headers)
trace = response.json()
if trace["sentToPos"]:
print(f"Order sent to POS at: {trace['executedTime']}")
print(f"POS response: {trace['posResponse']}")
else:
print(f"Order NOT sent to POS. Status: {trace['status']}")const response = await fetch(
'https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/ISRQHPPK1',
{ headers: { 'Authorization': accessToken } }
);
const trace = await response.json();
console.log(`Status: ${trace.status}, Sent to POS: ${trace.sentToPos}`);Response (200 OK)
{
"orderCode": "ISRQHPPK1",
"storeId": "gi__001",
"receivedTime": "2026-03-11T09:30:00",
"orderReceived": true,
"executedTime": "2026-03-11T09:30:05",
"executed": true,
"sentToPos": true,
"posResponse": "{\"status\":\"accepted\",\"orderId\":\"POS-789\"}",
"status": "EXECUTED"
}Response Fields
| Field | Type | Description |
|---|---|---|
orderCode | String | The order code queried |
storeId | String | Store ID associated with the order |
receivedTime | DateTime | Exact moment the order was received from Glovo |
orderReceived | Boolean | true if the order was successfully received |
executedTime | DateTime | Exact moment the order was sent to POS |
executed | Boolean | true if the order went through the execution stage |
sentToPos | Boolean | true if the order was actually sent to POS |
posResponse | String | Complete POS response (JSON string). Contains either the success response or the error message |
status | String | Current order status (see table below) |
Possible Statuses
| Status | Description |
|---|---|
INITIAL | Order received from Glovo but not yet processed |
TRANSFORMED | Order format converted from Glovo format to POS format |
EXECUTED | Order successfully sent to POS and response received |
ERROR | Processing failed at one of the stages |
Error Codes
| HTTP Status | Description |
|---|---|
200 | Traceability information returned successfully |
401 | Invalid or missing access token |
404 | Order not found or doesn't belong to the allocated store |
429 | Rate limit exceeded (max 10 requests/hour) |
Interpreting Results
Successfully Processed Order
{
"orderReceived": true,
"sentToPos": true,
"status": "EXECUTED",
"posResponse": "{\"status\":\"accepted\"}"
}The order completed the full flow: receive → transform → send to POS → positive response.
Order Received but Not Sent to POS
{
"orderReceived": true,
"sentToPos": false,
"status": "ERROR",
"posResponse": "Store execution is deactivated"
}The order was received from Glovo but failed during execution. The posResponse field contains the error reason. Possible causes:
- Store execution is deactivated
- Format transformation error
- Incorrect integration configuration
Order with POS Error
{
"orderReceived": true,
"sentToPos": true,
"status": "EXECUTED",
"posResponse": "{\"error\":\"Connection timeout\"}"
}The order was sent to POS, but the POS responded with an error. Check POS configuration and connectivity.
Order Not Found
If you receive 404 Not Found, verify:
- The order code is correct (the
order_codefield from the notification, notorder_id) - The order belongs to the allocated test store
- The order is not too old
Rate Limiting
The traceability API has a limit of 10 requests per hour per access token.
If you exceed the limit, you'll receive:
{
"error": "RATE_LIMIT_EXCEEDED",
"message": "Maximum 10 requests per hour. Try again at 2026-03-11T11:00:00",
"retryAt": "2026-03-11T11:00:00"
}RECOMMENDATION
Don't poll frequently. Check traceability after you've received the order delivery confirmation or after a reasonable interval (30-60 seconds after placing the order).
Complete Flow Example
# 1. Place a test order through the Glovo app
# (use the test account created during allocation)
# 2. POS receives the order on notificationUrl
# → POS responds with 200 OK
# 3. Check traceability using order_code from the notification
curl -s -X GET \
"https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/ISRQHPPK1" \
-H "Authorization: $ACCESS_TOKEN" | jq .
# Result:
# {
# "orderCode": "ISRQHPPK1",
# "orderReceived": true, ← order arrived in the system
# "sentToPos": true, ← was sent to POS
# "posResponse": "{...}", ← POS response
# "status": "EXECUTED" ← processing complete
# }