# Start booking process

URL: https://docs.emergingtravel.com/docs/b2b-api/booking/start-booking-process/

Tags: b2b

---



**Sandbox**

```
https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/
```

**Production**

```
https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/
```




> [!NOTE]
> * <strong>This call is required</strong>.
> * Request this call right after the [Create booking process](/docs/b2b-api/booking/create-booking-process/) call.
> * As the booking process is made asynchronously, repeatedly request the [Check booking process](/docs/b2b-api/booking/check-booking-process/) call to know the status.



The call starts the booking process.

> [!WARNING]
> If invalid user data is used, the data may be added to the stop list.



## Sandbox limitations { #limitations }

> [!WARNING]
> Use only field values, IDs, API keys, and any static content from the sandbox environment within the sandbox. <strong>Do not use sandbox data in test or production environments, and do not mix data or configuration between different environments.</strong>




* The possible values for the `payment_type.type` field are `hotel` and `deposit`.
* The value of the `payment_type.currency_code` field is always `USD`.
* The following fields are not supported: `payment_type.init_uuid`, `payment_type.pay_uuid`, `upsell_data`, and `return_path`.
* For all objects with the `currency_code` field the value is always `EUR`.
* The following errors are not supported: `book_hash_not_found`, `rate_not_found`, `return_path_required`, `not_enough_credit_card_data`, `incorrect_init_uuid_format`, and `incorrect_pay_uuid_format`.

## Request example


**Sandbox**

```shell
curl --user '<KEY_ID>:<API_KEY>' 'https://api-sandbox.worldota.net/api/b2b/v3/hotel/order/booking/finish/' \
--header 'Content-Type: application/json' \
--data '{
  "user": {
    "email": "john.smith@example.com",
    "comment": "The user comment.",
    "phone": "12124567899"
  },
  "supplier_data": {
    "first_name_original": "Peter",
    "last_name_original": "Collins",
    "phone": "12124567880",
    "email": "peter.collins@example.com"
  },
  "partner": {
    "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6",
    "comment": "The partner comment.",
    "amount_sell_b2b2c": "10"
  },
  "language": "en",
  "rooms": [
    {
      "guests": [
        {
          "first_name": "Martin",
          "last_name": "Smith"
        },
        {
          "first_name": "Eliot",
          "last_name": "Smith"
        }
      ]
    }
  ],
  "upsell_data": [
    {
      "name": "early_checkin",
      "uid": "d7b56e81-b874-40ee-b195-e2f73d1ec714"
    },
    {
      "name": "late_checkout",
      "uid": "c4013ea8-3ffd-4eee-bbbc-37693670031e"
    }
  ],
  "payment_type": {
    "type": "deposit",
    "amount": "9",
    "currency_code": "EUR"
  },
  "return_path": "https://example.com"
}'
```

**Production**

```shell
curl --user '<KEY_ID>:<API_KEY>' 'https://api.worldota.net/api/b2b/v3/hotel/order/booking/finish/' \
--header 'Content-Type: application/json' \
--data '{
  "user": {
    "email": "john.smith@example.com",
    "comment": "The user comment.",
    "phone": "12124567899"
  },
  "supplier_data": {
    "first_name_original": "Peter",
    "last_name_original": "Collins",
    "phone": "12124567880",
    "email": "peter.collins@example.com"
  },
  "partner": {
    "partner_order_id": "0b370500-5321-4046-92c5-5982f1a64fc6",
    "comment": "The partner comment.",
    "amount_sell_b2b2c": "10"
  },
  "language": "en",
  "rooms": [
    {
      "guests": [
        {
          "first_name": "Martin",
          "last_name": "Smith"
        },
        {
          "first_name": "Eliot",
          "last_name": "Smith"
        }
      ]
    }
  ],
  "upsell_data": [
    {
      "name": "early_checkin",
      "uid": "d7b56e81-b874-40ee-b195-e2f73d1ec714"
    },
    {
      "name": "late_checkout",
      "uid": "c4013ea8-3ffd-4eee-bbbc-37693670031e"
    }
  ],
  "payment_type": {
    "type": "deposit",
    "amount": "9",
    "currency_code": "EUR"
  },
  "return_path": "https://example.com"
}'
```




## Request body



