---
title: "2. Complete a booking"
method: POST
path: "/rates/book"
tags: ["Make bookings"]
---

# 2. Complete a booking

`POST /rates/book`

## Overview

**Step 2 of 2** in the booking flow. Complete the booking by providing guest information and payment details. This confirms the reservation and creates the final booking.

## When to Use

- **After prebook** - Call this after creating a prebook session
- **Payment processing** - Submit payment information to confirm booking
- **Booking confirmation** - Finalize the reservation

## What You Get

- **Booking ID** - Unique identifier for the confirmed booking
- **Hotel confirmation code** - Reference code from the hotel
- **Complete booking details** - Dates, pricing, room information
- **Cancellation policies** - Terms for cancelling the booking
- **Guest information** - Confirmed guest details

## Payment Methods

- **ACC_CREDIT_CARD** - Direct credit card payment. In sandbox mode, this can be used to simulate a booking without getting charged.
- **TRANSACTION** - Use when using Payment SDK (provide `transactionId`)
- **WALLET** - Wallet payment method
- **CREDIT** - Use account credit balance

## Testing

When testing sandbox bookings, simply use the `ACC_CREDIT_CARD` payment method. This allows you to simulate a booking without getting charged.

## Required Information

- **Prebook ID** - From the prebook step
- **Guest details** - First name, last name, and email
- **Payment information** - Payment method and details

## Quick Start

Provide the `prebookId`, guest information (firstName, lastName, email), and payment details. Returns confirmed booking with booking ID and confirmation code.

## Query parameters

- `timeout` integer

## Request body

