---
title: "Update a order by ID"
method: PATCH
path: "/v1/order/{id}"
tags: ["Order"]
---

# Update a order by ID

`PATCH /v1/order/{id}`

## Request

- Base URL: `https://api.finalpos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.finalpos.com/v1/order/{id}`
- Auth: API key in header `x-api-key`

Updates an existing order record.

## Path parameters

- `id` string, required

## Request body

- OrderUpdateDto
  - `receiptId` string: Receipt ID of the Order.
  - `paymentState` string: Order payment state. Closed vocabulary: unpaid, payment_pending, partially_paid, paid, partially_refunded, refunded, voided.
  - `fulfillmentState` string: Order fulfillment state. Closed vocabulary: draft, pending, on_hold, in_progress, fulfilled, partially_fulfilled, returned, partially_returned, cancelled.
  - `completedAt` string: Timestamp the order reached its terminal paid + fulfilled state. Receipt "datetime" binds here. Distinct from createdAt (cart created) and updatedAt (any mutation).
  - `sourceUpdatedAt` string: The external source's last-modified timestamp for this order (e.g. Woo date_modified / Shopify updated_at). Used to suppress out-of-order webhook redelivery on ingestion.
  - `sourceCreatedAt` string: The external source's creation timestamp for this order (e.g. Lightspeed createTime / Woo date_created). Historical anchor; distinct from the record's own createdAt (import time).
  - `customerId` string: Customer ID of the Order.
  - `source` string: Source of the Order. Closed vocabulary: in-store, public-api
  - `sessionId` string: Session ID of the Order.
  - `balance` number: Balance amount of the Order in minor currency units (e.g., cents for USD).
  - `externalId` string: External ID associated with the Order when synced from external source. If present, it will set fromFinal to true.
  - `customerNote` string: Customer note of the Order.
  - `parkReduceStock` string: When the order is parked, the stock will be reduced by this amount. If 0, the stock will not be reduced.
  - `parkExpiryDate` string: Expiry date of the parked order.
  - `signature` string: Signature of the Order in Base64 format.
  - `summary` OrderSummaryDto
    - `subTotal` number: Legacy subtotal field. Retained for backward compatibility but not recommended for use in new development.
    - `discountTotal` number, required: Total discount amount of the Order in minor currency units (e.g., cents for USD).
    - `shippingTotal` number: Total shipping amount of the Order in minor currency units (e.g., cents for USD).
    - `total` number, required: Total amount of the Order in minor currency units (e.g., cents for USD).
    - `totalTaxes` number, required: Total taxes amount of the Order in minor currency units (e.g., cents for USD).
    - `isTaxInclusive` boolean, required: Flag to indicate if the order is tax inclusive.
    - `subtotalAfterFees` number, required: Math intermediate used in total derivation: grossSales + feesTotal (BEFORE discounts and tax). Receipts MUST NOT bind to this — receipts use grossSales for the items-only "Subtotal" line. Renamed from legacy `subTotal` for v16 to disambiguate from the receipt-subtotal concept.
    - `nonRevenueTotal` number: Total of non-revenue items (e.g. gift card sales) in minor currency units; typically the sum of nonRevenueItems[].amount.
    - `grossSales` number: Sum of (lineItems[].price × quantity) + (customSales[].price × quantity) in minor currency units. Mode-agnostic basis (reflects displayed prices: ex-tax in Excl, tax-included in Incl).
    - `modifiersTotal` number: Sum of lineItems[].modifiers[].total in minor currency units — modifier value attached to product lines (FT-0010). Tracked separately from grossSales (which is price × quantity only). Custom sales carry no modifiers.
    - `lineDiscountTotal` number: Sum of lineItems[].discount.itemDiscount.amount in minor currency units. Custom sales contribute zero (no item-level discount on custom sales).
    - `cartDiscountTotal` number: Order-level cart discount amount in minor currency units (= cartDiscount?.amount). Sums to discountTotal together with lineDiscountTotal.
    - `feesTotal` number: Aggregate of all sales-side fees in minor currency units (= lineFeesTotal + cartFeesTotal).
    - `lineFeesTotal` number: Sum of lineItems[].fee.itemFee.amount in minor currency units. lineItems[].fee.cartFee is always zero in this codebase and is ignored.
    - `cartFeesTotal` number: Sum of order-root cartFees[].amount in minor currency units. customSales[].fee.cartFee is an allocation of these and is not summed separately.
    - `taxableFeesTotal` number: Sum of fee amounts that have an associated taxTableId in minor currency units. Splits feesTotal into taxable / non-taxable for report attribution.
    - `nonTaxableFeesTotal` number: Sum of fee amounts that have no associated taxTableId in minor currency units.
    - `taxableModifiersTotal` number: Sum of lineItems[].modifiers[].total for rows with a non-empty taxes[]. Parity with taxableFeesTotal; a row inherits the product tax table unless it names its own.
    - `nonTaxableModifiersTotal` number: Sum of lineItems[].modifiers[].total for rows with no taxes[]. taxable + nonTaxable = modifiersTotal.
    - `totalTaxableSales` number: Sum of (price × qty) for line items + custom sales that have at least one tax bucket (includes zero-rated). Mode-agnostic.
    - `totalNonTaxableSales` number: Sum of (price × qty) for line items + custom sales with NO tax bucket at all (exempt). Mode-agnostic.
    - `tipTotal` number: Sum of paymentMethods[].tip.amount in minor currency units. Per-payment tip remains the source of truth on paymentMethods[]; this is the rolled-up aggregate. Mode-agnostic.
    - `cashRounding` number: Signed sum of paymentMethods[].cashRounding in minor currency units. Sales rounding typically negative; refund rounding (in RefundSummary) typically positive.
    - `payments` OrderSummaryPaymentsDto
      - `cardTotal` number: Sum of paymentMethods[].amount for card-family payment types (Terminal, TapToPay, Moto, Cloud, Bluetooth) in minor currency units.
      - `cashTotal` number: Sum of paymentMethods[].amount for cash payment type in minor currency units.
      - `customTotal` number: Sum of paymentMethods[].amount for non-integrated custom payment types (excludes liability tenders) in minor currency units.
      - `cardProcessingFeesTotal` number: Sum of paymentMethods[].processorFee for card-family payments in minor currency units.
    - `totalBeforeTip` number: Customer-facing receipt TOTAL line, before tip. Excl: grossSales − discountTotal + feesTotal + totalTaxes + nonRevenueTotal. Incl: grossSales − discountTotal + feesTotal + nonRevenueTotal (taxes already embedded in grossSales). Equals `total − tipTotal`.
    - `amountPaid` number: Sum of paymentMethods[].amount in minor currency units. Equals `total` when the order is fully paid. Receipt "Amount paid" line binds here. Includes liability tenders so the identity holds; pure settlement totals live on `payments.{cardTotal, cashTotal, customTotal}`.
    - `taxes` OrderTaxDto[], required: Taxes associated with the Order.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `tip` OrderTipDto
      - `percentage` number: Percentage of the tip.
      - `amount` number: Amount of the tip in minor currency units (e.g., cents for USD).
      - `tipTo` string: ID of the tip to.
  - `cartDiscount` OrderCartDiscountDto
    - `amount` number, required: Amount of the cart discount in minor currency units (e.g., cents for USD).
    - `percentage` number, required: Percentage of the cart discount.
    - `label` string: Label of the cart discount.
  - `cartFees` OrderCartFeeDto[]: Cart fees of the Order.
    - `label` string, required: Label of the cart fee.
    - `id` string, required: ID of the cart fee.
    - `percentage` number, required: Percentage of the cart fee.
    - `amount` number, required: Amount of the cart fee in minor currency units (e.g., cents for USD).
    - `taxName` string: Name of the tax.
    - `taxTableId` string: ID of the tax table.
    - `tax` number: Tax of the cart fee in minor currency units (e.g., cents for USD).
    - `taxes` OrderTaxDto[]: Per-rate tax breakdown (e.g. gst, hst) so order/refund summary can show correct amounts per rate.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
  - `paymentMethods` OrderPaymentMethodDto[]: Payment methods of the Order.
    - `paymentType` string, required: Type of the payment method.
    - `amount` number, required: Amount of the payment method in minor currency units (e.g., cents for USD).
    - `transactionId` string: Transaction ID of the payment method.
    - `timestamp` string: Date and time of the payment method.
    - `emv` string: EMV of the payment method.
    - `cashRounding` number: Cash rounding of the payment method.
    - `change` number: Change of the payment method in minor currency units (e.g., cents for USD).
    - `processor` string: Processor of the payment method.
    - `provider` 'stripe' | 'adyen' | 'external': PSP that captured this payment (stripe | adyen). Absent on records written before multi-provider support — readers must treat absence as stripe. Orthogonal to `processor` (the FinalPay brand stamp, identical across PSPs).
    - `processorFee` number: Processor fee of the payment method in minor currency units (e.g., cents for USD).
    - `tendered` number: What the customer physically presented for this payment leg. Cash legs: amount + change. Non-cash legs: equal to amount. Receipt "Cash tendered" line binds here.
    - `tip` OrderTipDto
      - `percentage` number: Percentage of the tip.
      - `amount` number: Amount of the tip in minor currency units (e.g., cents for USD).
      - `tipTo` string: ID of the tip to.
  - `posData` OrderPosDataDto
    - `outlet` string: Outlet ID of the order.
    - `station` string: Station ID of the order.
    - `employee` string: Employee ID of the order.
  - `metadata` MetadataDto[]: Metadata associated with the Customer.
    - `key` string, required: Key of the metadata entry.
    - `value` string, required: Value of the metadata entry.
    - `externalId` string: External ID associated with the metadata entry.
  - `notes` OrderNoteDto[]: Notes associated with the Order.
    - `author` string, required: Author of the note.
    - `note` string, required: Note of the order.
    - `externalId` string: External ID of the note.
    - `addedByUser` boolean, required: Added by user of the note.
    - `dateCreated` string, required: Date created of the note.
    - `customerNote` boolean: Customer note of the order.
  - `billing` AddressDto
    - `address1` string, required: Street address line 1
    - `city` string, required: City
    - `postCode` string, required: Postal/ZIP code
    - `country` string, required: Country
    - `state` string, required: State/Province
    - `address2` string: Street address line 2
    - `phone` string: Phone number
  - `shipping` AddressDto
    - `address1` string, required: Street address line 1
    - `city` string, required: City
    - `postCode` string, required: Postal/ZIP code
    - `country` string, required: Country
    - `state` string, required: State/Province
    - `address2` string: Street address line 2
    - `phone` string: Phone number
  - `lineItems` OrderLineItemDto[]: Line items associated with the Order.
    - `productId` string: ID of the product.
    - `variantId` string: ID of the variant.
    - `name` string: Name of the line item.
    - `quantity` number: Quantity of the line item in this order.
    - `manageStock` boolean: Whether the line item manages stock.
    - `price` number: Price of the line item in minor currency units (e.g., cents for USD).
    - `description` string: Description of the line item.
    - `sku` string: SKU of the line item.
    - `totalTax` number: Total tax of the line item in minor currency units (e.g., cents for USD).
    - `total` number: Total of the line item in minor currency units (e.g., cents for USD).
    - `productExternalId` string: External ID of the product.
    - `variantExternalId` string: External ID of the variant.
    - `lineItemExternalId` string: External ID of the line item.
    - `internalId` string: Internal ID of the line item.
    - `note` string: Note of the line item.
    - `image` string: Image of the line item.
    - `attributes` string: Attributes of the line item.
    - `taxes` OrderTaxDto[]: Taxes associated with the Order.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `discount` OrderLineItemDiscountDto
      - `itemDiscounts` PriceModifierDetailDto[]: Item-level discounts. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to price × quantity, non-compounding).
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `cartDiscount` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `fee` OrderLineItemFeeDto
      - `cartFee` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `itemFees` PriceModifierDetailDto[]: Item-level fees. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to post-discount line base, non-compounding). Each fee can carry its own tax behavior.
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `modifiers` OrderLineItemModifierDto[]: Selected product-modifier choices on this line (one entry per chosen choice). NOT fees: kept out of `fee.itemFees` so fee consumers never see modifier money. The amounts are already included in the line item total/totalTax — see OrderLineItemModifier for the money invariant.
      - `modifierId` string, required: The modifier (the question, e.g. "Toppings") this selection answers.
      - `modifierName` string, required: Modifier name snapshot at sale time (renames never rewrite order history).
      - `choiceId` string, required: The chosen choice (embedded choice _id inside the modifier document).
      - `choiceName` string, required: Choice name snapshot at sale time — this is what prints on the receipt and kitchen ticket.
      - `unitPrice` number, required: Per-unit surcharge in minor currency units (e.g. cents for USD): the price of ONE unit of this choice on ONE unit of the line item. 0 is valid and recorded — a free choice such as "No pickles" still prints.
      - `quantity` number, required: Units of this choice per single line-item unit. 1 for single/multiple-selection modifiers; the stepper count for quantity-type modifiers (e.g. Extra shot ×2).
      - `total` number, required: Extended amount for the WHOLE line in minor currency units: unitPrice × quantity × lineItem.quantity. Included in the line item's total (see the money invariant on this schema).
      - `totalTax` number: Tax computed on `total` in minor currency units — Σ taxes[].amount. Included in the line item's totalTax.
      - `taxes` OrderTaxDto[]: Per-rate breakdown of totalTax, one bucket per rate that taxed this modifier row — a row can carry several tax groups. The amounts are already inside the parent line item's taxes[] buckets; never add them on top a second time.
        - `name` string, required: Name of the tax.
        - `taxTableId` string: ID of the tax table.
        - `taxTableName` string: Name of the tax table.
        - `id` string: ID of the tax.
        - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
        - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
        - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
        - `compounding` boolean: Flag to indicate if the tax is compounding.
        - `priority` number: Priority of the tax.
        - `_id` string
      - `componentIndex` number: On a composite line: index into the line's `components` this modifier applies to (B28) — always set there, a composite has no modifiers of its own (B43). Absent on every other line.
    - `components` OrderLineItemComponentDto[]: A composite line's components (FT-83), per ONE composite; each price is the component's whole share, Σ price = the line's price. Absent on every other line.
      - `productId` string, required: Product picked for this component.
      - `variantId` string, required: Variant picked for this component.
      - `name` string, required: Product name on the day of sale.
      - `attributes` string: Variant attributes as they read on the day of sale.
      - `sku` string: SKU of the component, as on the day of sale.
      - `productExternalId` string: External ID of the product.
      - `variantExternalId` string: External ID of the variant.
      - `partName` string: Part it was picked in ("Side"); absent when the part is untitled.
      - `quantity` number, required: Units of this component in ONE composite.
      - `price` number, required: This component's share of ONE composite's price, minor units, covering all of its quantity (not per unit).
      - `unitId` string: Unit the component was sold in, frozen at sale.
      - `unitAbbreviation` string: Abbreviation of that unit on the day of sale.
      - `unitRatioToBase` number: What one `unitId` was worth in base units on the day of sale.
      - `stockQuantity` number: Whole base units this component takes from its pool in ONE composite (B36d) — `toBase(quantity, unit)`, written by the till at sale; stock moves it × the line quantity. Absent on a by-the-piece component.
      - `stockVariantId` string: Variant whose pool the component drew from; absent when its own.
      - `taxTableId` string: Table that taxed this component with each item's own tax (B30); absent under the composite's tax group.
      - `totalTax` number: Tax on this component for the WHOLE line (all of its quantity, unlike price), minor units — Σ taxes[].amount (B30). Included in the line item's totalTax.
      - `taxes` OrderTaxDto[]: Per-rate breakdown of totalTax for the WHOLE line (all of its quantity), one bucket per rate that taxed this component (B30). The amounts are already inside the parent line item's taxes[] buckets; never add them on top a second time.
        - `name` string, required: Name of the tax.
        - `taxTableId` string: ID of the tax table.
        - `taxTableName` string: Name of the tax table.
        - `id` string: ID of the tax.
        - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
        - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
        - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
        - `compounding` boolean: Flag to indicate if the tax is compounding.
        - `priority` number: Priority of the tax.
        - `_id` string
    - `lineNetWithFees` number: Customer-facing per-line total: (price × quantity) − sum(itemDiscounts) + sum(itemFees). Excludes cart-level discount and tax.
    - `metadata` MetadataDto[]: Metadata associated with the Line Item.
      - `key` string, required: Key of the metadata entry.
      - `value` string, required: Value of the metadata entry.
      - `externalId` string: External ID associated with the metadata entry.
    - `stock` number: Stock of the line item before this order, value is 0 when manageStock is false
    - `subTotal` number: Subtotal of the line item in minor currency units (e.g., cents for USD).
    - `unitId` string: Unit this line was sold in, frozen at the moment of sale.
    - `unitAbbreviation` string: Abbreviation of that unit as it read on the day, for receipts and refunds.
    - `stockQuantity` number: Whole base units taken from the pool for this line. 1.589 kg sold is 1589 here when the family base is the gram.
    - `unitRatioToBase` number: What one `unitId` was worth in base units on the day of sale. Frozen rather than read back from the unit, which the merchant may re-rate; without it a reader can only recover the relation by dividing `quantity` into `stockQuantity`.
    - `stockVariantId` string: Variant whose pool was actually decremented. Null when this line served its own stock.
  - `reservations` OrderReservationDto[]: Booking reservations of this order — a booking sale in full: the time it takes and what was charged for it. Its status lives on the booking hold; cancelling never deletes the order.
    - `productId` string, required: The bookable product sold by this reservation.
    - `internalId` string, required: Client-generated id of this reservation within the order.
    - `bookingId` string: The hold this reservation was sold from.
    - `name` string, required: Name of the service as it was sold.
    - `resourceName` string: Name of the resource as it was at sale time.
    - `price` number, required: Unit price in minor units.
    - `quantity` number: How many periods this row covers.
    - `fulfilledQuantity` number: How many of the sold periods have been performed.
    - `returnedQuantity` number: How many of the sold periods have been refunded.
    - `totalTax` number: Tax charged on this reservation, minor units.
    - `taxes` OrderTaxDto[]: Applied taxes, one entry per rate.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `discount` OrderLineItemDiscountDto
      - `itemDiscounts` PriceModifierDetailDto[]: Item-level discounts. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to price × quantity, non-compounding).
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `cartDiscount` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `fee` OrderLineItemFeeDto
      - `cartFee` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `itemFees` PriceModifierDetailDto[]: Item-level fees. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to post-discount line base, non-compounding). Each fee can carry its own tax behavior.
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `total` number, required: Per-line total: (price × quantity) − item discounts + item fees. Excludes cart discount and tax.
    - `taxTableId` string: Tax table applied at sale time.
    - `resourceId` string, required: The resource whose capacity this reservation occupies.
    - `variantId` string: The variant sold for this reservation ("Haircut with Marco").
    - `startAt` string, required: Start of the booked window (UTC).
    - `endAt` string, required: End of the booked window (UTC).
    - `bufferEndAt` string, required: End of the turnaround buffer (UTC). Equals endAt when the rules have none.
    - `lineItemInternalId` string: internalId of the line item that paid for this window: the composite line whose component booked it (FT-83, B41). Absent on a service sold on its own.
    - `componentIndex` number: Which of that composite line's `components` this booking belongs to (B41). Such a booking carries no money — price and total are 0, the component's share holds them.
    - `override` boolean: Staff force-booked past a full slot.
    - `overriddenBy` string: The staff member who forced the booking.
  - `customSales` OrderCustomSaleDto[]: Custom sales associated with the Order.
    - `customSaleId` string, required: ID of the custom sale.
    - `applyTaxes` boolean, required: Flag to indicate if the custom sale is applied.
    - `quantity` number, required: Quantity of the custom sale.
    - `name` string, required: Name of the custom sale.
    - `price` number, required: Price of the custom sale in minor currency units (e.g., cents for USD).
    - `totalTax` number, required: Total tax of the custom sale in minor currency units (e.g., cents for USD).
    - `total` number, required: Total of the custom sale in minor currency units (e.g., cents for USD).
    - `taxes` OrderTaxDto[]: Taxes of the custom sale.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `discount` OrderCustomSaleDiscountDto
      - `cartDiscount` OrderCartDiscountDto, required
        - `amount` number, required: Amount of the cart discount in minor currency units (e.g., cents for USD).
        - `percentage` number, required: Percentage of the cart discount.
        - `label` string: Label of the cart discount.
    - `fee` OrderCustomSaleFeeDto
      - `cartFee` PriceModifierDetailDto, required
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `charges` ChargeDto[]: Payment charges for the custom sale (one per payment method). In a refund, holds the amount refunded per charge.
      - `chargeId` string, required: Identifier of the charge.
      - `paymentType` string, required: Type of the payment method used for this charge.
      - `amount` number, required: Amount in minor units. On the order = amount paid via this method; in a refund entry = amount refunded from this charge.
      - `transactionId` string: Transaction ID associated with the charge.
      - `processor` string: Processor of the charge.
      - `timestamp` string: Date and time of the charge.
  - `nonRevenueItems` NonRevenueItemDto[]: Non-revenue items collected with the order (e.g., gift card sales are liabilities, not revenue).
    - `externalId` string, required: Unique cart line external id (may differ from extension refId, which is stored in metadata.refId) coming from custom table.
    - `amount` number, required: Amount in minor units (e.g. cents), same convention as cart totals; may be a number or string.
    - `label` string: Display label of the non-revenue item.
    - `metadata` MetadataDto[]: Metadata associated with the Product.
      - `key` string, required: Key of the metadata entry.
      - `value` string, required: Value of the metadata entry.
      - `externalId` string: External ID associated with the metadata entry.
    - `applyTaxes` boolean: When true, tax is calculated for this line (requires taxTableId). Default false — e.g. gift card load is typically non-taxable.
    - `taxTableId` string: Tax table id when applyTaxes is true.
    - `type` 'gift-card': Type of the non-revenue item.
    - `_id` string
  - `refund` OrderRefundDto[]: List of refunds associated with the external order (e.g. from WooCommerce).
    - `externalId` string: External ID of the refund (e.g. from WooCommerce).
    - `reason` string: Reason for the refund.
    - `summary` OrderRefundSummaryDto
      - `total` number: Total amount of the refund (e.g. from external systems like WooCommerce).

