Order field reference
Shape of the order objects returned by
GET /v1/orders (as items[]) and
GET /v1/orders/:id. All fields are read-only — the
only mutation the API offers is the
status update.
Conventions
All money fields are integers in minor currency units
(kopecks, cents) in the order's currency. All timestamps
are ISO 8601 UTC. Product and ingredient references use the
externalIds you synced;
items ordered from a manually created product have
productExternalId: null.
Order#
| Field | Type | Meaning |
|---|---|---|
id | string | DuckHub order id — use it for GET /v1/orders/:id and status updates |
orderNumber | string | Short human-readable number shown to guests and staff |
status | string | new | confirmed | preparing | delivering | completed | cancelled |
type | string | delivery | pickup | dine_in |
customerName | string | null | |
customerPhone | string | null | |
customerEmail | string | null | |
deliveryAddress | string | null | Set for delivery orders |
deliveryNotes | string | null | Courier instructions |
paymentMethod | string | cash | terminal | online |
comment | string | null | Guest's note to the kitchen |
changeFromAmount | integer | null | For cash payments: the bill the guest pays with (minor units) |
scheduledFor | string | null | Requested delivery/pickup time; null = ASAP |
currency | string | ISO 4217, frozen at order creation |
subtotalAmount | integer | Sum of item totalPrices |
deliveryFee | integer | |
discountAmount | integer | |
totalAmount | integer | subtotal + deliveryFee − discount |
createdAt | string | Order creation time |
updatedAt | string | Bumped on every change — the polling cursor |
confirmedAt | string | null | Set on the first transition to confirmed |
completedAt | string | null | Set on the first transition to completed |
items | OrderItem[] | See below |
OrderItem#
A snapshot taken at order time — later menu edits never change past orders.
| Field | Type | Meaning |
|---|---|---|
productExternalId | string | null | Your product id; null for manually created products |
productName | string | Product name at order time |
quantity | integer | |
unitPrice | integer | Per-unit price including selected modifiers (minor units) |
totalPrice | integer | unitPrice × quantity |
modifiers | OrderModifier[] | Selected options; empty array if none |
OrderModifier#
| Field | Type | Meaning |
|---|---|---|
groupName | string | Modifier group name at order time |
ingredientExternalId | string | null | Your ingredient id; null for manually created ingredients or old orders |
ingredientName | string | Ingredient name at order time |
priceAdjustment | integer | Minor units; may be negative |
quantity | integer | How many times the option was applied |
Statuses#
| Status | Meaning |
|---|---|
new | Just placed — awaiting the venue's confirmation |
confirmed | Accepted by the venue |
preparing | In the kitchen |
delivering | Out for delivery |
completed | Fulfilled (terminal) |
cancelled | Cancelled (terminal) |
Allowed transitions are listed on the status update page.