How to setup WooCommerce Bookings with multiple booking durations, fees and varying costs

Here is a use case that frequently comes up for hotels and room rentals using WooCommerce Bookings.

The requirements


  1. “Booking should be done 48 hours in advance, hence there shouldn’t be rooms available for same/next day booking.”
  2. The pricing structure and therefore booking duration is divided into three types:
    12h (4h) block stay
    Overnight stay
    Day stay
  3. Prices increase on weekends.
  4. Each booking must add the reservation fee

I played through various scenarios where I also thought of using WooCommerce Product Add ons at one point. In the end I managed to do it using WooCommerce Bookings only.

The solutions

Lets go through your requirements one by one:

Booking should be done 48 hours in advance, hence there shouldn’t be rooms available for same/next day booking.

For this requirement I set “Minimum Block bookable” to 2 days in the future:

This disallows bookings on the same / next day.

The pricing structure is broken into some types:
– 4 hour blocks with different weekday/FRI-SAT/sunday prices
– Overnight with diff weekday/FRI-SAT/sunday prices : 8pm – 1pm
– 12 hour period with weekday/FRI-SAT/sunday prices : 3pm to 1pm

The check in times for both day and overnight are set. I did not know if the 12h / 4h blocks have flexible check in or not. For managing this I did set it deliberately to 12pm. In order to reflect different check in times, I set the bookable slot to 1 hour and then used availability rules to knock out undesired times. The concept in full is explained in my other blog post here.

Here is what I set:

This produces the following times for each day:

12pm – Check in time for hours stay
3pm – Check in time for day stay
8pm – Check in time for overnight stay

Prices increase on weekends.
Each booking must add the reservation fee

The cost tab adds reservation fees and raises the price on weekends. The initial price is the lowest, for this suite: 140. The cost rules add to the price according to your spreadsheet.

Clicking through the times during the weekend and on weekends now display correctly following the given price rules.


Open GIF in new tab.

I expected that one booking per day should block the whole day for the suite, so I added adjacent buffer of 8 hours.

This effectively blocks the whole day, if any time slot is booked for that day.


Open GIF in new tab.

Last but not least I added some info to the product page to explain the concept and checkout times.

That is it.

This realises a WooCommerce Bookings product for one room with varying check in times, varying booking durations along with the required price structure and reservation fees.

Let me know any questions in the comments and all the best for your WooCommerce Bookings scenario.


  1. Hi, do you think i can use this plugin also for a site with multiple villas? So basically instead of booking rooms they are booking villas.


    1. Hi Camilla,

      Yes, that should work fine. But depending on your requirements can also be tricky. These things are best tested out. You can setup a free test site at


  2. I’m desperate,
    how can i set a hotel with 3 different rooms that have different prices (independently one from each other?) i set them correctly with resources 3 kind of rooms but WC booking allows me to set a fixed prices as difference between the rooms (prices vary independently!
    Support say i must create a different product per room but it’s an horrible solution as user experience!!! Users would navigate into several pages to book.:(

    1. Hi Michele,

      Please refrain from swearing. I have edited your comment accordingly. I also don’t see a way without custom coding. You could try and add WooCommerce Product Add Ons to the mix. This will allow you to add more pricing rule variations, but the selection required will be difficult to setup.

  3. Hey,
    nice tutorial.

    I’ve the problem that I’ve different situation and discounts for products but I didn’t know how I can set this. Maybe you have a solution.

    For example.
    I’ve a boat for booking and its possible to book
    1 Day
    2 Day (MO-THU)
    3 Day (MO-THU)
    Mini-Weekend (SA-SU)
    Weekend (FR-SU)

    all have different prices but actually I’m not able to display this.
    Do you have any tip for me?


Leave a Reply

Your email address will not be published. Required fields are marked *