Skip to content

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/orders

Paginated 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}/status

Advance 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}/refund

Full 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"}'