## Response `200`

The order has been successfully updated.

- OrderResponseDto
  - `id` string: Unique identifier for the Order.
  - `createdAt` string, date-time: Timestamp when the Order was created.
  - `updatedAt` string, date-time: Timestamp when the Order was last updated.
  - `companyId` string: Company ID associated with the Order.
  - `currency` 'USD' | 'EUR' | 'GBP' | 'CAD' | 'AUD' | 'NZD' | 'CHF' | 'CNY' | 'INR' | 'MXN' | 'BRL' | 'ZAR' | 'SGD' | 'HKD' | 'SEK' | 'NOK' | 'DKK' | 'PLN' | 'THB' | 'MYR' | 'PHP' | 'IDR' | 'AED' | 'SAR' | 'ILS' | 'TRY' | 'RUB' | 'HTG' | 'BND' | 'CRC' | 'BDT' | 'UAH' | 'NGN' | 'AFN' | 'ALL' | 'AMD' | 'ANG' | 'AOA' | 'ARS' | 'AWG' | 'AZN' | 'BAM' | 'BBD' | 'BGN' | 'BMD' | 'BOB' | 'BSD' | 'BTN' | 'BWP' | 'BYN' | 'BZD' | 'COP' | 'CZK' | 'DOP' | 'DZD' | 'EGP' | 'ETB' | 'FJD' | 'GEL' | 'GHS' | 'GTQ' | 'GYD' | 'HNL' | 'IRR' | 'JMD' | 'KES' | 'KGS' | 'KHR' | 'KYD' | 'KZT' | 'LAK' | 'LBP' | 'LKR' | 'MAD' | 'MDL' | 'MKD' | 'MMK' | 'MNT' | 'MOP' | 'MUR' | 'MVR' | 'MZN' | 'NAD' | 'NIO' | 'NPR' | 'PAB' | 'PEN' | 'PGK' | 'PKR' | 'QAR' | 'RON' | 'RSD' | 'SBD' | 'SRD' | 'SYP' | 'TJS' | 'TMT' | 'TOP' | 'TTD' | 'TZS' | 'UYU' | 'UZS' | 'VES' | 'WST' | 'XCD' | 'YER' | 'ZMW' | 'CDF' | 'CUP' | 'ERN' | 'FKP' | 'GIP' | 'GMD' | 'KPW' | 'LRD' | 'LSL' | 'MGA' | 'MWK' | 'SCR' | 'SDG' | 'SHP' | 'SLE' | 'SOS' | 'SSP' | 'STN' | 'SZL' | 'VED' | 'XCG' | 'JPY' | 'KRW' | 'VND' | 'CLP' | 'ISK' | 'HUF' | 'TWD' | 'GNF' | 'BIF' | 'DJF' | 'KMF' | 'PYG' | 'RWF' | 'UGX' | 'VUV' | 'XAF' | 'XOF' | 'XPF' | 'KWD' | 'BHD' | 'OMR' | 'JOD' | 'TND' | 'LYD' | 'IQD': Currency of the Order. ISO 4217 currency code.
  - `receiptId` string: Receipt ID of the Order.
  - `paymentState` string: Order payment state. Closed vocabulary: unpaid, payment_pending, partially_paid, paid, partially_refunded, refunded, voided.
  - `fulfillmentState` string: Order fulfillment state. Closed vocabulary: draft, pending, on_hold, in_progress, fulfilled, partially_fulfilled, returned, partially_returned, cancelled.
  - `stateHistory` OrderStateHistoryEntryDto[]: Chronological snapshots of payment and fulfillment states with POS-reported timestamps.
    - `payment` string, required: Payment state at this point in history.
    - `fulfillment` string, required: Fulfillment state at this point in history.
    - `posTimestamp` string, required: POS-reported timestamp for this state snapshot.
  - `completedAt` string, date-time: Timestamp the order reached its terminal paid + fulfilled state. Receipt "datetime" binds here. Distinct from createdAt (cart created) and updatedAt (any mutation).
  - `sourceUpdatedAt` string, date-time: The external source's last-modified timestamp for this order (e.g. Woo date_modified / Shopify updated_at). Used to suppress out-of-order webhook redelivery on ingestion.
  - `sourceCreatedAt` string, date-time: The external source's creation timestamp for this order (e.g. Lightspeed createTime / Woo date_created). Historical anchor; distinct from the record's own createdAt (import time).
  - `customerId` string: Customer ID of the Order.
  - `source` string: Source of the Order. Closed vocabulary: in-store, public-api
  - `sessionId` string: Session ID of the Order.
  - `balance` number: Balance amount of the Order in minor currency units (e.g., cents for USD).
  - `externalId` string: External ID associated with the Order when synced from external source. If present, it will set fromFinal to true.
  - `customerNote` string: Customer note of the Order.
  - `parkReduceStock` string: When the order is parked, the stock will be reduced by this amount. If 0, the stock will not be reduced.
  - `parkExpiryDate` string: Expiry date of the parked order.
  - `signature` string: Signature of the Order in Base64 format.
  - `summary` OrderSummaryDto
    - `subTotal` number: Legacy subtotal field. Retained for backward compatibility but not recommended for use in new development.
    - `discountTotal` number, required: Total discount amount of the Order in minor currency units (e.g., cents for USD).
    - `shippingTotal` number: Total shipping amount of the Order in minor currency units (e.g., cents for USD).
    - `total` number, required: Total amount of the Order in minor currency units (e.g., cents for USD).
    - `totalTaxes` number, required: Total taxes amount of the Order in minor currency units (e.g., cents for USD).
    - `isTaxInclusive` boolean, required: Flag to indicate if the order is tax inclusive.
    - `subtotalAfterFees` number, required: Math intermediate used in total derivation: grossSales + feesTotal (BEFORE discounts and tax). Receipts MUST NOT bind to this — receipts use grossSales for the items-only "Subtotal" line. Renamed from legacy `subTotal` for v16 to disambiguate from the receipt-subtotal concept.
    - `nonRevenueTotal` number: Total of non-revenue items (e.g. gift card sales) in minor currency units; typically the sum of nonRevenueItems[].amount.
    - `grossSales` number: Sum of (lineItems[].price × quantity) + (customSales[].price × quantity) in minor currency units. Mode-agnostic basis (reflects displayed prices: ex-tax in Excl, tax-included in Incl).
    - `modifiersTotal` number: Sum of lineItems[].modifiers[].total in minor currency units — modifier value attached to product lines (FT-0010). Tracked separately from grossSales (which is price × quantity only). Custom sales carry no modifiers.
    - `lineDiscountTotal` number: Sum of lineItems[].discount.itemDiscount.amount in minor currency units. Custom sales contribute zero (no item-level discount on custom sales).
    - `cartDiscountTotal` number: Order-level cart discount amount in minor currency units (= cartDiscount?.amount). Sums to discountTotal together with lineDiscountTotal.
    - `feesTotal` number: Aggregate of all sales-side fees in minor currency units (= lineFeesTotal + cartFeesTotal).
    - `lineFeesTotal` number: Sum of lineItems[].fee.itemFee.amount in minor currency units. lineItems[].fee.cartFee is always zero in this codebase and is ignored.
    - `cartFeesTotal` number: Sum of order-root cartFees[].amount in minor currency units. customSales[].fee.cartFee is an allocation of these and is not summed separately.
    - `taxableFeesTotal` number: Sum of fee amounts that have an associated taxTableId in minor currency units. Splits feesTotal into taxable / non-taxable for report attribution.
    - `nonTaxableFeesTotal` number: Sum of fee amounts that have no associated taxTableId in minor currency units.
    - `taxableModifiersTotal` number: Sum of lineItems[].modifiers[].total for rows with a non-empty taxes[]. Parity with taxableFeesTotal; a row inherits the product tax table unless it names its own.
    - `nonTaxableModifiersTotal` number: Sum of lineItems[].modifiers[].total for rows with no taxes[]. taxable + nonTaxable = modifiersTotal.
    - `totalTaxableSales` number: Sum of (price × qty) for line items + custom sales that have at least one tax bucket (includes zero-rated). Mode-agnostic.
    - `totalNonTaxableSales` number: Sum of (price × qty) for line items + custom sales with NO tax bucket at all (exempt). Mode-agnostic.
    - `tipTotal` number: Sum of paymentMethods[].tip.amount in minor currency units. Per-payment tip remains the source of truth on paymentMethods[]; this is the rolled-up aggregate. Mode-agnostic.
    - `cashRounding` number: Signed sum of paymentMethods[].cashRounding in minor currency units. Sales rounding typically negative; refund rounding (in RefundSummary) typically positive.
    - `payments` OrderSummaryPaymentsDto
      - `cardTotal` number: Sum of paymentMethods[].amount for card-family payment types (Terminal, TapToPay, Moto, Cloud, Bluetooth) in minor currency units.
      - `cashTotal` number: Sum of paymentMethods[].amount for cash payment type in minor currency units.
      - `customTotal` number: Sum of paymentMethods[].amount for non-integrated custom payment types (excludes liability tenders) in minor currency units.
      - `cardProcessingFeesTotal` number: Sum of paymentMethods[].processorFee for card-family payments in minor currency units.
    - `totalBeforeTip` number: Customer-facing receipt TOTAL line, before tip. Excl: grossSales − discountTotal + feesTotal + totalTaxes + nonRevenueTotal. Incl: grossSales − discountTotal + feesTotal + nonRevenueTotal (taxes already embedded in grossSales). Equals `total − tipTotal`.
    - `amountPaid` number: Sum of paymentMethods[].amount in minor currency units. Equals `total` when the order is fully paid. Receipt "Amount paid" line binds here. Includes liability tenders so the identity holds; pure settlement totals live on `payments.{cardTotal, cashTotal, customTotal}`.
    - `taxes` OrderTaxDto[], required: Taxes associated with the Order.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `tip` OrderTipDto
      - `percentage` number: Percentage of the tip.
      - `amount` number: Amount of the tip in minor currency units (e.g., cents for USD).
      - `tipTo` string: ID of the tip to.
  - `cartDiscount` OrderCartDiscountDto
    - `amount` number, required: Amount of the cart discount in minor currency units (e.g., cents for USD).
    - `percentage` number, required: Percentage of the cart discount.
    - `label` string: Label of the cart discount.
  - `cartFees` OrderCartFeeDto[]: Cart fees of the Order.
    - `label` string, required: Label of the cart fee.
    - `id` string, required: ID of the cart fee.
    - `percentage` number, required: Percentage of the cart fee.
    - `amount` number, required: Amount of the cart fee in minor currency units (e.g., cents for USD).
    - `taxName` string: Name of the tax.
    - `taxTableId` string: ID of the tax table.
    - `tax` number: Tax of the cart fee in minor currency units (e.g., cents for USD).
    - `taxes` OrderTaxDto[]: Per-rate tax breakdown (e.g. gst, hst) so order/refund summary can show correct amounts per rate.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
  - `paymentMethods` OrderPaymentMethodDto[]: Payment methods of the Order.
    - `paymentType` string, required: Type of the payment method.
    - `amount` number, required: Amount of the payment method in minor currency units (e.g., cents for USD).
    - `transactionId` string: Transaction ID of the payment method.
    - `timestamp` string: Date and time of the payment method.
    - `emv` string: EMV of the payment method.
    - `cashRounding` number: Cash rounding of the payment method.
    - `change` number: Change of the payment method in minor currency units (e.g., cents for USD).
    - `processor` string: Processor of the payment method.
    - `provider` 'stripe' | 'adyen' | 'external': PSP that captured this payment (stripe | adyen). Absent on records written before multi-provider support — readers must treat absence as stripe. Orthogonal to `processor` (the FinalPay brand stamp, identical across PSPs).
    - `processorFee` number: Processor fee of the payment method in minor currency units (e.g., cents for USD).
    - `tendered` number: What the customer physically presented for this payment leg. Cash legs: amount + change. Non-cash legs: equal to amount. Receipt "Cash tendered" line binds here.
    - `tip` OrderTipDto
      - `percentage` number: Percentage of the tip.
      - `amount` number: Amount of the tip in minor currency units (e.g., cents for USD).
      - `tipTo` string: ID of the tip to.
  - `posData` OrderPosDataDto
    - `outlet` string: Outlet ID of the order.
    - `station` string: Station ID of the order.
    - `employee` string: Employee ID of the order.
  - `metadata` MetadataDto[]: Metadata associated with the Customer.
    - `key` string, required: Key of the metadata entry.
    - `value` string, required: Value of the metadata entry.
    - `externalId` string: External ID associated with the metadata entry.
  - `notes` OrderNoteDto[]: Notes associated with the Order.
    - `author` string, required: Author of the note.
    - `note` string, required: Note of the order.
    - `externalId` string: External ID of the note.
    - `addedByUser` boolean, required: Added by user of the note.
    - `dateCreated` string, required: Date created of the note.
    - `customerNote` boolean: Customer note of the order.
  - `billing` AddressDto
    - `address1` string, required: Street address line 1
    - `city` string, required: City
    - `postCode` string, required: Postal/ZIP code
    - `country` string, required: Country
    - `state` string, required: State/Province
    - `address2` string: Street address line 2
    - `phone` string: Phone number
  - `shipping` AddressDto
    - `address1` string, required: Street address line 1
    - `city` string, required: City
    - `postCode` string, required: Postal/ZIP code
    - `country` string, required: Country
    - `state` string, required: State/Province
    - `address2` string: Street address line 2
    - `phone` string: Phone number
  - `lineItems` OrderLineItemDto[]: Line items associated with the Order.
    - `productId` string: ID of the product.
    - `variantId` string: ID of the variant.
    - `name` string: Name of the line item.
    - `quantity` number: Quantity of the line item in this order.
    - `manageStock` boolean: Whether the line item manages stock.
    - `price` number: Price of the line item in minor currency units (e.g., cents for USD).
    - `description` string: Description of the line item.
    - `sku` string: SKU of the line item.
    - `totalTax` number: Total tax of the line item in minor currency units (e.g., cents for USD).
    - `total` number: Total of the line item in minor currency units (e.g., cents for USD).
    - `productExternalId` string: External ID of the product.
    - `variantExternalId` string: External ID of the variant.
    - `lineItemExternalId` string: External ID of the line item.
    - `internalId` string: Internal ID of the line item.
    - `note` string: Note of the line item.
    - `image` string: Image of the line item.
    - `attributes` string: Attributes of the line item.
    - `taxes` OrderTaxDto[]: Taxes associated with the Order.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `discount` OrderLineItemDiscountDto
      - `itemDiscounts` PriceModifierDetailDto[]: Item-level discounts. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to price × quantity, non-compounding).
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `cartDiscount` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `fee` OrderLineItemFeeDto
      - `cartFee` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `itemFees` PriceModifierDetailDto[]: Item-level fees. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to post-discount line base, non-compounding). Each fee can carry its own tax behavior.
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `modifiers` OrderLineItemModifierDto[]: Selected product-modifier choices on this line (one entry per chosen choice). NOT fees: kept out of `fee.itemFees` so fee consumers never see modifier money. The amounts are already included in the line item total/totalTax — see OrderLineItemModifier for the money invariant.
      - `modifierId` string, required: The modifier (the question, e.g. "Toppings") this selection answers.
      - `modifierName` string, required: Modifier name snapshot at sale time (renames never rewrite order history).
      - `choiceId` string, required: The chosen choice (embedded choice _id inside the modifier document).
      - `choiceName` string, required: Choice name snapshot at sale time — this is what prints on the receipt and kitchen ticket.
      - `unitPrice` number, required: Per-unit surcharge in minor currency units (e.g. cents for USD): the price of ONE unit of this choice on ONE unit of the line item. 0 is valid and recorded — a free choice such as "No pickles" still prints.
      - `quantity` number, required: Units of this choice per single line-item unit. 1 for single/multiple-selection modifiers; the stepper count for quantity-type modifiers (e.g. Extra shot ×2).
      - `total` number, required: Extended amount for the WHOLE line in minor currency units: unitPrice × quantity × lineItem.quantity. Included in the line item's total (see the money invariant on this schema).
      - `totalTax` number: Tax computed on `total` in minor currency units — Σ taxes[].amount. Included in the line item's totalTax.
      - `taxes` OrderTaxDto[]: Per-rate breakdown of totalTax, one bucket per rate that taxed this modifier row — a row can carry several tax groups. The amounts are already inside the parent line item's taxes[] buckets; never add them on top a second time.
        - `name` string, required: Name of the tax.
        - `taxTableId` string: ID of the tax table.
        - `taxTableName` string: Name of the tax table.
        - `id` string: ID of the tax.
        - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
        - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
        - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
        - `compounding` boolean: Flag to indicate if the tax is compounding.
        - `priority` number: Priority of the tax.
        - `_id` string
      - `componentIndex` number: On a composite line: index into the line's `components` this modifier applies to (B28) — always set there, a composite has no modifiers of its own (B43). Absent on every other line.
    - `components` OrderLineItemComponentDto[]: A composite line's components (FT-83), per ONE composite; each price is the component's whole share, Σ price = the line's price. Absent on every other line.
      - `productId` string, required: Product picked for this component.
      - `variantId` string, required: Variant picked for this component.
      - `name` string, required: Product name on the day of sale.
      - `attributes` string: Variant attributes as they read on the day of sale.
      - `sku` string: SKU of the component, as on the day of sale.
      - `productExternalId` string: External ID of the product.
      - `variantExternalId` string: External ID of the variant.
      - `partName` string: Part it was picked in ("Side"); absent when the part is untitled.
      - `quantity` number, required: Units of this component in ONE composite.
      - `price` number, required: This component's share of ONE composite's price, minor units, covering all of its quantity (not per unit).
      - `unitId` string: Unit the component was sold in, frozen at sale.
      - `unitAbbreviation` string: Abbreviation of that unit on the day of sale.
      - `unitRatioToBase` number: What one `unitId` was worth in base units on the day of sale.
      - `stockQuantity` number: Whole base units this component takes from its pool in ONE composite (B36d) — `toBase(quantity, unit)`, written by the till at sale; stock moves it × the line quantity. Absent on a by-the-piece component.
      - `stockVariantId` string: Variant whose pool the component drew from; absent when its own.
      - `taxTableId` string: Table that taxed this component with each item's own tax (B30); absent under the composite's tax group.
      - `totalTax` number: Tax on this component for the WHOLE line (all of its quantity, unlike price), minor units — Σ taxes[].amount (B30). Included in the line item's totalTax.
      - `taxes` OrderTaxDto[]: Per-rate breakdown of totalTax for the WHOLE line (all of its quantity), one bucket per rate that taxed this component (B30). The amounts are already inside the parent line item's taxes[] buckets; never add them on top a second time.
        - `name` string, required: Name of the tax.
        - `taxTableId` string: ID of the tax table.
        - `taxTableName` string: Name of the tax table.
        - `id` string: ID of the tax.
        - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
        - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
        - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
        - `compounding` boolean: Flag to indicate if the tax is compounding.
        - `priority` number: Priority of the tax.
        - `_id` string
    - `lineNetWithFees` number: Customer-facing per-line total: (price × quantity) − sum(itemDiscounts) + sum(itemFees). Excludes cart-level discount and tax.
    - `metadata` MetadataDto[]: Metadata associated with the Line Item.
      - `key` string, required: Key of the metadata entry.
      - `value` string, required: Value of the metadata entry.
      - `externalId` string: External ID associated with the metadata entry.
    - `stock` number: Stock of the line item before this order, value is 0 when manageStock is false
    - `subTotal` number: Subtotal of the line item in minor currency units (e.g., cents for USD).
    - `unitId` string: Unit this line was sold in, frozen at the moment of sale.
    - `unitAbbreviation` string: Abbreviation of that unit as it read on the day, for receipts and refunds.
    - `stockQuantity` number: Whole base units taken from the pool for this line. 1.589 kg sold is 1589 here when the family base is the gram.
    - `unitRatioToBase` number: What one `unitId` was worth in base units on the day of sale. Frozen rather than read back from the unit, which the merchant may re-rate; without it a reader can only recover the relation by dividing `quantity` into `stockQuantity`.
    - `stockVariantId` string: Variant whose pool was actually decremented. Null when this line served its own stock.
  - `reservations` OrderReservationDto[]: Booking reservations of this order — a booking sale in full: the time it takes and what was charged for it. Its status lives on the booking hold; cancelling never deletes the order.
    - `productId` string, required: The bookable product sold by this reservation.
    - `internalId` string, required: Client-generated id of this reservation within the order.
    - `bookingId` string: The hold this reservation was sold from.
    - `name` string, required: Name of the service as it was sold.
    - `resourceName` string: Name of the resource as it was at sale time.
    - `price` number, required: Unit price in minor units.
    - `quantity` number: How many periods this row covers.
    - `fulfilledQuantity` number: How many of the sold periods have been performed.
    - `returnedQuantity` number: How many of the sold periods have been refunded.
    - `totalTax` number: Tax charged on this reservation, minor units.
    - `taxes` OrderTaxDto[]: Applied taxes, one entry per rate.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `discount` OrderLineItemDiscountDto
      - `itemDiscounts` PriceModifierDetailDto[]: Item-level discounts. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to price × quantity, non-compounding).
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `cartDiscount` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `fee` OrderLineItemFeeDto
      - `cartFee` PriceModifierDetailDto
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
      - `itemFees` PriceModifierDetailDto[]: Item-level fees. Each entry is applied independently per-unit (fixed amounts multiply by line quantity; percentages apply to post-discount line base, non-compounding). Each fee can carry its own tax behavior.
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `total` number, required: Per-line total: (price × quantity) − item discounts + item fees. Excludes cart discount and tax.
    - `taxTableId` string: Tax table applied at sale time.
    - `resourceId` string, required: The resource whose capacity this reservation occupies.
    - `variantId` string: The variant sold for this reservation ("Haircut with Marco").
    - `startAt` string, required: Start of the booked window (UTC).
    - `endAt` string, required: End of the booked window (UTC).
    - `bufferEndAt` string, required: End of the turnaround buffer (UTC). Equals endAt when the rules have none.
    - `lineItemInternalId` string: internalId of the line item that paid for this window: the composite line whose component booked it (FT-83, B41). Absent on a service sold on its own.
    - `componentIndex` number: Which of that composite line's `components` this booking belongs to (B41). Such a booking carries no money — price and total are 0, the component's share holds them.
    - `override` boolean: Staff force-booked past a full slot.
    - `overriddenBy` string: The staff member who forced the booking.
  - `customSales` OrderCustomSaleDto[]: Custom sales associated with the Order.
    - `customSaleId` string, required: ID of the custom sale.
    - `applyTaxes` boolean, required: Flag to indicate if the custom sale is applied.
    - `quantity` number, required: Quantity of the custom sale.
    - `name` string, required: Name of the custom sale.
    - `price` number, required: Price of the custom sale in minor currency units (e.g., cents for USD).
    - `totalTax` number, required: Total tax of the custom sale in minor currency units (e.g., cents for USD).
    - `total` number, required: Total of the custom sale in minor currency units (e.g., cents for USD).
    - `taxes` OrderTaxDto[]: Taxes of the custom sale.
      - `name` string, required: Name of the tax.
      - `taxTableId` string: ID of the tax table.
      - `taxTableName` string: Name of the tax table.
      - `id` string: ID of the tax.
      - `percentage` number, required: Tax rate as a FRACTION, not a whole percent: send `0.15` for 15% (`0.09` = 9%). This is the platform-wide convention — the reporting canon applies it as `round(taxableAmount × percentage)`. A value above `1` is a whole-percent figure sent by mistake and is rejected with `400` (`15` would render as "1500%"). Must be between `0` and `1` inclusive. Amounts are unaffected — they stay in integer minor units (`6525` = $65.25).
      - `amount` number, required: Amount of the tax in minor currency units (e.g., cents for USD).
      - `taxableAmount` number: Taxable basis this rate was applied to in minor currency units; mode-agnostic. Required to derive per-rate Taxable Sales for tax breakdown reports under inclusive pricing.
      - `compounding` boolean: Flag to indicate if the tax is compounding.
      - `priority` number: Priority of the tax.
      - `_id` string
    - `discount` OrderCustomSaleDiscountDto
      - `cartDiscount` OrderCartDiscountDto, required
        - `amount` number, required: Amount of the cart discount in minor currency units (e.g., cents for USD).
        - `percentage` number, required: Percentage of the cart discount.
        - `label` string: Label of the cart discount.
    - `fee` OrderCustomSaleFeeDto
      - `cartFee` PriceModifierDetailDto, required
        - `percentage` number, required: Percentage as a decimal (e.g. 0.05 = 5%). Use 0.05 not 5 to avoid 500%.
        - `amount` number, required: Amount of the adjustment in minor currency units (e.g., cents for USD).
        - `label` string: Label for the adjustment.
        - `tax` number: Tax amount for the adjustment in minor currency units (e.g., cents for USD).
        - `taxTableId` string: Tax table ID for the adjustment.
        - `taxRateId` string: Tax rate ID for the adjustment. Identifies the specific rate within the tax table.
    - `charges` ChargeDto[]: Payment charges for the custom sale (one per payment method). In a refund, holds the amount refunded per charge.
      - `chargeId` string, required: Identifier of the charge.
      - `paymentType` string, required: Type of the payment method used for this charge.
      - `amount` number, required: Amount in minor units. On the order = amount paid via this method; in a refund entry = amount refunded from this charge.
      - `transactionId` string: Transaction ID associated with the charge.
      - `processor` string: Processor of the charge.
      - `timestamp` string: Date and time of the charge.
  - `nonRevenueItems` NonRevenueItemDto[]: Non-revenue items collected with the order (e.g., gift card sales are liabilities, not revenue).
    - `externalId` string, required: Unique cart line external id (may differ from extension refId, which is stored in metadata.refId) coming from custom table.
    - `amount` number, required: Amount in minor units (e.g. cents), same convention as cart totals; may be a number or string.
    - `label` string: Display label of the non-revenue item.
    - `metadata` MetadataDto[]: Metadata associated with the Product.
      - `key` string, required: Key of the metadata entry.
      - `value` string, required: Value of the metadata entry.
      - `externalId` string: External ID associated with the metadata entry.
    - `applyTaxes` boolean: When true, tax is calculated for this line (requires taxTableId). Default false — e.g. gift card load is typically non-taxable.
    - `taxTableId` string: Tax table id when applyTaxes is true.
    - `type` 'gift-card': Type of the non-revenue item.
    - `_id` string
  - `refund` OrderRefundDto[]: List of refunds associated with the external order (e.g. from WooCommerce).
    - `externalId` string: External ID of the refund (e.g. from WooCommerce).
    - `reason` string: Reason for the refund.
    - `summary` OrderRefundSummaryDto
      - `total` number: Total amount of the refund (e.g. from external systems like WooCommerce).
  - `minorUnits` number: The Minor Units of the Order to convert the amount from minor units to major units.

## Other responses

- `400`: Bad request. Returns validation errors or other request-related errors.
- `404`: The resource was not found.

---

[API](https://skmtc.dev/finalpos/apis/final-pos-public-api.md) · [All operations](https://skmtc.dev/finalpos/apis/final-pos-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/finalpos/apis/final-pos-public-api/revisions/6a6842dcb479?raw)