- object
  - `prebookId` string, required — This identifier from the pre-booking step is used to confirm a booking rate
  - `clientReference` string — An optional client-defined reference ID acts as an idempotency key to prevent duplicate bookings. If a booking already exists with the same client reference, the API will return a 4005 error.
  - `holder` object, required — Information on the person responsible for making the payment. This may not necessarily be the traveler
    - `firstName` string, required — The first name of the payer
    - `lastName` string, required — The last name of the payer
    - `email` string, required — The email address of the payer
    - `phone` string, required — The phone number of the payer, if available
  - `guests` object[], required — This represents a list of all individuals included in the hotel reservation
    - `occupancyNumber` integer, required — An array where each object represents the primary guest assigned to a specific booked room. There is a 1:1 mapping between guests and rooms, meaning each guest object corresponds to a single room in the booking. (Doc for more details: https://docs.liteapi.travel/docs/adding-guests-durring-the-booking-step)
    - `remarks` string — Special requests or remarks for the guest's stay (not guaranteed)
    - `firstName` string, required — The first name of the primary guest staying in this assigned room
    - `lastName` string, required — The last name of the primary guest staying in the assigned room
    - `email` string, required — The email of the primary guest staying in the assigned room
    - `phone` string — The guest's contact number for verification and hotel communication
  - `metadata` object — Encapsulates essential metadata for fraud detection and compliance, including IP, location, language, device details, and marketing parameters.
    - `ip` string — ip String (or derived) IPv4/IPv6 of the requester
    - `country` string — The country inferred from the requester's IP, aiding in regional compliance.
    - `language` string — The preferred language from the user's browser settings.
    - `platform` string — The operating system or device platform from which the request originates.
    - `device_id` string — A unique identifier for the user's device, useful for tracking and security.
    - `user_agent` string — The browser/OS user agent string for verifying request authenticity.
    - `utm_medium` string — The marketing medium (e.g., email, ad) through which the service was accessed.
    - `utm_source` string — The source of the traffic, such as a search engine or social network.
    - `utm_campaign` string — An identifier for the specific marketing campaign that led to the request.
  - `customTags` object — Optional bag of up to 5 user-defined key/value labels persisted with the booking. Keys must match `^[A-Z0-9_-]+$` (uppercase letters, digits, `-`, `_`). Values are arbitrary strings up to 255 characters. These labels are returned on booking responses and can be used to filter the list endpoints via the `customTags=KEY:VALUE,KEY2:VALUE2` query parameter.
  - `payment` union, required — Specifies the payment method for completing the booking
    - object — Payment methods that don't require a transaction ID. These methods use pre-configured payment settings: ACC_CREDIT_CARD uses stored card details (in sandbox mode, this can be used to simulate a booking without getting charged), WALLET uses available wallet balance, and CREDIT allows payment on credit line.
      - `method` 'ACC_CREDIT_CARD' | 'WALLET' | 'CREDIT', required — The payment method used for the transaction. This determines where the money for the booking comes from.
    - object — Payment method using TRANSACTION_ID. Required when using the Payment SDK for processing payments. This method requires both the payment method and transaction ID from the prebook step.
      - `method` 'TRANSACTION_ID', required — The payment method used for the transaction. This determines where the money for the booking comes from.
      - `transactionId` string, required — The unique identifier for the transaction from the prebook step and only used with the payment SDK and the TRANSACTION method
  - `guestPayment` object — The payment method used for the transaction. This determines where the money for the booking comes from. Recommended to be added when you are merchant of record to improve the fraud detection system.
    - `phone` string, required — Contact number associated with the payment
    - `method` string, required — Payment method used (e.g., ACC_CREDIT_CARD, WALLET).
    - `payee_last_name` string, required — Last name of the person making the payment
    - `payee_first_name` string, required — First name of the person making the payment
    - `last_4_digits` string, required — Last 4 digits of the credit card used for payment
    - `address` object — Billing address details of the payee
      - `city` string — City of the billing address
      - `address` string — Street address
      - `country` string — Country of the billing address
      - `postal_code` string — Postal or ZIP code

## Response `200`

Successful response

- object
  - `data` object
    - `bookingId` string, required — The unique identifier for the confirmed booking. This is used to reference the booking later via the API or calls for support.
    - `clientReference` string — A reference ID provided by the client (you) for tracking purposes.
    - `supplierBookingId` string — The booking ID assigned by the supplier. Not needed, use bookingId instead.
    - `supplierBookingName` string — The name associated with the booking in the supplier's system. By default, Nuitee.
    - `supplier` string — The supplier handling this booking. By default, Nuitee.
    - `supplierId` integer — The unique numerical identifier for the supplier. By default, 2 for Nuitee.
    - `status` string, required — The current status of the booking. At this point it will be CONFIRMED, the other option for this field is CANCELED.
    - `hotelConfirmationCode` string — The confirmation code issued by the hotel for the booking. Not available at booking time. Nuitee performs a manual process to to contact the hotel and get the confirmation number.
    - `checkin` string, date, required — The check-in date for the booking (ISO format).
    - `checkout` string, date, required — The check-out date for the booking (ISO format).
    - `hotel` object — An object containing details about the booked hotel.
      - `hotelId` string — The unique identifier of the hotel.
      - `name` string — The name of the hotel.
    - `bookedRooms` object[]
      - `roomType` object — An object containing details about the booked room type.
        - `roomTypeId` string — Unique identifier for the room type.
        - `name` string — The name of the booked room type.
      - `boardType` string — A short code representing the meal plan included with the booking.
      - `boardName` string — The full name of the meal plan included in the booking.
      - `adults` integer — Number of adults in this room.
      - `children` integer — Number of children in this room.
      - `rate` object — An object containing rate information for the booked room.
        - `rateId` string — The unique identifier for a specific rate within the offer.
        - `retailRate` object — An object with details about the retail price of the booking.
          - `total` object — an object containing the total cost of the rate
            - `amount` integer — The total cost amount due to book this room. This is what the end user will pay.
            - `currency` string — The currency the total is in.
        - `cancellationPolicies` object — An object containing the cancellation rules and conditions for the booking.
          - `cancelPolicyInfos` object[] — An array of objects detailing specific cancellation penalties and deadlines.
            - `cancelTime` string — The deadline to cancel before incurring a fee (ISO datetime format).
            - `amount` number — The monetary penalty applied if the booking is canceled after the deadline. Can be 0 which means its fully refundable.
            - `currency` string — The currency of the cancellation fee.
            - `type` string — The type of cancellation penalty (e.g., 'amount' for a fixed fee).
            - `timezone` string — The timezone in which the cancellation policy applies. Always GMT, even if not listed.
          - `hotelRemarks` object[] — An array of additional remarks from the hotel regarding cancellations.
          - `refundableTag` string — Indicates whether the booking is refundable, Either 'NRFN' for non-refundable or RFN for refundable.
        - `maxOccupancy` integer — The maximum number of guests allowed in this room.
        - `boardType` string — A short code representing the meal plan included with the booking.
        - `boardName` string — The full name of the meal plan included in the booking.
        - `remarks` string — Any special remarks related to the booking or room type.
        - `perks` object[] — An array of perks or benefits associated with this rate.
          - `perkId` integer — Unique identifier for the perk.
          - `name` string — The name or description of the perk.
          - `amount` number — The monetary value of the perk.
          - `currency` string — The currency of the perk amount.
          - `level` string — The level or tier of the perk.
      - `firstName` string — The first name of the person responsible for the booking.
      - `lastName` string — The last name of the person responsible for the booking.
      - `childrenAges` integer[], nullable — Ages of children in this room.
      - `board` string — The full name of the meal plan included in the booking.
      - `boardCode` string — A short code representing the meal plan included with the booking.
      - `cancellationPolicies` object — An object containing the cancellation rules and conditions for the booking.
        - `cancelPolicyInfos` object[] — An array of objects detailing specific cancellation penalties and deadlines.
          - `cancelTime` string — The deadline to cancel before incurring a fee (ISO datetime format).
          - `amount` number — The monetary penalty applied if the booking is canceled after the deadline. Can be 0 which means its fully refundable.
          - `currency` string — The currency of the cancellation fee.
          - `type` string — The type of cancellation penalty (e.g., 'amount' for a fixed fee).
          - `timezone` string — The timezone in which the cancellation policy applies. Always GMT, even if not listed.
        - `hotelRemarks` object[] — An array of additional remarks from the hotel regarding cancellations.
        - `refundableTag` string — Indicates whether the booking is refundable, Either 'NRFN' for non-refundable or RFN for refundable.
      - `room_id` string — Unique identifier for the room.
      - `occupancy_number` integer — Occupancy number within this booking.
      - `amount` number — Room price for this booking.
      - `currency` string — Currency code for the room cost.
      - `children_count` integer — Number of children in this room.
      - `remarks` string — Additional remarks for this room.
      - `guests` object[] — Guest details for this room.
        - `firstName` string — Guest's first name.
        - `lastName` string — Guest's last name.
        - `email` string — Guest's email address.
        - `phone` string — Guest's phone number.
        - `remarks` string — Remarks specific to this guest.
        - `occupancyNumber` integer — Occupancy number for this guest.
    - `holder` object — An object containing details of the person responsible for the booking.
      - `firstName` string — The first name of the person responsible for the booking.
      - `lastName` string — The last name of the person responsible for the booking.
      - `email` string — The email address of the person responsible for the booking.
      - `phone` string — The phone number of the person responsible for the booking.
    - `createdAt` string, date-time, required — The timestamp when the booking was created.
    - `updatedAt` string, date-time — The timestamp when the booking was last updated.
    - `cancellationPolicies` object — An object detailing the cancellation rules and penalties for the booking.
      - `cancelPolicyInfos` object[] — An array of objects listing specific cancellation policies and penalties.
        - `cancelTime` string — The deadline to cancel before incurring a fee (ISO datetime format).
        - `amount` number — The monetary penalty applied if the booking is canceled after the deadline. Can be 0 which means its fully refundable.
        - `type` string — The type of cancellation penalty (e.g., 'amount' for a fixed fee).
        - `timezone` string — The timezone in which the cancellation policy applies. Always GMT, even if not listed.
        - `currency` string — The currency of the cancellation fee.
      - `hotelRemarks` string[] — An array of additional remarks from the hotel about the booking.
      - `refundableTag` string — Indicates whether the booking is refundable (e.g., 'NRFN' for non-refundable).
    - `price` number, required — The final total price of all rooms on the booking.
    - `commission` number — The total commission amount associated with all rooms on the booking.
    - `currency` string, required — The currency in which the booking price is displayed.
    - `guestId` integer — Guest ID associated with the booking.
    - `trackingId` string — The tracking identifier for the booking.
    - `prebookId` string — The identifier from the pre-booking step.
    - `sellingPrice` string — The total selling price of the booking.
    - `exchangeRate` number — The exchange rate used for currency conversion.
    - `exchangeRateUsd` number — The USD exchange rate for the booking.
    - `tag` string — Indicates if the booking is refundable ('RFN' for refundable, 'NRFN' for non-refundable).
    - `lastFreeCancellationDate` string — The latest date/time when the booking can be canceled without penalties (ISO 8601 format).
    - `userId` integer — The ID of the user who made the booking.
    - `nationality` string — The nationality of the guest.
    - `loyaltyGuestId` integer — The loyalty or membership ID of the guest.
    - `cancelledAt` string, date-time — The timestamp when the booking was cancelled.
    - `refundedAt` string, date-time — The timestamp when the booking was refunded.
    - `cancelledBy` integer — The ID of who cancelled the booking, empty in this step.
    - `remarks` string — Any additional notes related to the booking.
    - `hotelRemarks` string — Hotel-specific remarks from the booking.
    - `addonsTotalAmount` number — The total amount charged for any additional services or extras.
    - `addon` object[] — An array of objects specifying additional services or extras included in the booking.
      - `addon` string — The name or type of the additional service or extra.
      - `value` number — The price of the addon in the specified currency.
      - `currency` string — The currency in which the addon is priced.
      - `originalValue` number — The original price of the addon before any discounts.
      - `originalCurrency` string — The original currency of the addon price.
      - `expiryDate` string — The expiration date of the addon, if applicable.
      - `addonVoucherCode` string — A code associated with the addon voucher, if applicable.
      - `addonVoucherId` integer — A unique identifier for the addon voucher.
      - `status` string — The current status of the addon (e.g., active, expired).
    - `goodwillPayment` object — Goodwill payment information for the booking.
      - `amount` number — The amount of the payment.
      - `currency` string — The currency of the payment.
      - `description` string — Short description of the payment.
  - `guestLevel` integer — The guest's loyalty or membership level, if applicable.
  - `sandbox` boolean — Indicates whether this booking is in a test/sandbox environment (true/false).

## Other responses

- `400` — Bad request errors
- `401` — Unauthorized

---

[API](https://skmtc.net/liteapi/apis/api-search.md) · [All operations](https://skmtc.net/liteapi/apis/api-search/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/liteapi/api-search/versions/315ba2a4dcf4/schema)
