Orders API

Order processing and lifecycle

GET/api/orders

List orders

Query Parameters

locationIdstatusorderTypestartDateendDatepagelimit

Response

{
  "data": [
    {
      "id": "uuid",
      "orderNumber": "#1043",
      "status": "COMPLETED",
      "orderType": "DINE_IN",
      "subtotal": 24.5,
      "total": 26.22,
      "createdAt": "2026-03-21T14:30:00Z"
    }
  ],
  "total": 156,
  "page": 1,
  "limit": 20
}
GET/api/orders/{id}

Get order details

Response

{
  "id": "uuid",
  "orderNumber": "#1043",
  "status": "COMPLETED",
  "orderType": "DINE_IN",
  "tableId": "uuid",
  "items": [
    {
      "id": "uuid",
      "productId": "uuid",
      "name": "Espresso",
      "quantity": 2,
      "unitPrice": 3.5,
      "total": 7
    }
  ],
  "subtotal": 24.5,
  "taxAmount": 1.72,
  "total": 26.22,
  "payments": [
    {
      "id": "uuid",
      "amount": 26.22,
      "method": "CARD",
      "cardLastFour": "4242"
    }
  ],
  "createdAt": "2026-03-21T14:30:00Z"
}
POST/api/orders

Create a new order

Request Body

{
  "orderType": "DINE_IN | TAKEOUT | DELIVERY | BAR_TAB",
  "tableId": "uuid (optional)",
  "customerId": "uuid (optional)",
  "guestCount": "number (optional)",
  "notes": "string (optional)"
}

Response

{
  "id": "uuid",
  "orderNumber": "#1044",
  "status": "DRAFT",
  "orderType": "DINE_IN",
  "items": [],
  "createdAt": "2026-03-21T15:00:00Z"
}
POST/api/orders/{id}/items

Add item to order

Request Body

{
  "productId": "uuid",
  "quantity": "number",
  "variantId": "uuid (optional)",
  "modifiers": "array of { modifierOptionId: uuid, name: string, price: number } (optional)",
  "notes": "string (optional)"
}

Response

{
  "id": "uuid",
  "productId": "uuid",
  "name": "Espresso",
  "quantity": 2,
  "unitPrice": 3.5,
  "total": 7,
  "modifiers": []
}
PUT/api/orders/{id}/items/{itemId}

Update order item

Request Body

{
  "quantity": "number (optional)",
  "notes": "string (optional)",
  "status": "PENDING | SENT | PREPARING | READY | SERVED | VOIDED (optional)"
}

Response

{
  "id": "uuid",
  "quantity": 3,
  "total": 10.5,
  "updatedAt": "2026-03-21T15:05:00Z"
}
DELETE/api/orders/{id}/items/{itemId}

Void order item

Request Body

{
  "reason": "string"
}

Response

{
  "success": true,
  "message": "Item voided"
}
POST/api/orders/{id}/send

Send order to kitchen

Response

{
  "success": true,
  "kitchenOrderId": "uuid",
  "sentItems": 3
}
POST/api/orders/{id}/payments

Process payment for order

Request Body

{
  "amount": "number",
  "paymentMethod": "CASH | CARD | GIFT_CARD | LOYALTY | STORE_CREDIT",
  "tipAmount": "number (optional)",
  "processorTransactionId": "string (optional)",
  "cardLastFour": "string (optional)",
  "cardBrand": "string (optional)"
}

Response

{
  "id": "uuid",
  "amount": 26.22,
  "tipAmount": 5,
  "paymentMethod": "CARD",
  "status": "COMPLETED",
  "processedAt": "2026-03-21T15:10:00Z"
}
POST/api/orders/{id}/discount

Apply discount to order

Request Body

{
  "discountAmount": "number",
  "discountCode": "string (optional)"
}

Response

{
  "orderId": "uuid",
  "discountAmount": 5,
  "newTotal": 21.22
}
POST/api/orders/{id}/transfer

Transfer order to another table

Request Body

{
  "tableId": "uuid"
}

Response

{
  "orderId": "uuid",
  "previousTableId": "uuid",
  "newTableId": "uuid"
}
POST/api/orders/{id}/complete

Mark order as completed

Response

{
  "id": "uuid",
  "status": "COMPLETED",
  "completedAt": "2026-03-21T15:15:00Z"
}
DELETE/api/orders/{id}

Cancel order

Request Body

{
  "reason": "string"
}

Response

{
  "success": true,
  "message": "Order cancelled",
  "refundAmount": 26.22
}