[//]: # (arrival_datetime)
- **arrival_datetime** *(DateTime, optional)*

  <p>The estimated arrival time to the hotel (12-hour format with <code>*_day_period</code>; otherwise 24-hour format).</p>


[//]: # (language)
- **language** *(String, required)*

  <p>The language.</p>
  > [!NOTE]
  > The possible values:
  > * `ar` — Arabic.
  > * `bg` — Bulgarian.
  > * `cs` — Czech.
  > * `da` — Danish.
  > * `de` — German.
  > * `el` — Greek.
  > * `en` — English.
  > * `es` — Spanish.
  > * `fi` — Finnish.
  > * `fr` — French.
  > * `he` — Hebrew.
  > * `hu` — Hungarian.
  > * `it` — Italian.
  > * `ja` — Japanese.
  > * `kk` — Kazakh.
  > * `ko` — Korean.
  > * `nl` — Dutch.
  > * `no` — Norwegian Bokmål.
  > * `pl` — Polish.
  > * `pt` — Portuguese.
  > * `pt_PT` — European Portuguese.
  > * `ro` — Romanian.
  > * `ru` — Russian.
  > * `sq` — Albanian.
  > * `sr` — Serbian.
  > * `sv` — Swedish.
  > * `th` — Thai.
  > * `tr` — Turkish.
  > * `uk` — Ukrainian.
  > * `vi` — Vietnamese.
  > * `zh_CN` — Simplified Chinese.
  > * `zh_TW` — Traditional Chinese.


[//]: # (partner)
- **partner** *(Object, required)*

  <p>The partner information.</p>
  <ul>
  <li>
  <p><strong>partner_order_id</strong> <em>(String, required)</em></p>
  <p>The external booking ID in the [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
   format.</p>
  <p>The ID remains the same if you cancel a booking that:</p>
  <ul>
  <li>Is successful.</li>
  <li>Is failed.</li>
  <li>Has the fail status response from the [Check booking process](/docs/b2b-api/booking/check-booking-process/)
   call.</li>
  </ul>
  <p>Use this field for the rest of the booking calls.</p>
  > [!NOTE]
  > * The value should be unique for the order within the same contact.
  > * The minimum length is `3` character.
  > * The maximum length is `256` characters.
  </li>
  <li>
  <p><strong>comment</strong> <em>(String, optional)</em></p>
  <p>The partner booking internal comment.</p>
  <p>The comment isn’t sent to the hotel and not processed by the ETG API support team. It is visible only to the partner itself.</p>
  > [!NOTE]
  > * The minimum length is `1` character.
  > * The maximum length is `256` character.
  </li>
  <li>
  <p><strong>amount_sell_b2b2c</strong> <em>(String, optional)</em></p>
  <p>The resale price for the user in the contract currency.</p>
  <p>The value is accepted if transferred (even if automatic completion of the resale price value is activated) and is displayed in the confirmatory accounting documents for the partners.</p>
  > [!NOTE]
  > * The minimum value is `1`.
  </li>
  </ul>


[//]: # (payment_type)
- **payment_type** *(Object, required)*

  <p>The order payment information.</p>
  <ul>
  <li>
  <p><strong>type</strong> <em>(String, required)</em></p>
  <p>The payment type.</p>
  > [!NOTE]
  > * The possible values:
  >   * `now`. Use it to allow the user to pay for the booking via the ETG payment system:
  >     1. Request the [Create booking process](/docs/b2b-api/booking/create-booking-process/) call and get the card details.
  >     1. Request the [Create credit card token](/docs/b2b-api/booking/create-credit-card-token/) call with the card details.
  >   * `hotel`. Use it to allow the user to pay for the booking upon check-in at the hotel. The user won’t be charged now.
  >   * `deposit`. Use it to allow you to charge the user bank card for the booking by yourself:
  >     1. You need to keep your ETG deposit sufficient. To increase funds, contact your account manager.
  >     1. The user makes a booking.
  >     1. You charge the user bank card.
  >     1. The ETG writes funds from your deposit by themselves during the reporting period.
  > 
  >     Every payment goes under a credit limit for the deposit.
  </li>
  <li>
  <p><strong>amount</strong> <em>(String, required)</em></p>
  <p>The booking amount in the currency specified by the <code>currency_code</code> field.</p>
  </li>
  <li>
  <p><strong>currency_code</strong> <em>(String, required)</em></p>
  <p>The amount currency code in the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
   format.</p>
  <blockquote>
  <p>[!NOTE]</p>
  <ul>
  <li>The length is <code>3</code> characters.</li>
  <li>The possible values:
  <ul>
  <li><code>AED</code>.</li>
  <li><code>AFN</code>.</li>
  <li><code>ALL</code>.</li>
  <li><code>AMD</code>.</li>
  <li><code>ANG</code>.</li>
  <li><code>AOA</code>.</li>
  <li><code>ARS</code>.</li>
  <li><code>AUD</code>.</li>
  <li><code>AWG</code>.</li>
  <li><code>AZN</code>.</li>
  <li><code>BAM</code>.</li>
  <li><code>BBD</code>.</li>
  <li><code>BDT</code>.</li>
  <li><code>BGN</code>.</li>
  <li><code>BHD</code>.</li>
  <li><code>BIF</code>.</li>
  <li><code>BMD</code>.</li>
  <li><code>BND</code>.</li>
  <li><code>BOB</code>.</li>
  <li><code>BOV</code>.</li>
  <li><code>BRL</code>.</li>
  <li><code>BSD</code>.</li>
  <li><code>BTN</code>.</li>
  <li><code>BWP</code>.</li>
  <li><code>BYR</code>.</li>
  <li><code>BYN</code>.</li>
  <li><code>BZD</code>.</li>
  <li><code>CAD</code>.</li>
  <li><code>CDF</code>.</li>
  <li><code>CHE</code>.</li>
  <li><code>CHF</code>.</li>
  <li><code>CHW</code>.</li>
  <li><code>CLF</code>.</li>
  <li><code>CLP</code>.</li>
  <li><code>CNY</code>.</li>
  <li><code>COP</code>.</li>
  <li><code>COU</code>.</li>
  <li><code>CRC</code>.</li>
  <li><code>CUC</code>.</li>
  <li><code>CUP</code>.</li>
  <li><code>CVE</code>.</li>
  <li><code>CZK</code>.</li>
  <li><code>DJF</code>.</li>
  <li><code>DKK</code>.</li>
  <li><code>DOP</code>.</li>
  <li><code>DZD</code>.</li>
  <li><code>EGP</code>.</li>
  <li><code>ERN</code>.</li>
  <li><code>ETB</code>.</li>
  <li><code>EUR</code>.</li>
  <li><code>FJD</code>.</li>
  <li><code>FKP</code>.</li>
  <li><code>GBP</code>.</li>
  <li><code>GEL</code>.</li>
  <li><code>GHS</code>.</li>
  <li><code>GIP</code>.</li>
  <li><code>GMD</code>.</li>
  <li><code>GNF</code>.</li>
  <li><code>GTQ</code>.</li>
  <li><code>GYD</code>.</li>
  <li><code>HKD</code>.</li>
  <li><code>HNL</code>.</li>
  <li><code>HRK</code>.</li>
  <li><code>HTG</code>.</li>
  <li><code>HUF</code>.</li>
  <li><code>IDR</code>.</li>
  <li><code>ILS</code>.</li>
  <li><code>INR</code>.</li>
  <li><code>IQD</code>.</li>
  <li><code>IRR</code>.</li>
  <li><code>ISK</code>.</li>
  <li><code>JMD</code>.</li>
  <li><code>JOD</code>.</li>
  <li><code>JPY</code>.</li>
  <li><code>KES</code>.</li>
  <li><code>KGS</code>.</li>
  <li><code>KHR</code>.</li>
  <li><code>KMF</code>.</li>
  <li><code>KPW</code>.</li>
  <li><code>KRW</code>.</li>
  <li><code>KWD</code>.</li>
  <li><code>KYD</code>.</li>
  <li><code>KZT</code>.</li>
  <li><code>LAK</code>.</li>
  <li><code>LBP</code>.</li>
  <li><code>LKR</code>.</li>
  <li><code>LRD</code>.</li>
  <li><code>LSL</code>.</li>
  <li><code>LTL</code>.</li>
  <li><code>LVL</code>.</li>
  <li><code>LYD</code>.</li>
  <li><code>MAD</code>.</li>
  <li><code>MDL</code>.</li>
  <li><code>MGA</code>.</li>
  <li><code>MKD</code>.</li>
  <li><code>MMK</code>.</li>
  <li><code>MNT</code>.</li>
  <li><code>MOP</code>.</li>
  <li><code>MRO</code>.</li>
  <li><code>MUR</code>.</li>
  <li><code>MVR</code>.</li>
  <li><code>MWK</code>.</li>
  <li><code>MXN</code>.</li>
  <li><code>MXV</code>.</li>
  <li><code>MYR</code>.</li>
  <li><code>MZN</code>.</li>
  <li><code>NAD</code>.</li>
  <li><code>NGN</code>.</li>
  <li><code>NIO</code>.</li>
  <li><code>NOK</code>.</li>
  <li><code>NPR</code>.</li>
  <li><code>NZD</code>.</li>
  <li><code>OMR</code>.</li>
  <li><code>PAB</code>.</li>
  <li><code>PEN</code>.</li>
  <li><code>PGK</code>.</li>
  <li><code>PHP</code>.</li>
  <li><code>PKR</code>.</li>
  <li><code>PLN</code>.</li>
  <li><code>PYG</code>.</li>
  <li><code>QAR</code>.</li>
  <li><code>RON</code>.</li>
  <li><code>RSD</code>.</li>
  <li><code>RUB</code>.</li>
  <li><code>RWF</code>.</li>
  <li><code>SAR</code>.</li>
  <li><code>SBD</code>.</li>
  <li><code>SCR</code>.</li>
  <li><code>SDG</code>.</li>
  <li><code>SEK</code>.</li>
  <li><code>SGD</code>.</li>
  <li><code>SHP</code>.</li>
  <li><code>SLL</code>.</li>
  <li><code>SOS</code>.</li>
  <li><code>SRD</code>.</li>
  <li><code>SSP</code>.</li>
  <li><code>STD</code>.</li>
  <li><code>SVC</code>.</li>
  <li><code>SYP</code>.</li>
  <li><code>SZL</code>.</li>
  <li><code>THB</code>.</li>
  <li><code>TJS</code>.</li>
  <li><code>TMT</code>.</li>
  <li><code>TND</code>.</li>
  <li><code>TOP</code>.</li>
  <li><code>TRY</code>.</li>
  <li><code>TTD</code>.</li>
  <li><code>TWD</code>.</li>
  <li><code>TZS</code>.</li>
  <li><code>UAH</code>.</li>
  <li><code>UGX</code>.</li>
  <li><code>USD</code>.</li>
  <li><code>USN</code>.</li>
  <li><code>USS</code>.</li>
  <li><code>UYI</code>.</li>
  <li><code>UYU</code>.</li>
  <li><code>UZS</code>.</li>
  <li><code>VEF</code>.</li>
  <li><code>VND</code>.</li>
  <li><code>VUV</code>.</li>
  <li><code>WST</code>.</li>
  <li><code>XAF</code>.</li>
  <li><code>XAG</code>.</li>
  <li><code>XAU</code>.</li>
  <li><code>XBA</code>.</li>
  <li><code>XBB</code>.</li>
  <li><code>XBC</code>.</li>
  <li><code>XBD</code>.</li>
  <li><code>XCD</code>.</li>
  <li><code>XDR</code>.</li>
  <li><code>XFU</code>.</li>
  <li><code>XOF</code>.</li>
  <li><code>XPD</code>.</li>
  <li><code>XPF</code>.</li>
  <li><code>XPT</code>.</li>
  <li><code>XSU</code>.</li>
  <li><code>XTS</code>.</li>
  <li><code>XUA</code>.</li>
  <li><code>YER</code>.</li>
  <li><code>ZAR</code>.</li>
  <li><code>ZMW</code>.</li>
  <li><code>ZWL</code>.</li>
  </ul>
  </li>
  </ul></blockquote>
  </li>
  <li>
  <p><strong>init_uuid</strong> <em>(String, optional)</em></p>
  <p>The external booking token ID in the [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
   format.</p>
  > [!NOTE]
  > * The length is `36` characters.
  > * Must be unique for every payment. Otherwise, the ETG will return an error.
  > * The value matches the pattern: `^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$`.
  > * Is required for bookings where the `is_need_credit_card_data` field was passed with the `true` value.
  > * Should be the same with the `init_uuid` field value from the [Create credit card token](/docs/b2b-api/booking/create-credit-card-token/)) call.
  </li>
  <li>
  <p><strong>pay_uuid</strong> <em>(String, optional)</em></p>
  <p>The external booking payment ID in the [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
   format.</p>
  > [!NOTE]
  > * The length is `36` characters.
  > * Must be unique for every payment. Otherwise, the ETG will return an error.
  > * The value matches the pattern: `^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$`.
  > * Is required for bookings where the `is_need_credit_card_data` field was passed with the `true` value.
  > * Should be the same with the `pay_uuid` field value from the [Create credit card token](/docs/b2b-api/booking/create-credit-card-token/)) call.
  </li>
  </ul>


[//]: # (upsell_data)
- **upsell_data** *(Object, optional)*

  <p>The order upsell information.</p>
  <blockquote>
  <p>[!WARNING]</p>
  <ul>
  <li>Set these parameters only when the user really needs additional services.</li>
  <li>Only one early check-in and one late check-out should be requested and selected.</li>
  </ul></blockquote>
  <ul>
  <li>
  <p><strong>attributes</strong> <em>(String, optional)</em></p>
  <p>The upsell check-in and check-out dates.</p>
  <ul>
  <li>
  <p><strong>checkin_datetime</strong> <em>(Datetime, optional)</em></p>
  <p>The upsell check-in date and time (12-hour format with <code>*_day_period</code>; otherwise 24-hour format).</p>
  </li>
  <li>
  <p><strong>checkout_datetime</strong> <em>(Datetime, optional)</em></p>
  <p>The upsell check-out date and time (12-hour format with <code>*_day_period</code>; otherwise 24-hour format).</p>
  </li>
  </ul>
  </li>
  <li>
  <p><strong>name</strong> <em>(String, optional)</em></p>
  <p>The upsell name.</p>
  > [!NOTE]
  > * The possible values:
  >     * `early_checkin`.
  >     * `late_checkout`.
  </li>
  <li>
  <p><strong>rule_id</strong> <em>(Int, optional)</em></p>
  <p>The upsell rule ID.</p>
  </li>
  <li>
  <p><strong>uid</strong> <em>(String, optional)</em></p>
  <p>The upsell ID.</p>
  > [!NOTE]
  > * Use the value of the `uid` field from the [Create booking process](/docs/b2b-api/booking/create-booking-process/) call.
  </li>
  </ul>


[//]: # (return_path)
- **return_path** *(String, optional)*

  <p>The URL at your side to redirect the user to. It is done by the payment gateway after 3D Secure check. The [reason](/docs/fundamentals/security-features/#urls)
   the ETG needs it.</p>
  <p><b>This field is required</b> if the rate you are booking has the <code>payment_types</code> field with the <code>now</code> value.</p>
  <p>The field <code>data_3ds</code> of the [Check booking process](/docs/b2b-api/booking/check-booking-process/)
   call will have the <code>null</code> value if:</p>
  <ul>
  <li>You don’t pass this field.</li>
  <li>The issuing bank requires 3D Secure check.</li>
  </ul>
  > [!NOTE]
  > * Must have the HTTPS scheme.
  > * Might have GET parameters.
  > * The minimum length is `1` character.
  > * The maximum length is `256` character.


[//]: # (rooms)
- **rooms** *([Object], required)*

  <p>The guests’ information for the rooms.</p>
  <ul>
  <li>
  <p><strong>guests</strong> <em>(Object, required)</em></p>
  <p>The guests’ information.</p>
  <ul>
  <li>
  <p><strong>first_name</strong> <em>(String, required or optional)</em></p>
  <p>The guest first name.</p>
  > [!NOTE]
  > * It is mandatory to provide the first name for at least one guest in each booked room.
  > * The minimum length is `1` character.
  > * The maximum length is `50` characters.
  > * Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: `'-,.’`.
  </li>
  <li>
  <p><strong>last_name</strong> <em>(String, required or optional)</em></p>
  <p>The guest last name. For test purposes use the <code>Ratehawk</code> value.</p>
  > [!NOTE]
  > * It is mandatory to provide the last name for at least one guest in each booked room.
  > * The minimum length is `1` character.
  > * The maximum length is `50` characters.
  > * Digits and non-word symbols are prohibited, field should contain only unicode letters (Latin, Cyrillic, Hebrew, Hindi, Bengali, Thai etc.), spaces or following special characters: `'-,.’`.
  </li>
  <li>
  <p><strong>is_child</strong> <em>(Boolean, required or optional)</em></p>
  <p>Whether the guest is a child or not.</p>
  > [!NOTE]
  > Guests are considered adults unless `is_child` = `true`, even if their `age` is that of a child.
  </li>
  <li>
  <p><strong>age</strong> <em>(Int, required or optional)</em></p>
  <p>The child age in years.</p>
  > [!NOTE]
  > * Specify the child's age if there are children in the booking request (`is_child` = `true`).
  > * The minimum value is `0`.
  > * The maximum value is `17`.
  </li>
  <li>
  <p><strong>gender</strong> <em>(String, optional)</em></p>
  <p>The guest gender.</p>
  > [!NOTE]
  > * Is required if the hotel you intend to book has the `is_gender_specification_required` field with the `true` value. The field appears only in the [Retrieve hotel content](/docs/b2b-api/static-content/retrieve-hotel-content/) call response.
  > * The possible values:
  >   * `male`.
  >   * `female`.
  >   * `unknown`.
  </li>
  </ul>
  </li>
  </ul>


[//]: # (user)
- **user** *(Object, required)*

  <p>The partner manager additional information.</p>
  <ul>
  <li>
  <p><strong>comment</strong> <em>(String, optional)</em></p>
  <p>The partner manager comments sent to the hotel.</p>
  > [!NOTE]
  > * The minimum length is `1` character.
  > * The maximum length is `256` character.
  </li>
  <li>
  <p><strong>email</strong> <em>(String, required)</em></p>
  <p>The partner manager email address for contact purposes and sending transactional emails. The email address must be valid.</p>
  <p>To view all bookings in your account, get a Master or Supervisor type of account. With Manager type the user will see only reservations with their own email address.</p>
  </li>
  <li>
  <p><strong>phone</strong> <em>(String, required)</em></p>
  <p>The partner manager phone number for contacting purposes. The phone number must be valid.</p>
  > [!NOTE]
  > * The minimum length is `5` characters.
  > * The maximum length is `35` characters.
  </li>
  </ul>


[//]: # (supplier_data)
- **supplier_data** *(Object, required or optional)*

  <p>The contact details of the user who initiated the booking.</p>
  > [!NOTE]
  > * To know if the field is required for you, contact your account manager.
  <ul>
  <li>
  <p><strong>first_name_original</strong> <em>(String, required)</em></p>
  <p>The first name of the user who initiated the booking.</p>
  > [!NOTE]
  > * To know if the field is required for you, contact your account manager.
  </li>
  <li>
  <p><strong>last_name_original</strong> <em>(String, required)</em></p>
  <p>The last name of the user who initiated the booking.</p>
  > [!NOTE]
  > * To know if the field is required for you, contact your account manager.
  </li>
  <li>
  <p><strong>email</strong> <em>(String, required)</em></p>
  <p>The email address of the user who initiated the booking.</p>
  > [!NOTE]
  > * To know if the field is required for you, contact your account manager.
  </li>
  <li>
  <p><strong>phone</strong> <em>(String, required)</em></p>
  <p>The phone number of the user who initiated the booking.</p>
  > [!NOTE]
  > * To know if the field is required for you, contact your account manager.
  > * The minimum length is `5` characters.
  > * The maximum length is `35` characters.
  </li>
  </ul>





## Response example

```json
{
  "data": null,
  "debug": null,
  "error": null,
  "status": "ok"
}
```

## Errors

The `error` field has the value specified in the headers below.

### `book_hash_not_found`

A rare internal error when the ETG couldn’t recognize the `book_hash` used in the booking.

After getting the error, the only option is to find another rate and continue with it.

### `booking_form_expired`

In case [Create booking process](/docs/b2b-api/booking/create-booking-process/) has been expired.

Request a new [Create booking process](/docs/b2b-api/booking/create-booking-process/) with a different `partner_order_id`.

### `chosen_payment_type_was_not_available_on_booking_form`

The `payment_type` field values don’t match any of the `payment_types` field values in the response of the [Create booking process](/docs/b2b-api/booking/create-booking-process/) call.

Try to change the `payment_type` field value according to the `payment_types` field values in the response.

### `double_booking_finish`

An attempt to finish the booking for the second time while the status of the first attempt isn’t an error.

### `email`

The provided email address isn’t valid.

### `incorrect_chosen_payment_type`

Invalid data provided in the `payment_type` field of the call request. The supplied `type`, `amount`, and/or `currency_code` values do not match any of the `payment_type` options received from the [Create booking process](/docs/b2b-api/booking/create-booking-process/#payment_types) call.

### `incorrect_guests_number`

The adult guest number doesn’t match the adult guest number in the request of the [Retrieve hotelpage](/docs/b2b-api/hotel-search/retrieve-hotelpage/) call.

Try to change the `rooms` field item number according to the `guests` field values in the request.

The total number of adults derived from rooms[].guests[] does not match the search query. Any guest without `is_child` = `true` is treated as an adult (the `age` field alone does not mark a guest as a child).

### `incorrect_children_data`

* The children guest number doesn’t match the children guest number in the request of the [Retrieve hotelpage](/docs/b2b-api/hotel-search/retrieve-hotelpage/) call.
* The children age is incorrect.

Try to change:
* The `rooms` field item number according to the `guests` field values in the request.
* The `age` field value.

### `incorrect_rooms_number`

The room number doesn’t match the room number in the request of the [Retrieve hotelpage](/docs/b2b-api/hotel-search/retrieve-hotelpage/) call.

Try to change the `rooms` field item number according to the `guests` field values in the request.

### `insufficient_b2b_balance`

In case the credit limit is not sufficient for the reservation.
To discuss changes to this limit please contact your account manager.

### `order_not_found`

The order with the `partner_order_id` field value isn’t found.

Send another booking creation request and change the `partner_order_id` field value.

### `rate_not_found`

The rate isn’t found. Send another search request.

### `return_path_required`

The `return_path` field is required if the rate you are booking has the `payment_types` field with the `now` value.

### `unauthorized_group_booking`

An attempt to make a request with the conditions:
* More than 9 bookings in the same hotel.
* More than 9 bookings for the same dates.
* In one request.

To make a group booking:
* Contact the API support team.
* Fill in the group booking form on the site.

### `invalid_upsell_attributes`

Invalid name and attributes combination in `upsell_data` field.

### `invalid_upsell_uid`

Invalid upsell uid in `upsell_data` field.

### `invalid_upsell_data`

Only early check-in and late check-out can be specified in the `upsell_data`, with a maximum of two values allowed.

### `arrival_date_differs_from_checkin_date`

The check-in date should be equal to or the day after the check-in date in the request of the [Retrieve hotelpage](/docs/b2b-api/hotel-search/retrieve-hotelpage/) call.

Try to change the `checkin_datetime` field value according to the `checkin` field value in the request.

### `not_enough_credit_card_data`

The `init_uuid` and `pay_uuid` fields are required if the rate you are booking has the `is_need_credit_card_data` field with the `true` value.

### `incorrect_init_uuid_format`

The `init_uuid` field values don’t match the regular expression.

### `incorrect_pay_uuid_format`

The `pay_uuid` field values don’t match the regular expression.

### `sandbox_restriction`

An attempt to book the test hotel with the `hid` = `6291619` or `id` = `test_hotel_do_not_book` in the [production environment](/docs/glossary/#production-environment).

To book the test hotel, use the [test environment](/docs/glossary/#test-environment).

### `supplier_data_required`

The `supplier_data` field is required for your integration. Contact your account manager.

### `timeout`, `unknown`, and `5xx`

If you get the error, it doesn’t necessarily mean the booking isn’t created. These errors may occur because of the ETG services’ timeout. To check the booking creation, send the [Check booking process](/docs/b2b-api/booking/check-booking-process/) request.

## Error Handling Diagram

Below is a sequence diagram describing how to handle errors during the start booking process:

```mermaid
sequenceDiagram
    participant User
    participant API

    User->>API: Start booking process
    alt status == "ok" or error is timeout/unknown or HTTP status code 5xx
        API-->>User: Response: status == "ok" or error is timeout/unknown or HTTP status code 5xx
        User->>User: Proceed to Check Booking Process
    else
        API-->>User: Response: other error
        User->>User: Show error and stop
    end
```
