Update KDS Order Over Local Network

How To Update a KDS Orders Using TCP

Update KDS Order Over Local Network

Overview

After sending a KDS order to a screen you can update the content of the order using the update-order command and supplying the updated order payload. You will need to re-send the entier order payload, including fields that have not changed.

The lineId property is used to add, update, or delete menu items. To delete menu items from an order remove the item’s lineId from the items array. To add menu items to an order add an additional item with a new lineId to the items array.

Port Protocol
9104 TCP

Body Parameters

Property Required Type Description
command yes string accepted values: create-order, update-order, cancel-order
order yes Order object containing KDS order data

command property added in version 2.21.30, for backwards compatibility default value is create-order

Order

Property Required Type Description
id yes string unique id of the KDS order to update
name yes string order/customer name
time yes int milliseconds since epoch
pickupTime no date date/time for order pickup in ISO 8601 format
phoneNumber no string customer phone number in E.164 format
optInForSms no bool if false KDS will not message customer for this order; default is true
deliveryAddress no string delivery address for order
mode yes string accepted values: For Here, ToGo, Pickup, DriveThru, Delivery, Curbside
deliveryHandoff no bool if mode is Delivery and this is true order will display as Delivery Handoff
server no string name of employee creating the order
items yes KdsItem[] array of menu items
terminal no string POS terminal creating the order
specialInstructions no string special instructions for the order
customerArrivedUrl no url if present the URL will be added to the order received and order ready messages
vehicleModel no string vehicle make and model
vehicleColor no string vehicle color
costs no Costs object with order costs
deliveryService no DeliveryService object with delivery service information
originSource no string optional parameter that gets appended to the order name
checkNumber no string optional parameter that gets appended to the order name
priority no bool if true order card will be flagged as priority and moved to front of queue

KDS Item

Property Required Type Description
id no string id of item
lineId no string must be unique within the order; used for processing order update command
name yes string name of item
qty yes int quantity of item
price no string price of item; can include currency symbol
mods yes Modifier[] array of item modifiers; send empty array for items without modifiers
specialInstructions no string special instructions for item
course no string course name/number of the item
courseStatus no string valid values are “straightFire”, “hold”, “fire”, and “pickup”
seat no string seat number of the item

Modifier

Property Required Type Description
id no string id of modifier
name yes string name of modifier

previously item.mods was a string[], which is still supported for backwards compatibility

Costs

Property Required Type Description
subtotal no string subtotal of order
tax no string tax on order
deliveryFee no string delivery fee on order
surcharge no string surcharge on order
convenienceFee no string convenience fee on order
tip no string tip on order
additionalFees no additionalFees[] array of additional fees
total no string total of order
promoCodes no promoCodes[] array of promo codes on order

all properties in the Costs object are strings and can include currency symbols for display

Additional Fees

Property Required Type Description
name yes string name of fee
amount yes string amount of fee; can include currency symbol

Promo Codes

Property Required Type Description
name no string name of promo code
amount yes string amount of promo; can include currency symbol

Delivery Service

Property Required Type Description
name yes string name of delivery service
orderId yes string delivery service order ID
driverPhone no string delivery driver phone number in E.164 format

Example

{
	"command": "update-order",
	"order": {
		"id": "123",
		"name": "Jane Doe",
		"time": 1551454803184,
		"pickupTime": "2023-04-03T14:15:00.000Z",
		"phoneNumber": "+16155551234",
		"mode": "Pickup",
		"items": [{
				"lineId": "1",
				"name": "Hamburger",
				"qty": 1,
				"mods": ["No Ketchup", "Side Fries"],
				"course": "Course 2",
				"seat": "Seat 1",
                                "courseStatus": "fire"
			},
			{
				"lineId": "2",
				"name": "Chocolate Shake",
				"qty": 1,
				"mods": [],
				"course": "Course 3",
				"seat": "Seat 1",
				"courseStatus": "hold"
			},
			{
				"lineId": "3",
				"name": "Onion Rings",
				"qty": 1,
				"mods": ["BBQ Sauce"],
				"course": "Course 1",
				"seat": "For Table",
				"courseStatus": "fire"
			}

		]
	}
}

Responses

Response Type Response Value
Success order.id value
Failure Unable to parse data
Failure ORDER_DOES_NOT_EXIST - The order.id sent in the update request does not exist on the device

Screen Behavior

  • if the KDS order has already been bumped from the screen the update-order command will be ignored
  • if completed items on the KDS order are edited or deleted the completed state will be removed and replaced with the edited or deleted state