Create or update LOS pricing rates

Use the los_pricing endpoint to set pricing for your inventory using the LOS pricing model. You must use the URL-encoded CSV format to send your request body.

POST https://supply-xml.booking.com/hotels/csv/los_pricing

Advantage of using LOS pricing

Instead of giving us pricing details per day and having us calculate the final price for a stay -- or whether it should even be available considering restrictions -- properties can provide the pricing detail for every possible length of stay (up to 90 nights) and occupancy (up to the maximum number of adults of the room), given a check-in date.

Starting from the day of the request, you can send prices for up to 729 days into the future.

Format

The request accepts CSV data where 1 row has the following format:

{checkin},{occupancy},{room id},{rate id},{currency code},{1 night},{2 nights},{3 nights},...

For example:

2022-12-20,2,1444301,23543,EUR,100,210,270,390,550,580,650,820

For inventories that are unavailable for a particular length of stay, the price should be set to 0:

2022-12-20,2,1444301,23543,EUR,100,210,0,390,550,580,0,820

From the above request, guests will not be able to book the room for 3 or 7 nights if the check-in date is 2022-12-20. Any price beyond last price specified is assumed to be 0 and therefore the length of stay more than 8 nights is not available for reservation from the above example.

Rules

When using LOS pricing, make sure to note the following:

  • Each row must have the check-in date, occupancy, room id , rate id and currency code followed by a value set for every possible length of stay.
  • There is no way to express a default per night price, due to determining the difference between an unavailable length of stay and a default price length of stay.
  • All pricing is in the property's default currency.
  • A maximum of two decimal places is supported for each price value.
  • The room and rate IDs are Booking.com identifiers, and are set up prior to calling the request.
  • The room and rate IDs must belong to a property for which the login account has permission to modify availability and pricing details.
  • All room and rate IDs must be active combinations for the property.
  • Maximum number of nights is 90. If you provide more than 90 nights, the remaining nights are ignored and only the first 90 nights are considered.
  • Only rooms belonging to one property are allowed per call. To update room pricing across multiple properties, you must send separate requests.

€50000 maximum price

The maximum price you can set for a room is €50000 (or equivalent) per night. If you try to set a higher price, we set the price to zero, which automatically closes the room. The API returns a following warning message:

method,status,ticket_id,warnings

los_pricing,ok,8dd66019d5720001,Line number 1 . Price 182000000 for room id 74115904 and rate id 8958505 is higher than Maximum System Rate. We have closed the room as a precaution.

Transmission details

When building the request body, make sure to note the following:

  • Send the request as an HTTP POST, and provide the CSV data as a form value of the name "CSV".
  • Do not include any other form values in the request.
  • Each request header must contain a "Content-length" item that contains the number of character bytes of the POST data.
  • The CSV commas and line feeds must be URL encoded, in that each comma and newline is an escape sequence.
  • The content length must be the full character count including the extra bytes due to the escape sequences.

You can use the following escape sequences, but more can be added if required:

Character Encoding
, (comma) %2C
\n (line feed) %0A

Following is an example HTTP request (without the required authorization header) containing three sample lines:

POST https://supply-xml.booking.com/hotels/csv/los_pricing
Content-Length: 721
Content-Type: application/x-www-form-urlencoded

CSV=2022-03-15%2C1000201%2C58848%2CEUR%2C100%2C200%2C300%2C400%2C500%2C600%2C700%2C800%2C900%2C1000%2C1100%2C1200%2C1300%2C1400%2C1500%2C1600%2C1700%2C1800%2C1900%2C2000%2C2100%2C2200%2C2300%2C2400%2C2500%2C2600%2C2700%2C2800%2C2900%2C3000%2C3100%0A2022-03-16%2C1000201%2C58848%2CEUR%2C100%2C200%2C300%2C400%2C500%2C600%2C700%2C800%2C900%2C1000%2C1100%2C1200%2C1300%2C1400%2C1500%2C1600%2C1700%2C1800%2C1900%2C2000%2C2100%2C2200%2C2300%2C2400%2C2500%2C2600%2C2700%2C2800%2C2900%2C3000%2C3100%0A2022-03-15%2C1000201%2C50587%2CEUR%2C100%2C200%2C300%2C400%2C500%2C600%2C700%2C800%2C900%2C1000%2C1100%2C1200%2C1300%2C1400%2C1500%2C1600%2C1700%2C1800%2C1900%2C2000%2C2100%2C2200%2C2300%2C2400%2C2500%2C2600%2C2700%2C2800%2C2900%2C3000%2C3100%0A

Successful response

Example of a successful response:

method,status,ticket_id
los_pricing,ok,abcdef0123456789

Example of a successful response where some nights are ignored in line 2 in the request:

method,status,ticket_id,warnings
los_pricing,ok,abcdef0123456789,The following lines has too many nights and only the first 90 nights were considered%2C2

Error handling

If there are any errors during request handling, the error response follows this format:

method,fault_code,fault_message
los_pricing,<fault_code>,<error_message>
{check-in date},{number of occupants},{room ID},{rate ID},{request line number},{specific error message}
  • Fault_code has the same meaning as HTTP codes.
  • {request line number} refers to line from the CSV request in which the error occured.

The following is an error response example:

method,fault_code,fault_message
los_pricing,400,file contained some invalid records
2020-05-07, 2, 533481201, 15127847, 1, Price is too Low for Room 532581201 and Rate 15207847
2020-07-22, 2, 533481201, 15127847, 142, Price is too Low for Room 532581201 and Rate 15207847

RUID

You can find the RUID details in the response header as 'X-RUID'.