v1

latestOpenAPI 3.0.02026-07-141046209.2 KB
Bookings

Create a booking

Creates a booking for for the rate and dates you specify in the request body.

You'll need a roomTypes[].rates[].rateId that's bookable for those dates, which you can find using the Retrieve a hotel endpoint.

If you have provided a credit card on the dashboard then Impala will send the booking to the hotel immediately. We'll ensure payment is taken care of before your guest arrives at the hotel.

  • Your guest needs to be paying you the rate specified in retailRate (as listed in the Retrieve a hotel response) before you submit this request.
  • Once your request is received and the booking is confirmed, Impala will charge you as the seller this retailRate minus the sellerCommissionPercentage (which is the affiliate commission you get to keep). We'll use the business credit card you've added to your account as payment method for this.
  • The difference between the amount you charge your guest (retailRate, e.g. 200 €) and what Impala charges you (retailRate minus sellerCommissionPercentage, e.g. 200 €) is your commission (in this example: 20 €) to keep.

You can find more information on how money flows between your guest and you, and you and Impala, in this article

<!-- theme: warning -->

This request might take up to 20 seconds to load. While we work to return a response to your request within milliseconds in most cases, some bookings require us to re-verify current pricing in real-time and doing so might take up to 20 seconds. Please make sure your app handles this waiting state appropriately.

post/bookings

Request body

endstring date required

The last day of the desired stay range in ISO 8601 format YYYY-MM-DD.

paymentType'API'

How will the guest make payment for this booking?

startstring date required

The first day of the desired stay range in ISO 8601 format YYYY-MM-DD.

Example request

{
  "bookingContact": {
    "email": "jocelin.carreon.crespo@example.com",
    "firstName": "Jocelín",
    "lastName": "Carreón Sample"
  },
  "rooms": [
    {
      "adults": 2,
      "rateId": "3rX3IaqkpJaPlttxoFoM3uDcHJEZCAuByqfBSLUPMvkBGyu7IAlhbxl3rZ7cVmVj6TbXL4EfiHlTA"
    }
  ]
}

Response

We've created the booking and are returning some of its details in the response body.

bookingIdstring required

Unique identifier for this booking within the Impala platform.

createdAtstring date-time required

Date and time (in UTC and ISO 8601 format) when the booking was created.

endstring date required

The departure date of the booking.

hotelConfirmationCodestring nullable

The hotel's confirmation identifier for this booking.

paymentBearerTokenstring nullable

If status is PAYMENT_REQUIRED, then this should be used as the Authorisation header for the POST to the /payments endpoint.

paymentClientSecretstring nullable

If status is PAYMENT_REQUIRED, then this should be used as the client secret when rendering Impala Payment Elements in the UI.

startstring date required

The arrival date of the booking.

status'CANCELLED' | 'PENDING' | 'ACCEPTED' | 'PAYMENT_REQUIRED' | 'PAYMENT_ABANDONED' required

Status of this booking within the Impala platform. When you make a booking, it'll first appear as PENDING until we receive the hotel's confirmation details. At this point your booking will move to ACCEPTED.

updatedAtstring date-time required

Date and time (in UTC and ISO 8601 format) when the booking was last updated.

Example response

{
  "bookedRooms": [
    {
      "rate": {
        "cancellationPolicies": [
          {
            "end": "2020-12-17 23:59:59.999",
            "fee": {
              "count": 100,
              "price": {
                "amount": 9500,
                "currency": {
                  "code": "EUR"
                }
              },
              "type": "PERCENTAGE"
            },
            "formatted": "Non-refundable after October 19, 2021 00:00",
            "start": "2020-12-15 23:59:59.999"
          }
        ],
        "components": [
          {
            "formatted": "breakfast",
            "type": "BREAKFAST"
          }
        ],
        "end": "2021-11-23",
        "hotelAgreement": {
          "conditions": [
            "PRIVATE_RATE"
          ],
          "dealId": "D1234",
          "dealsSellable": {
            "remaining": 5
          },
          "discount": {
            "count": 10,
            "type": "PERCENTAGE"
          },
          "hotelAgreementId": "A82983",
          "href": "v1/deal-requests/D1234/agreements/A76543",
          "specialInstructions": "This deal can only be sold via desktop (not allowed for mobile apps)"
        },
        "retailRate": {
          "taxesAndFees": {
            "includedInRate": [
              {
                "charges": {
                  "amount": 9500,
                  "currency": {
                    "code": "EUR"
                  }
                },
                "formatted": "10% VAT"
              }
            ],
            "payAtHotel": [
              {
                "charges": {
                  "amount": 9500,
                  "currency": {
                    "code": "EUR"
                  }
                },
                "formatted": "10% VAT"
              }
            ]
          },
          "total": {
            "amount": 9500,
            "currency": {
              "code": "EUR"
            }
          }
        },
        "sellerCommissionPercentage": 9.5,
        "start": "2021-11-20"
      },
      "roomType": {
        "name": "Penthouse Suite",
        "roomTypeId": "d5b192ce-c45f-46da-abf5-3880b429b7cc"
      },
      "sellerToImpalaPayment": {
        "amount": 9500,
        "currency": {
          "code": "EUR"
        }
      }
    }
  ],
  "bookingId": "IM-0199-00000103",
  "cancellation": {
    "fee": {
      "count": 100,
      "price": {
        "amount": 9500,
        "currency": {
          "code": "EUR"
        }
      },
      "type": "PERCENTAGE"
    }
  },
  "contact": {
    "email": "jocelin.carreon.crespo@example.com",
    "firstName": "Jocelín",
    "lastName": "Carreón Sample",
    "contactId": "3c8aa2ff-5e5e-4f23-bcfc-9036ba818a84"
  },
  "createdAt": "2020-10-20T12:38:22Z",
  "end": "2020-10-24",
  "hotel": {
    "address": {
      "city": "Impalaland",
      "country": "GBR",
      "countryName": "United Kingdom",
      "line1": "12 Sample Avenue",
      "postalCode": "12345"
    },
    "checkIn": {
      "from": "12:00",
      "to": "21:00"
    },
    "checkOut": {
      "from": "12:00",
      "to": "21:00"
    },
    "hotelId": "60a06628-2c71-44bf-9685-efbd2df4179e",
    "href": "/v1/hotels/60a06628-2c71-44bf-9685-efbd2df4179e",
    "images": [
      {
        "altText": "A photo of an object",
        "height": 4000,
        "url": "https://cdn.impala.travel/ckhlsuxbb000b3b666rr9ussq.jpg",
        "width": 4000
      }
    ],
    "location": {
      "latitude": 58.386186,
      "longitude": -9.952549
    },
    "name": "Impala Minimalist Palace",
    "starRating": 2.5,
    "timezone": "AST"
  },
  "hotelConfirmationCode": "04M3995",
  "start": "2020-10-21",
  "status": "ACCEPTED",
  "updatedAt": "2020-10-22T20:12:33Z"
}