Test Stores
FROM THE PORTAL
Every step below can also be done from the portal, in the Profile → Allocate Test Store menu, without API calls. The webhook for test orders is configured only from the portal. See Test Store.
The middleware provides an automatic test store allocation mechanism. Test stores run on the production infrastructure but in a dedicated test zone (fake city). All orders placed on these stores are test orders, not real customer orders.
KEY POINTS
- Test stores use the production environment, not a staging server
- Stores are located in a fake city zone — they don't serve real customers
- All orders are test orders — no real transactions occur
- This allows testing with real infrastructure without affecting production data
Workflow
1. Allocate a test store → POST /api/v3/test-stores/allocate
2. Set the webhook URL and token → from the portal (Profile → Allocate Test Store)
3. Place test orders → through the Glovo app
4. Verify order traceability → GET /api/v3/orders/traceability/{orderCode}
5. Release the store when done → POST /api/v3/test-stores/release/{id}What You Receive on Allocation
| Field | Usage |
|---|---|
notificationUrl | URL test orders are sent to, as set in the portal. Empty right after a new allocation |
notificationToken | Token chosen in the portal, sent in the Authorization header of each test order |
accessToken | Token for the traceability API — verify order processing status |
storeId | Allocated store ID (e.g., gi__001) |
storeDeepLink | Deep link to the store in the Glovo app |
Authentication
| Endpoint | Token Used |
|---|---|
| Allocate / Release / Available | POS integration token (provided by the integration team) |
| Order traceability | accessToken received on allocation |
Limits
| Limit | Value |
|---|---|
| Allocation duration | 2 weeks (then auto-expires) |
| Traceability rate limit | 10 requests/hour per access token |
| Simultaneous stores | 1 per POS (normally) |
1. Allocate a Test Store
POST /api/v3/test-stores/allocate
curl -X POST "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/test-stores/allocate" \
-H "Authorization: YOUR_INTEGRATION_TOKEN" \
-H "Content-Type: application/json"import requests
url = "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/test-stores/allocate"
headers = {"Authorization": "YOUR_INTEGRATION_TOKEN"}
response = requests.post(url, headers=headers)
data = response.json()
print(f"Store ID: {data['storeId']}")
print(f"Notification URL: {data['notificationUrl']}")
print(f"Access Token: {data['accessToken']}")Response (200 OK):
{
"testStoreId": "67890abcdef",
"storeId": "gi__001",
"accessToken": "xJk9sM2nP4qR7vW1yZ3aB5cD8eF0gH2iJkLmNoPqRsTuVwXyZ",
"allocatedAt": "2026-03-11T10:00:00",
"expiresAt": "2026-03-25T10:00:00",
"notificationUrl": "https://your-pos.com/webhook/orders",
"notificationToken": "Bearer glovo-test-notification-token",
"storeName": "Test Store - GI 001",
"partnerCode": "gi",
"address": "Bucharest, Romania",
"glovoAppUrl": "https://glovoapp.com",
"storeDeepLink": "glovo://store/gi__001",
"instructions": {
"title": "Test Store Setup Instructions",
"userAccountInfo": "...",
"autoAcceptInfo": "...",
"traceabilityInfo": "...",
"supportContact": "For assistance, contact: pos.integrations@appsmart.ro"
}
}| Status | Description |
|---|---|
200 | Store allocated successfully |
401 | Invalid or inactive token |
503 | No test stores available |
2. Configure POS and Place Orders
After allocation:
- In the portal, under Profile → Allocate Test Store, enter the URL of the POS endpoint that receives test orders and a token of your choice (details)
- Configure your POS to validate the token on the
Authorizationheader - Start your server
Create a Test Account
IMPORTANT
To view and order from the test store, you must create a separate Glovo user account. Do not use your regular account used for placing personal orders.
Steps to create a test account:
- Go to https://glovoapp.com/
- Create a new account using an email address you don't use for regular Glovo orders
- After the first login, go to your profile settings
- Add a phone number (required for placing orders)
- Verify the phone number to enable ordering
TIP
Use a dedicated test account to avoid mixing test orders with personal orders and to ensure proper testing of the integration flow.
Find the Test Store
Test stores are located in a fake city zone within the Glovo production environment. To find your allocated test store:
- Location coordinates:
44.401341, 26.369141 - Set your delivery address near these coordinates in the Glovo app
- Search for the store by name (provided in the allocation response)
WARNING
Only test accounts can see and order from these stores. Regular Glovo users cannot access them.
Receiving Orders
Test orders arrive at notificationUrl in the standard notification format (details):
POST <notificationUrl>
Authorization: <notificationToken>
Content-Type: application/json
{
"order_id": "616342127",
"store_id": "gi__001",
"order_code": "TEST123456",
...
}TIP
- Always verify that the
Authorizationheader is the token set in the portal - Respond with
200 OKif you accepted the order - The Autoaccept configuration is disabled by default. If you need it enabled, contact the integration team
Menu Update for Test Stores
To update the menu for a test store, send the JSON payload to the production endpoint:
Endpoint: POST https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/menu/upload
curl -X POST "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/menu/upload" \
-H "Authorization: YOUR_INTEGRATION_TOKEN" \
-H "Content-Type: application/json" \
-d @menu-payload.jsonFor the complete menu JSON format, see Menu JSON Format.
3. Order Traceability
Verify that an order was processed correctly in the Glovo system.
GET /api/v3/orders/traceability/{orderCode}
curl -X GET "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/TEST123456" \
-H "Authorization: xJk9sM2nP4qR7vW1yZ3aB5cD8eF0gH2iJkLmNoPqRsTuVwXyZ"import requests
url = "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/TEST123456"
headers = {"Authorization": access_token}
response = requests.get(url, headers=headers)
trace = response.json()
print(f"Status: {trace['status']}")
print(f"Sent to POS: {trace['sentToPos']}")
print(f"POS Response: {trace['posResponse']}")Response (200 OK):
{
"orderCode": "TEST123456",
"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"
}| Field | Type | Description |
|---|---|---|
orderCode | String | Order code |
storeId | String | Store ID |
receivedTime | DateTime | When the order was received from Glovo |
orderReceived | Boolean | true if the order was received |
executedTime | DateTime | When it was sent to POS |
sentToPos | Boolean | true if it was sent to POS |
posResponse | String | POS response (JSON string) |
status | String | RECEIVED, EXECUTED, or ERROR |
| Status | Description |
|---|---|
200 | Traceability information returned |
401 | Invalid access token |
404 | Order not found or doesn't belong to your store |
429 | Rate limit exceeded (max 10 requests/hour) |
4. Release Store
When you've finished testing, release the store for other partners.
POST /api/v3/test-stores/release/{testStoreId}
curl -X POST "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/test-stores/release/67890abcdef" \
-H "Authorization: YOUR_INTEGRATION_TOKEN"Response (200 OK):
{
"message": "Test store released successfully"
}| Status | Description |
|---|---|
200 | Store released successfully |
401 | Invalid token |
404 | Allocation not found or not owned by you |
INFO
If you forget to release the store, the allocation auto-expires after 2 weeks.
5. Available Stores
Check how many stores are available for allocation.
GET /api/v3/test-stores/available
curl -X GET "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/test-stores/available" \
-H "Authorization: YOUR_INTEGRATION_TOKEN"Response (200 OK):
[
"partner__test_store_001",
"partner__test_store_002",
"partner__test_store_003"
]Complete Testing Flow
# 1. Allocate store
RESPONSE=$(curl -s -X POST "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/test-stores/allocate" \
-H "Authorization: YOUR_TOKEN")
# 2. Extract data
STORE_ID=$(echo $RESPONSE | jq -r '.storeId')
ACCESS_TOKEN=$(echo $RESPONSE | jq -r '.accessToken')
TEST_STORE_ID=$(echo $RESPONSE | jq -r '.testStoreId')
echo "Allocated store: $STORE_ID"
# 3. Set the webhook URL and token from the portal (Profile → Allocate Test Store)
# 4. Place test orders through the Glovo app
# 5. Check traceability
curl -X GET "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/orders/traceability/ORDER_CODE" \
-H "Authorization: $ACCESS_TOKEN"
# 6. Release the store
curl -X POST "https://prod.store-management.glovo.alb.app.onlineservice.io/api/v3/test-stores/release/$TEST_STORE_ID" \
-H "Authorization: YOUR_TOKEN"FAQ
How long can I use a test store? The allocation auto-expires after 2 weeks. You can allocate again if needed.
What happens if I forget to release the store? The allocation auto-expires and the store becomes available for other partners.
Why am I getting 429 on traceability? There is a limit of 10 requests per hour. Wait for the time specified in the retryAt field.
How do I get an integration token? Contact the integrations team at pos.integrations@appsmart.ro.
Support
For technical assistance: pos.integrations@appsmart.ro