---
title: "Add a voucher payment to an order"
method: POST
path: "/shop/orders/{orderId}/vouchers"
tags: ["Orders"]
---

# Add a voucher payment to an order

`POST /shop/orders/{orderId}/vouchers`

Redeem a voucher code against the order. The voucher's remaining
balance is applied as a payment against the order — either
settling the outstanding balance in full or contributing toward
it depending on the voucher's value. The order is returned with
the new payment listed in its `payments` array.

The voucher code must reference a valid, unredeemed
`VoucherCode` on the order's site. Common failure modes:

- `400 Bad Request` — the voucher is expired, fully redeemed,
  belongs to a different site, or is in a state that doesn't
  accept new redemptions. The error message describes the
  specific reason.

Remove a previously-redeemed voucher with `DELETE
/shop/orders/{orderId}/vouchers/{voucherCode}`.

## Request body

- object
  - `code` string, required — The voucher code to redeem against this order. Must reference a valid, unredeemed `VoucherCode` on the order's site. On success, the voucher is recorded as a payment against the order and its remaining balance is decremented.

## Response `200`

The `Order` was successfully retrieved

- object
  - `data` OrderV2, required — A customer order containing items and payments. This format replaces an older version of the order schema, and must be requested explicitly by passing `generic_items_array=true` as a query parameter.
    - `id` string, object-id, required — The ID of the order.
    - `applied_promo_code` AppliedPromoCode
      - `id` string, object-id, required — The ID of the promo code.
      - `applied_at` string, date-time — The date and time the promo code was applied.
      - `applied_by` UserSummary
        - `id` string, mongo-id, required — The ID of the user.
        - `avatar` Media
          - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
          - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
          - `mime_type` string, required — The mime type of the media item.
          - `original_url` string, required — The url of the media resource.
          - `size` integer, required — The size of the media item in bytes.
          - `url` string, required — The url of the converted media resource.
        - `email` string, email, required
        - `first_name` string, required
        - `full_name` string, required
        - `last_name` string, required
      - `code` string, required — The code of the promo code.
      - `discount_total` integer, required — The total discount from the applied promo code on the order.
      - `is_discount_applied` boolean, required — Whether the discount from the promo code has been applied to the order.
      - `percentage` integer, required — The percentage discount from the promo code.
    - `applied_promo_code_discount_total` integer
    - `applied_promo_code_id` string, object-id, nullable, required
    - `booking_items` BookingItem[]
      - `id` string, object-id, required
      - `added_by_customer` boolean, required
      - `base_price` integer
      - `booking_reserved_until` string, date-time
      - `booking_summary` union, required
        - AreaBookingSummary
          - `id` string, object-id, required
          - `area_ids` string[], required
          - `areas` BookableAreaSummary[], required
            - `id` string, mongo-id, required — The ID of the bookable area.
            - `name` string, required — The name of the bookable area.
          - `duration` integer, required
          - `end_time` string, date-time, required
          - `offering` OfferingSummary, required — Summary details of an offering.
            - `id` string, mongo-id, required — The ID of the offering.
            - `name` string, required — The name of the offering.
            - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
            - `product_code` string, nullable, required
          - `start_time` string, date-time, required
          - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
          - `created_at` string, date-time, required — When then resource was created.
          - `updated_at` string, date-time, required — When then resource was last updated.
        - BookingSummaryBookingSummary
          - `id` string, object-id, required
          - `duration` integer, required
          - `end_time` string, date-time, required
          - `equipment` EquipmentSummary[], required
            - `id` string, mongo-id, required — The ID of the equipment.
            - `name` string, required — The name of the equipment.
          - `equipment_ids` string[], required
          - `offering` OfferingSummary, required — Summary details of an offering.
            - `id` string, mongo-id, required — The ID of the offering.
            - `name` string, required — The name of the offering.
            - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
            - `product_code` string, nullable, required
          - `practitioners` PractitionerSummary[], required
            - `id` string, object-id, required — The ID of the practitioner.
            - `name` string, required — The full name of the practitioner.
          - `practitioner_ids` string[], required
          - `practitioner_was_requested` boolean
          - `room` RoomSummary, required — The summary of a `Room` object
            - `id` string, object-id, required — The ID of the room.
            - `capacity` integer, required
            - `name` string, required — The name of the room.
          - `room_id` string, object-id, required
          - `room_was_requested` boolean
          - `session_id` string, object-id
          - `start_time` string, date-time, required
          - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
          - `created_at` string, date-time, required — When then resource was created.
          - `updated_at` string, date-time, required — When then resource was last updated.
        - TableReservationSummary
          - `id` string, object-id, required
          - `duration` integer, required
          - `end_time` string, date-time, required
          - `offering` OfferingSummary, required — Summary details of an offering.
            - `id` string, mongo-id, required — The ID of the offering.
            - `name` string, required — The name of the offering.
            - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
            - `product_code` string, nullable, required
          - `start_time` string, date-time, required
          - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
          - `created_at` string, date-time, required — When then resource was created.
          - `updated_at` string, date-time, required — When then resource was last updated.
      - `date` string, date, nullable, required
      - `discount_amount` integer, required
      - `discounts` Discount[], required
        - `id` string, object-id, required — The ID of the order discount
        - `amount_type` 'monetary' | 'percentage', required — The type of the amount this discount describes.
        - `applicable_for` 'app_and_booking_engine' | 'app_only', nullable, required — Where this discount type is able to be applied.
        - `applied_at` string, date-time, required — The date and time that the discount was applied.
        - `applied_by` UserSummary, required
          - `id` string, mongo-id, required — The ID of the user.
          - `avatar` Media
            - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
            - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
            - `mime_type` string, required — The mime type of the media item.
            - `original_url` string, required — The url of the media resource.
            - `size` integer, required — The size of the media item in bytes.
            - `url` string, required — The url of the converted media resource.
          - `email` string, email, required
          - `first_name` string, required
          - `full_name` string, required
          - `last_name` string, required
        - `calculated_amount` integer, required — The total calculated amount of this discount.
        - `coupon` BasketCouponSummary, required
          - `id` string, object-id, required — The ID of the coupon.
          - `code` string, required — The code of the coupon.
          - `name` string, required — The name of the coupon.
          - `description` string, required — A description of the coupon.
          - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
        - `coupon_code_id` string, object-id, nullable, required — The ID of the coupon code used to add this discount, if applicable.
        - `currency` string, required — The ISO-4217 currency code.
        - `discount_amount` integer, required — The value of the discount to be applied when a discount type is used. This can be used as a monetary or percentage value for an in-app discount type and is set to percentage for a promo code.
        - `discount_type_code` string, required — The code for the discount type.
        - `reason_code` string, required — A code to describe the reason for the discount.
        - `site_id` string, uuid, required — The ID of the site the discount is associated with.
      - `exclusive_tax_amount` integer, required
      - `guest` Guest
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `guests` Guest[], required
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `inclusive_tax_amount` integer, required
      - `is_modifiable` boolean, required
      - `item_type` 'appointment' | 'area_booking' | 'session' | 'table_reservation', nullable, required
      - `net_total` integer, required
      - `order_discount_amount` integer, required
      - `price` integer, nullable, required
      - `sold_by` SoldBy, required
        - `id` string, required
        - `name` string, required
        - `type` 'practitioner' | 'user' | '', required
      - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
      - `total_cost` integer, required
      - `type_id` string, object-id, nullable, required
      - `type_name` string, nullable, required
      - `type_product_code` string, nullable, required
      - `warnings` OrderItemWarning[], nullable, required — A list of warnings relating to this item, e.g. missing or mismatched practitioner/room assignments.
        - `code` string, required — A machine-readable code identifying the type of warning.
        - `message` string, required — A human-readable message describing the warning.
      - `created_at` string, date-time, required — When then resource was created.
      - `updated_at` string, date-time, required — When then resource was last updated.
    - `booking_items_end_date` string, date, nullable, required
    - `booking_items_start_date` string, date, nullable, required
    - `booking_items_span_multiple_days` boolean
    - `coupon_codes` CouponSummary[], required — An array of coupon codes applied to the order.
      - `id` string, object-id, required — The ID of the coupon.
      - `code` string, required — The code of the coupon.
      - `customer_credit_id` string, uuid — The customer credit this coupon relates to, if applicable.
      - `description` string, required — A description of the coupon.
      - `issued_by_id` string, object-id — The ID of the entity that issued the coupon.
      - `issued_by_type` string — The type of entity that issued the coupon.
      - `name` string, required — The name of the coupon.
    - `currency` string, required — The ISO-4217 currency code.
    - `customer_id` string, uuid, nullable, required — The ID of the customer the order belongs to.
    - `customer_tax_details` CustomerTaxDetails
      - `legal_name` string — The customer's legal name for tax purposes.
      - `tax_id` string — The customer's tax ID, dependent on their country of residence.
      - `address_line_1` string — The first line of the customer's registered address for tax purposes.
      - `address_line_2` string — The second line of the customer's registered address for tax purposes.
      - `city` string — The city of the customer's registered address for tax purposes.
      - `postcode` string — The postcode of the customer's registered address for tax purposes.
      - `country` string — The customer's country for tax purposes.
    - `discount_total` integer, required — The total value of all applied order-level discounts.
    - `discounts` Discount[], required — A list of all applied order-level discounts.
      - `id` string, object-id, required — The ID of the order discount
      - `amount_type` 'monetary' | 'percentage', required — The type of the amount this discount describes.
      - `applicable_for` 'app_and_booking_engine' | 'app_only', nullable, required — Where this discount type is able to be applied.
      - `applied_at` string, date-time, required — The date and time that the discount was applied.
      - `applied_by` UserSummary, required
        - `id` string, mongo-id, required — The ID of the user.
        - `avatar` Media
          - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
          - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
          - `mime_type` string, required — The mime type of the media item.
          - `original_url` string, required — The url of the media resource.
          - `size` integer, required — The size of the media item in bytes.
          - `url` string, required — The url of the converted media resource.
        - `email` string, email, required
        - `first_name` string, required
        - `full_name` string, required
        - `last_name` string, required
      - `calculated_amount` integer, required — The total calculated amount of this discount.
      - `coupon` BasketCouponSummary, required
        - `id` string, object-id, required — The ID of the coupon.
        - `code` string, required — The code of the coupon.
        - `name` string, required — The name of the coupon.
        - `description` string, required — A description of the coupon.
        - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
      - `coupon_code_id` string, object-id, nullable, required — The ID of the coupon code used to add this discount, if applicable.
      - `currency` string, required — The ISO-4217 currency code.
      - `discount_amount` integer, required — The value of the discount to be applied when a discount type is used. This can be used as a monetary or percentage value for an in-app discount type and is set to percentage for a promo code.
      - `discount_type_code` string, required — The code for the discount type.
      - `reason_code` string, required — A code to describe the reason for the discount.
      - `site_id` string, uuid, required — The ID of the site the discount is associated with.
    - `email` string, nullable, required — The email address of the customer.
    - `external_ids` ExternalIdValue[] — An array of external IDs applied to the order.
      - `key` string, required — The key for the external ID.
      - `name` string, required — The name of the external ID.
      - `value` string, required — The value of the external ID for this order.
    - `external_ref` string, nullable — An external reference for the order, if set.
    - `external_visit_ref` string, nullable — An external visit reference for the order, if set.
    - `first_name` string, nullable, required — The first name of the customer.
    - `guests` Guest[], required
      - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
      - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
      - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
      - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
      - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
      - `first_name` string, required — The first name of the guest.
      - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
      - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
      - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
      - `last_name` string, required — The last name of the guest.
      - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
    - `intake_form_required` boolean — True if an intake form is required for this order.
    - `intake_form_url` string, nullable — The url for the intake form for this order. Only returned on show and submission.
    - `intake_forms_complete` boolean — Whether all intake forms for the order have been completed.
    - `integration_config_id` string — The ID of the integration config associated with this order.
    - `is_customer_required` boolean, required — True if a customer needs to be set for this order.
    - `is_locked` boolean, required — Whether the order is locked.
    - `is_promo_code_discount_applied` boolean
    - `items` SchemasItem[]
      - `id` string, object-id, required — The ID of the item.
      - `added_by_customer` boolean, required — Whether this item was added to the basket by the customer.
      - `base_price` integer — If the price has been modified, this value contains the original unit price.
      - `basket_id` string, object-id, required
      - `booking_summary` union
        - AreaBookingSummary
          - `id` string, object-id, required
          - `area_ids` string[], required
          - `areas` BookableAreaSummary[], required
            - `id` string, mongo-id, required — The ID of the bookable area.
            - `name` string, required — The name of the bookable area.
          - `duration` integer, required
          - `end_time` string, date-time, required
          - `offering` OfferingSummary, required — Summary details of an offering.
            - `id` string, mongo-id, required — The ID of the offering.
            - `name` string, required — The name of the offering.
            - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
            - `product_code` string, nullable, required
          - `start_time` string, date-time, required
          - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
          - `created_at` string, date-time, required — When then resource was created.
          - `updated_at` string, date-time, required — When then resource was last updated.
        - BookingSummaryBookingSummary
          - `id` string, object-id, required
          - `duration` integer, required
          - `end_time` string, date-time, required
          - `equipment` EquipmentSummary[], required
            - `id` string, mongo-id, required — The ID of the equipment.
            - `name` string, required — The name of the equipment.
          - `equipment_ids` string[], required
          - `offering` OfferingSummary, required — Summary details of an offering.
            - `id` string, mongo-id, required — The ID of the offering.
            - `name` string, required — The name of the offering.
            - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
            - `product_code` string, nullable, required
          - `practitioners` PractitionerSummary[], required
            - `id` string, object-id, required — The ID of the practitioner.
            - `name` string, required — The full name of the practitioner.
          - `practitioner_ids` string[], required
          - `practitioner_was_requested` boolean
          - `room` RoomSummary, required — The summary of a `Room` object
            - `id` string, object-id, required — The ID of the room.
            - `capacity` integer, required
            - `name` string, required — The name of the room.
          - `room_id` string, object-id, required
          - `room_was_requested` boolean
          - `session_id` string, object-id
          - `start_time` string, date-time, required
          - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
          - `created_at` string, date-time, required — When then resource was created.
          - `updated_at` string, date-time, required — When then resource was last updated.
        - TableReservationSummary
          - `id` string, object-id, required
          - `duration` integer, required
          - `end_time` string, date-time, required
          - `offering` OfferingSummary, required — Summary details of an offering.
            - `id` string, mongo-id, required — The ID of the offering.
            - `name` string, required — The name of the offering.
            - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
            - `product_code` string, nullable, required
          - `start_time` string, date-time, required
          - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
          - `created_at` string, date-time, required — When then resource was created.
          - `updated_at` string, date-time, required — When then resource was last updated.
      - `discount_amount` integer, required — The amount of discount applied to this order item (already deducted from its price and total cost).
      - `discounts` Discount[], required — An array of discounts applied to the item.
        - `id` string, object-id, required — The ID of the order discount
        - `amount_type` 'monetary' | 'percentage', required — The type of the amount this discount describes.
        - `applicable_for` 'app_and_booking_engine' | 'app_only', nullable, required — Where this discount type is able to be applied.
        - `applied_at` string, date-time, required — The date and time that the discount was applied.
        - `applied_by` UserSummary, required
          - `id` string, mongo-id, required — The ID of the user.
          - `avatar` Media
            - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
            - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
            - `mime_type` string, required — The mime type of the media item.
            - `original_url` string, required — The url of the media resource.
            - `size` integer, required — The size of the media item in bytes.
            - `url` string, required — The url of the converted media resource.
          - `email` string, email, required
          - `first_name` string, required
          - `full_name` string, required
          - `last_name` string, required
        - `calculated_amount` integer, required — The total calculated amount of this discount.
        - `coupon` BasketCouponSummary, required
          - `id` string, object-id, required — The ID of the coupon.
          - `code` string, required — The code of the coupon.
          - `name` string, required — The name of the coupon.
          - `description` string, required — A description of the coupon.
          - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
        - `coupon_code_id` string, object-id, nullable, required — The ID of the coupon code used to add this discount, if applicable.
        - `currency` string, required — The ISO-4217 currency code.
        - `discount_amount` integer, required — The value of the discount to be applied when a discount type is used. This can be used as a monetary or percentage value for an in-app discount type and is set to percentage for a promo code.
        - `discount_type_code` string, required — The code for the discount type.
        - `reason_code` string, required — A code to describe the reason for the discount.
        - `site_id` string, uuid, required — The ID of the site the discount is associated with.
      - `exclusive_tax_amount` integer, required — The total amount of tax not included in the price of this item
      - `guests` GuestSummary[], required
        - `id` string, mongo-id, required — The ID of the guest.
        - `customer_id` string, mongo-id, nullable — The ID of the customer this guest relates to.
        - `name` string, required — The guest's full name.
        - `checked_in_at` string, date-time, nullable, required — The date and time the guest checked in.
      - `has_posted` boolean
      - `inclusive_tax_amount` integer, required — The total amount of tax included in the price of this item
      - `item_configuration` ItemConfiguration, required — Type-specific properties to configure an order item.
      - `last_post_attempt` string, date-time, nullable
      - `offering` OfferingSummary, required — Summary details of an offering.
        - `id` string, mongo-id, required — The ID of the offering.
        - `name` string, required — The name of the offering.
        - `type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
        - `product_code` string, nullable, required
      - `option_budgets` OptionBudget[]
        - `budget` string, nullable, required — The amount of the budget, in the smallest denomination.
        - `choice_id` string, required — The ID of the choice this option budget belongs to.
        - `remaining` string, nullable, required — The amount of the budget remaining to be spent, in the smallest denomination.
        - `spent` string, nullable, required — The amount spent towards the budget, in the smallest denomination.
      - `order_discount_amount` integer, required
      - `package_items` OrderItemPackageItem[]
        - `id` string, mongo-id, required — The ID of the package item.
        - `booking_summary` union
          - AreaBookingSummary
            - `id` string, object-id, required
            - `area_ids` string[], required
            - `areas` BookableAreaSummary[], required
              - …
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
          - BookingSummaryBookingSummary
            - `id` string, object-id, required
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `equipment` EquipmentSummary[], required
              - …
            - `equipment_ids` string[], required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `practitioners` PractitionerSummary[], required
              - …
            - `practitioner_ids` string[], required
            - `practitioner_was_requested` boolean
            - `room` RoomSummary, required — The summary of a `Room` object
              - …
            - `room_id` string, object-id, required
            - `room_was_requested` boolean
            - `session_id` string, object-id
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
          - TableReservationSummary
            - `id` string, object-id, required
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
        - `choice_id` string, mongo-id, required — The ID of the package choice this item relates to.
        - `duration` integer, nullable, required — The duration of the item in minutes.
        - `guests` GuestSummary[]
          - `id` string, mongo-id, required — The ID of the guest.
          - `customer_id` string, mongo-id, nullable — The ID of the customer this guest relates to.
          - `name` string, required — The guest's full name.
          - `checked_in_at` string, date-time, nullable, required — The date and time the guest checked in.
        - `item_configuration` ItemConfiguration, required — Type-specific properties to configure an order item.
        - `offering_id` string, mongo-id, required — The ID of the offering.
        - `offering_name` string, required — The name of the offering.
        - `offering_type` string, required — The offering type of this package item.
        - `option_id` string, mongo-id, required — The ID of the choice option that this item relates to.
        - `price_change` integer, required — The amount by which this option changes the overall package price.
        - `reserved_until` string, date-time, required
        - `shared_basket_item_id` string, object-id
        - `status` 'cancelled' | 'in_progress' | 'new' | 'no_show' | 'settled' | 'submitted'
        - `time` string, date-time, nullable, required — The start time of the item.
      - `posted_at` string, date-time, nullable
      - `price` integer, nullable, required — The total price of a single quantity of this order item.
      - `purchasable_details` union — Details of the item purchased by an `OrderItem` that is a 'purchasable' type. In the same way that a 'bookable' order item creates a booking, a 'purchaseable' order item creates a purchase object.
        - object
          - `id` string, object-id, required — The ID of the purchase object.
          - `time_from` string, date-time, required — The start of the range of time being enquired about.
          - `time_to` string, date-time, required — The end of the range of time being enquired about.
        - object
          - `id` string, object-id, required — The ID of the purchase object.
          - `email_sent_at` string, date-time, required — When the recipient email was sent.
          - `valid_to_date` string, date, nullable, required — The date the voucher is valid until.
      - `quantity` integer, required — The quantity of the item.
      - `reserved_until` string, date-time, nullable, required — The date and time the booking is reserved until.
      - `sold_by` SoldBy, required
        - `id` string, required
        - `name` string, required
        - `type` 'practitioner' | 'user' | '', required
      - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted'
      - `total_cost` integer, required — The total cost of this order item, i.e. its price multiplied by quantity.
      - `warnings` OrderItemWarning[], nullable, required — A list of warnings relating to this item, e.g. missing or mismatched practitioner/room assignments.
        - `code` string, required — A machine-readable code identifying the type of warning.
        - `message` string, required — A human-readable message describing the warning.
      - `created_at` string, date-time, required — When then resource was created.
      - `updated_at` string, date-time, required — When then resource was last updated.
    - `items_status` 'confirmed' | 'pending_confirmation', required — A summary of the confirmation status of items within the order.
    - `labels` SchemasLabel[], required
      - `id` string, object-id, required — The ID of the label.
      - `color` string, required — The color of the label.
      - `name` string, required — The name of the label.
      - `order_id` string, object-id, required
    - `last_name` string, nullable, required — The last name of the customer.
    - `locked_at` string, date-time, nullable — The date the order was locked at.
    - `net_total` integer, required — The net total of all items in the order.
    - `order_ref` string, nullable, required — The order reference associated with this booking.
    - `organisation_id` string, uuid, required — The ID of the organisation the order belongs to.
    - `outstanding_payment_amount` integer, required
    - `package_items` OrderPackageItem[]
      - `id` string, object-id, required
      - `added_by_customer` boolean, required
      - `base_price` integer
      - `date` string, date, nullable, required
      - `discount_amount` integer, required
      - `discounts` Discount[], required
        - `id` string, object-id, required — The ID of the order discount
        - `amount_type` 'monetary' | 'percentage', required — The type of the amount this discount describes.
        - `applicable_for` 'app_and_booking_engine' | 'app_only', nullable, required — Where this discount type is able to be applied.
        - `applied_at` string, date-time, required — The date and time that the discount was applied.
        - `applied_by` UserSummary, required
          - `id` string, mongo-id, required — The ID of the user.
          - `avatar` Media
            - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
            - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
            - `mime_type` string, required — The mime type of the media item.
            - `original_url` string, required — The url of the media resource.
            - `size` integer, required — The size of the media item in bytes.
            - `url` string, required — The url of the converted media resource.
          - `email` string, email, required
          - `first_name` string, required
          - `full_name` string, required
          - `last_name` string, required
        - `calculated_amount` integer, required — The total calculated amount of this discount.
        - `coupon` BasketCouponSummary, required
          - `id` string, object-id, required — The ID of the coupon.
          - `code` string, required — The code of the coupon.
          - `name` string, required — The name of the coupon.
          - `description` string, required — A description of the coupon.
          - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
        - `coupon_code_id` string, object-id, nullable, required — The ID of the coupon code used to add this discount, if applicable.
        - `currency` string, required — The ISO-4217 currency code.
        - `discount_amount` integer, required — The value of the discount to be applied when a discount type is used. This can be used as a monetary or percentage value for an in-app discount type and is set to percentage for a promo code.
        - `discount_type_code` string, required — The code for the discount type.
        - `reason_code` string, required — A code to describe the reason for the discount.
        - `site_id` string, uuid, required — The ID of the site the discount is associated with.
      - `exclusive_tax_amount` integer, required
      - `guest` Guest
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `guests` Guest[], required
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `inclusive_tax_amount` integer, required
      - `integration_booking_engine` 'Guestline', nullable, required
      - `is_modifiable` boolean, required
      - `item_type` 'package', nullable, required
      - `net_total` integer, required
      - `option_budgets` OptionBudget[], required
        - `budget` string, nullable, required — The amount of the budget, in the smallest denomination.
        - `choice_id` string, required — The ID of the choice this option budget belongs to.
        - `remaining` string, nullable, required — The amount of the budget remaining to be spent, in the smallest denomination.
        - `spent` string, nullable, required — The amount spent towards the budget, in the smallest denomination.
      - `order_discount_amount` integer, required
      - `package_items` object[], required
        - `id` string, object-id, required
        - `booking_summary` union
          - AreaBookingSummary
            - `id` string, object-id, required
            - `area_ids` string[], required
            - `areas` BookableAreaSummary[], required
              - …
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
          - BookingSummaryBookingSummary
            - `id` string, object-id, required
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `equipment` EquipmentSummary[], required
              - …
            - `equipment_ids` string[], required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `practitioners` PractitionerSummary[], required
              - …
            - `practitioner_ids` string[], required
            - `practitioner_was_requested` boolean
            - `room` RoomSummary, required — The summary of a `Room` object
              - …
            - `room_id` string, object-id, required
            - `room_was_requested` boolean
            - `session_id` string, object-id
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
          - TableReservationSummary
            - `id` string, object-id, required
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
        - `choice_id` string, object-id, required
        - `duration` integer, nullable, required
        - `guests` Guest[]
          - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
          - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
          - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
          - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
          - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
          - `first_name` string, required — The first name of the guest.
          - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
          - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
          - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
          - `last_name` string, required — The last name of the guest.
          - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
        - `item_configuration` ItemConfiguration, required — Type-specific properties to configure an order item.
        - `offering_id` string, object-id, required
        - `offering_name` string, required
        - `offering_type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
        - `option_id` string, object-id, required
        - `price_change` integer, required
        - `reserved_until` string, date-time, required
        - `shared_basket_item_id` string, object-id
        - `status` 'cancelled' | 'in_progress' | 'new' | 'no_show' | 'settled' | 'submitted'
        - `time` string, nullable, required
      - `price` integer, nullable, required
      - `sold_by` SoldBy, required
        - `id` string, required
        - `name` string, required
        - `type` 'practitioner' | 'user' | '', required
      - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
      - `total_cost` integer, required
      - `type_id` string, object-id, nullable, required
      - `type_name` string, nullable, required
      - `type_product_code` string, nullable, required
      - `created_at` string, date-time, required — When then resource was created.
      - `updated_at` string, date-time, required — When then resource was last updated.
    - `payment_totals` PaymentTotals, required
      - `chargeable` integer, required — The total of payments that are ready to be charged when required.
      - `missing` integer, required — The balance of payments still needing to be added to the order, equal to the total cost of the order minus any paid, pending and chargeable payments.
      - `paid` integer, required — The total of payments in a paid status.
      - `pending` integer, required — The total of payments that are still processing.
      - `provided` integer, required — The total of payments that have been added to the order, equal to the total of all paid, pending and chargeable payments.
      - `unpaid` integer, required — The balance of payments that still need to be paid, equal to the total cost of the order minus any paid payments.
    - `payments` Payment[], required — A list of all payments against this order.
      - `id` string, object-id, required — The ID of the item to be added.
      - `amount` integer, required — The amount of the payment, in the lowest denomination
      - `capture_method` string, nullable, required — At what point the payment amount will be captured
      - `chargebacks` Chargeback[]
        - `id` string, object-id, required
        - `amount` string, required
        - `currency` string, required — The ISO-4217 currency code.
        - `payment_id` string, object-id, required — The ID of the payment that was charged back.
        - `processor_data` object, required
        - `reason` string, required — The reason for the chargeback.
        - `status` 'confirmed' | 'pending' | 'processed' | 'reversed', required
        - `created_at` string, date-time, required — When then resource was created.
      - `currency` string, required — The ISO-4217 currency code.
      - `details_source` string, nullable, required — How the payment method will be provided
      - `failure_reason` string, nullable — If present, provides a human-readable explanation for the failure.
      - `item_revenues` PaymentItemRevenue[], nullable, required — How the payment amount is allocated across the order's items and revenue centres. Null for payments taken before item revenue allocation was enabled — such payments cannot support item-level operations like partial charge to room.
        - `basket_item_id` string, object-id, required — The ID of the order item that this allocation covers.
        - `revenue_centre` string, required — The revenue centre of the order item's revenue line that this allocation covers.
        - `gross_amount` integer, required — The gross amount of the payment allocated to this revenue line, in the lowest denomination.
        - `net_amount` integer, required — The net amount of the payment allocated to this revenue line, in the lowest denomination.
        - `refunded_amount` integer, required — The amount of this allocation that has been refunded, in the lowest denomination.
        - `currency` string, required — The ISO-4217 currency code.
      - `order_ref` string, nullable
      - `paid_at` string, date-time, nullable, required — The time and date that the payment was paid.
      - `payable_id` string, object-id, required
      - `payable_type` string, required
      - `processor` string, required — The payment processor to be used for the payment
      - `processor_data` object, required — A dictionary of processor-specific data
      - `processor_id` string, object-id, required
      - `processor_type` string, nullable, required
      - `refundable_amount` number, required — The amount of the payment that may be refunded.
      - `refunds` Refund[], required
        - `id` string, object-id, required — The ID of the refund.
        - `payment_id` string, object-id, required — The ID of the payment that was refunded.
        - `amount` integer, required — The amount of the refund.
        - `currency` string, required — The ISO-4217 currency code.
        - `notes` string, nullable — Notes that were added against the refund.
        - `status` 'pending' | 'complete' | 'failed', required — The current status of the refund.
        - `processor_data` object, required — A dictionary of processor-specific data.
        - `created_at` string, date-time, required — The date and time that the refund was created.
      - `status` 'cancelled' | 'expired' | 'failed' | 'paid' | 'payment_method_charged' | 'payment_method_stored' | 'pending' | 'ready_for_capture' | 'requires_action', required — The current status of the payment
      - `created_at` string, date-time, required — When then resource was created.
    - `phone` string, nullable, required — The customer's phone number.
    - `post_to_room_config` PostingRoom — A link between an order and a hotel-PMS room folio so that the order's balance can be "posted to room" rather than settled at checkout. Captures the PMS room number, guest reference and timestamp of the association, plus the integration outcome.
      - `associated_at` string, date-time, nullable, required — The date and time the posting room was associated to the order. If not provided, the current date and time will be used.
      - `processor_data` object, nullable, required — The name of the room to attach to the [`Order`](/endpoints/Orders).
    - `promo_code_applied_at` string, date-time
    - `promo_code_applied_by` UserSummary
      - `id` string, mongo-id, required — The ID of the user.
      - `avatar` Media
        - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
        - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
        - `mime_type` string, required — The mime type of the media item.
        - `original_url` string, required — The url of the media resource.
        - `size` integer, required — The size of the media item in bytes.
        - `url` string, required — The url of the converted media resource.
      - `email` string, email, required
      - `first_name` string, required
      - `full_name` string, required
      - `last_name` string, required
    - `purchase_items` PurchaseItem[]
      - `id` string, object-id, required
      - `added_by_customer` boolean, required
      - `base_price` integer
      - `discount_amount` integer, required
      - `discounts` Discount[], required
        - `id` string, object-id, required — The ID of the order discount
        - `amount_type` 'monetary' | 'percentage', required — The type of the amount this discount describes.
        - `applicable_for` 'app_and_booking_engine' | 'app_only', nullable, required — Where this discount type is able to be applied.
        - `applied_at` string, date-time, required — The date and time that the discount was applied.
        - `applied_by` UserSummary, required
          - `id` string, mongo-id, required — The ID of the user.
          - `avatar` Media
            - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
            - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
            - `mime_type` string, required — The mime type of the media item.
            - `original_url` string, required — The url of the media resource.
            - `size` integer, required — The size of the media item in bytes.
            - `url` string, required — The url of the converted media resource.
          - `email` string, email, required
          - `first_name` string, required
          - `full_name` string, required
          - `last_name` string, required
        - `calculated_amount` integer, required — The total calculated amount of this discount.
        - `coupon` BasketCouponSummary, required
          - `id` string, object-id, required — The ID of the coupon.
          - `code` string, required — The code of the coupon.
          - `name` string, required — The name of the coupon.
          - `description` string, required — A description of the coupon.
          - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
        - `coupon_code_id` string, object-id, nullable, required — The ID of the coupon code used to add this discount, if applicable.
        - `currency` string, required — The ISO-4217 currency code.
        - `discount_amount` integer, required — The value of the discount to be applied when a discount type is used. This can be used as a monetary or percentage value for an in-app discount type and is set to percentage for a promo code.
        - `discount_type_code` string, required — The code for the discount type.
        - `reason_code` string, required — A code to describe the reason for the discount.
        - `site_id` string, uuid, required — The ID of the site the discount is associated with.
      - `exclusive_tax_amount` integer, required
      - `guests` Guest[], required
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `inclusive_tax_amount` integer, required
      - `is_modifiable` boolean, required
      - `item_configuration` ItemConfiguration, required — Type-specific properties to configure an order item.
      - `item_type` 'course' | 'hotel_room_reservation' | 'membership' | 'product' | 'voucher', nullable, required
      - `net_total` integer, required
      - `order_discount_amount` integer, required
      - `purchasable_details` object, required
        - `id` string, object-id
      - `quantity` integer, required
      - `reserved_until` string, date-time
      - `sold_by` SoldBy, required
        - `id` string, required
        - `name` string, required
        - `type` 'practitioner' | 'user' | '', required
      - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
      - `total_cost` integer, required
      - `type_id` string, object-id, nullable, required
      - `type_name` string, nullable, required
      - `type_product_code` string, nullable, required
      - `unit_price` integer, required
      - `created_at` string, date-time, required — When then resource was created.
      - `updated_at` string, date-time, required — When then resource was last updated.
    - `sales_channel` SchemasSalesChannel, required
      - `id` string, object-id, required — The ID of the sales channel.
      - `name` string, required — The name of the sales channel.
      - `organisation_id` string, uuid, required
    - `service_charge` ServiceCharge, required
      - `amount` integer, required — The amount of the service charge.
      - `item_amounts` ServiceChargeItemAmount[], required
        - `amount` integer, required — The amount of the service charge for the item.
        - `item_id` string, object-id, required — The ID of the item the service charge is applied to.
        - `percentage` integer, required — The percentage of the service charge for the item.
      - `percentage` integer, required — The percentage of the service charge.
    - `site_id` string, uuid, required — The ID of the site the order belongs to.
    - `special_requests` string, nullable, required — Any customer requests relating to the order.
    - `stage` 'not_arrived' | 'arrived' | 'in_treatment' | 'checked_out', nullable — The current stage of the order.
    - `status` 'cancelled' | 'in_progress' | 'new' | 'no_show' | 'settled' | 'submitted', required
    - `submit_auth_amount` integer, nullable, required
    - `submit_payment_amount` integer, nullable, required
    - `submitted_at` string, date-time, nullable, required — The time and date that the basket was submitted (confirmed).
    - `submitted_by` UserSummary
      - `id` string, mongo-id, required — The ID of the user.
      - `avatar` Media
        - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
        - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
        - `mime_type` string, required — The mime type of the media item.
        - `original_url` string, required — The url of the media resource.
        - `size` integer, required — The size of the media item in bytes.
        - `url` string, required — The url of the converted media resource.
      - `email` string, email, required
      - `first_name` string, required
      - `full_name` string, required
      - `last_name` string, required
    - `taxes` TaxAmount[], required
      - `amount` integer, required — The calculated amount of the tax
      - `inclusive` boolean, required — Whether the tax amount is included in the subtotal
      - `name` string, required — The name of the tax rate
      - `percentage` number, required — The percentage of the tax rate
    - `tip_amount` integer, required — The total amount of tip against the order.
    - `tips` Tip[], required — An array of individual tips applied to the order.
      - `id` string, object-id, required — The ID of the tip.
      - `amount` integer, required — The amount of the tip, in minor units.
      - `declined` boolean, required — Whether the customer explicitly declined to leave a tip
      - `updated_at` string, date-time, required — The date and time the tip was last updated.
      - `can_remove` boolean, required — Whether the tip can be removed from the order.
    - `total_cost` integer, required
    - `total_paid_or_authed` integer, required
    - `total_tax` integer, required — The total tax amount of all items in the order.
    - `totals` SchemasTotals, required
      - `exclusive_tax` integer, required — The total amount of exclusive tax included in the subtotal
      - `inclusive_tax` integer, required — The total amount of inclusive tax included in the subtotal
      - `order_discount` integer, required — The total amount of order-level discounts.
      - `subtotal` integer, required — The amount of the order before discounts, tip and service charge.
      - `subtotal_without_exclusive_tax` integer — The amount of the order before discounts, tip and service charge, excluding any exclusive tax.
      - `total` integer, required — The total amount of the order.
    - `visit` OrderVisitSummary, required
      - `id` string, object-id, required — The ID of the visit.
      - `visit_ref` string, required — The reference of the visit.
      - `visit_type` VisitTypeSummary, required
        - `id` string, object-id, required — The ID of the visit type.
        - `name` string, required — The name of the visit type.
      - `status` string, required — The status of the visit.
      - `arrival_date` string, date-time, required — The arrival date of the visit.
      - `departure_date` string, date-time, required — The departure date of the visit.
      - `first_name` string, required — The first name of the visitor.
      - `last_name` string, required — The last name of the visitor.
    - `voucher_codes` VoucherSummary[] — An array of discount-type voucher codes applied to the basket. Monetary vouchers are included as payments.
      - `id` string, uuid, required — The ID of the voucher.
      - `amount_type` string, required — The amount type of the voucher.
      - `calculated_amount` integer — The calculated amount of the voucher.
      - `code` string, required — The code of the voucher.
      - `coupon_code_id` string, object-id — The ID of the coupon that created the voucher, if applicable.
      - `description` string, nullable, required — The description of the voucher.
      - `is_redeemed` boolean — Whether the voucher has been redeemed.
      - `name` string, required — The name of the voucher.
      - `voucher_type_id` string, object-id, required — The ID of the voucher type.
    - `created_at` string, date-time, required — The time and date that the basket was created.
    - `updated_at` string, date-time, required — The time and date that the basket was last updated.

## Other responses

- `400` — The request failed.
- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
