Reference
Orders
List orders with line items, advance their status through the kitchen lifecycle, and issue full refunds. Status changes and refunds fire webhook events.
GET
/api/v1/ordersPaginated list of orders, including pre-orders, with line items.
Query: restaurantId, status, limit (≤100), cursor
200 OK
{
"data": [
{
"id": "clo...",
"restaurantId": "clw...",
"bookingId": null,
"type": "TAKEAWAY",
"status": "DELIVERED",
"subtotal": 24.00,
"tax": 2.40,
"tip": 0,
"total": 26.40,
"currency": "EUR",
"paidAt": "2025-12-21T19:45:12.000Z",
"refundedAt": null,
"createdAt": "2025-12-21T19:30:00.000Z",
"items": [
{ "id": "...", "menuItemId": "...", "name": "Carbonara", "quantity": 2, "price": 12.00, "notes": null }
]
}
],
"nextCursor": null
}PATCH
/api/v1/orders/{id}/statusAdvance an order's status. Fires order.status_changed.
cURL
curl -X PATCH https://www.openalacarte.com/api/v1/orders/clo.../status \
-H "Authorization: Bearer oac_live_<your-key>" \
-H "Content-Type: application/json" \
-d '{"status":"PREPARING"}'Transitions: PENDING → CONFIRMED → PREPARING → READY → DELIVERED, plus CANCELLED from any non-terminal state. REFUNDED is reached via the refund endpoint.
POST
/api/v1/orders/{id}/refundFull refund on a paid order. The restaurant's Stripe Connect balance is debited and the platform fee is auto-reversed. Fires order.refunded.
cURL
curl -X POST https://www.openalacarte.com/api/v1/orders/clo.../refund \
-H "Authorization: Bearer oac_live_<your-key>" \
-H "Content-Type: application/json" \
-d '{"reason":"Wrong item delivered"}'