BambooForge Labs

Hotel Management & Room Booking (PMS)

Hotel management and PMS: reservations that cannot double-sell a room, seasonal rates, a folio billed per night, housekeeping and night audit.

Buy on the Odoo Apps StoreOpen the live demoIndustries€149Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0, Odoo 20.0. Technical name bambooforge_hotel.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0Odoo 20.0
Screens and walkthrough for
Transcript of the walkthrough (Odoo 20)

Hotel Management & Room Booking (PMS). Hotel management and PMS: reservations that cannot double-sell a room, seasonal rates, a folio billed per night, housekeeping and night audit. Said before you buy, because it is the half that decides whether the app fits: In the next few minutes: hotel management & room booking (pms), then reservations, then seasonal rates, then the folio, then housekeeping. Then what this app deliberately does not do, so you can tell before you buy whether it fits.

Everything lives under Hotel then Today's desk then Reservations then Room board. Odoo Community 16.0, 17.0, 18.0 or 19.0 with account and product. No Enterprise module, no external service. Hotel Management & Room Booking (PMS).

Two rules decide whether a hotel can use the software at all: a room cannot be sold twice for the same night, and nobody checks out owing money that was never written down. Everything here supports those two. Reservations Guest, dates, room type, and an optional room number - a booking can be held on the type and get its number at check-in, the way a hotel really works. Overlapping sales of the same room are refused by the database itself, with an exclusion constraint over the room and the dates: two clerks assigning the same room in the same second cannot both be told it was free.

A cancelled or no-show booking frees the room immediately. Bookings held on a room type are counted too. Confirming a booking checks every night of it against the number of rooms of that type, so a hotel cannot quietly sell fourteen doubles it does not have. Overbooking is allowed by a number the manager types on the room type, never by accident.

A booking that sleeps more people than the room holds is refused: a fire certificate is not a preference. Assign a free room picks a room of the right type that is genuinely free for the whole stay, preferring one that is clean. Seasonal rates. The same room is not the same price in August.

Rates apply per room type over a date range with a minimum stay, and where two rates cover a night the lower sequence wins - that is how a promotion beats the season. A stay that crosses a season is priced night by night. The folio One line per night at that night's rate, plus extras and city tax. Invoiced in one click; a line that has been invoiced can no longer be edited or deleted - corrections belong on the invoice.

Nights are never posted twice, however often the button is pressed. Everything on a folio is a charge. Deposits and payments belong in Accounting, against the invoice the folio raises, where they are reconciled and can be seen. Check-out posts the bill, so what the guest is handed has a number on it, and every invoice a stay raised is one click from the booking.

Crediting an invoice makes exactly its charges billable again. Housekeeping. Housekeeping is a separate state from occupancy, because a room can be occupied and dirty, or free and not yet cleaned. Checking a guest into a room housekeeping has not released is refused.

Checking out puts the room back into "dirty" automatically, and a room with a guest in it cannot be taken out of order. Night audit. A scheduled job that does what the night manager used to do at 2am: it posts the night that has just been slept and turns yesterday's unarrived bookings into no-shows, so the morning report is true without anybody staying up. Tonight is not posted, because it has not happened.

The business date is read through the company's timezone, so a hotel at UTC+7 closes its own day and not London's. A guaranteed booking - a card guarantee, a prepayment, a corporate contract - is never released by the job: a guest on a delayed connection still has a room at 23:00. A release is stamped and can be undone with Reinstate, which checks whether the room is still there rather than pretending it is. Roles.

Housekeeping sees the room board and changes room status, and never sees a rate or a folio. Reception books, checks in and out, posts charges and invoices. The manager configures room types and rates. How we make sure it works.

Before every release, 77 automated checks run against this app on Odoo 16, 17, 18, 19 and 20. Among them: A booking the clerk cannot see still blocks the room. A room cannot be sold twice. A room cannot be sold by a hotel that does not own it.

A room sold for tonight cannot be taken out of order. A room type cannot be sold more often than it has rooms. The complete list is in the source you receive. Questions people ask.

Which Odoo versions does it run on? Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing. Community or Enterprise? Both.

It needs no Enterprise app. Support. support@bambooforge.dev - answered within two business days. OPL-1; one purchase covers one production database plus its staging copies.

The complete manual is at docs dot bambooforge dot dev, the demo database is linked from the store page, and support answers within twenty-four hours. Links are in the description.

Folio - bambooforge_hotel
Folio
Reservations - bambooforge_hotel
Reservations
Rooms - bambooforge_hotel
Rooms

Key facts

What it is
Hotel management and PMS: reservations that cannot double-sell a room, seasonal rates, a folio billed per night, housekeeping and night audit.
For
Industries
Odoo versions
16.0, 17.0, 18.0, 19.0, 20.0 - Community and Enterprise
Runs on
Odoo.sh or Odoo you host yourself - not Odoo Online, which accepts no third-party apps
Price
149 EUR, one-time, on the Odoo Apps Store
Technical name
bambooforge_hotel
Not for
Said before you buy, because it is the half that decides whether the app fits:; Sell the same room twice: the database itself refuses overlapping sales, and a room type cannot sell more rooms than it has.; Overbook by accident - only by the number a manager types on the room type.; Sleep more people in a room than it holds.
Manual
https://docs.bambooforge.dev/bambooforge_hotel/
Live demo
https://demo20.bambooforge.dev/odoo/action-bambooforge_hotel.action_bf_hotel_arrivals
Store page
https://apps.odoo.com/apps/modules/20.0/bambooforge_hotel
Manual last updated
2026-10-15

Hotel Management & Room Booking (PMS)

Two rules decide whether a hotel can use the software at all: a room cannot be sold twice for the same night, and nobody checks out owing money that was never written down. Everything here supports those two.

Reservations

  • Guest, dates, room type, and an optional room number - a booking can be held on the type and get its number at check-in, the way a hotel really works.

  • Overlapping sales of the same room are refused by the database itself, with an exclusion constraint over the room and the dates: two clerks assigning the same room in the same second cannot both be told it was free. A cancelled or no-show booking frees the room immediately.

  • Bookings held on a room type are counted too. Confirming a booking checks every night of it against the number of rooms of that type, so a hotel cannot quietly sell fourteen doubles it does not have. Overbooking is allowed by a number the manager types on the room type, never by accident.

  • A booking that sleeps more people than the room holds is refused: a fire certificate is not a preference.

  • Assign a free room picks a room of the right type that is genuinely free for the whole stay, preferring one that is clean.

Seasonal rates

The same room is not the same price in August. Rates apply per room type over a date range with a minimum stay, and where two rates cover a night the lower sequence wins - that is how a promotion beats the season. A stay that crosses a season is priced night by night.

The folio

  • One line per night at that night's rate, plus extras and city tax.

  • Invoiced in one click; a line that has been invoiced can no longer be edited or deleted - corrections belong on the invoice.

  • Nights are never posted twice, however often the button is pressed.

  • Everything on a folio is a charge. Deposits and payments belong in Accounting, against the invoice the folio raises, where they are reconciled and can be seen.

  • Check-out posts the bill, so what the guest is handed has a number on it, and every invoice a stay raised is one click from the booking. Crediting an invoice makes exactly its charges billable again.

Housekeeping

Housekeeping is a separate state from occupancy, because a room can be occupied and dirty, or free and not yet cleaned. Checking a guest into a room housekeeping has not released is refused. Checking out puts the room back into "dirty" automatically, and a room with a guest in it cannot be taken out of order.

Night audit

A scheduled job that does what the night manager used to do at 2am: it posts the night that has just been slept and turns yesterday's unarrived bookings into no-shows, so the morning report is true without anybody staying up. Tonight is not posted, because it has not happened. The business date is read through the company's timezone, so a hotel at UTC+7 closes its own day and not London's.

A guaranteed booking - a card guarantee, a prepayment, a corporate contract - is never released by the job: a guest on a delayed connection still has a room at 23:00. A release is stamped and can be undone with Reinstate, which checks whether the room is still there rather than pretending it is.

Roles

Housekeeping sees the room board and changes room status, and never sees a rate or a folio. Reception books, checks in and out, posts charges and invoices. The manager configures room types and rates.

Requirements

Odoo Community 16.0, 17.0, 18.0, 19.0 or 20.0 with account and product. No Enterprise module, no external service.

How we make sure it works

Before every release, 77 automated checks run against this app on Odoo 16, 17, 18, 19 and 20. Among them:

  • A booking the clerk cannot see still blocks the room.

  • A room cannot be sold twice.

  • A room cannot be sold by a hotel that does not own it.

  • A room sold for tonight cannot be taken out of order.

  • A room type cannot be sold more often than it has rooms.

The complete list is in the source you receive.

What it does not do

Said before you buy, because it is the half that decides whether the app fits:

  • Sell the same room twice: the database itself refuses overlapping sales, and a room type cannot sell more rooms than it has.

  • Overbook by accident - only by the number a manager types on the room type.

  • Sleep more people in a room than it holds.

Install

  1. Copy bambooforge_hotel into your addons path and update the app list, or install the ZIP from the Odoo Apps Store.

  2. Install Hotel Management & Room Booking (PMS).

  3. Open Hotel - its menus are Today's desk, Reservations, Room board, Housekeeping.

Questions people ask

Which Odoo versions does it run on?

Odoo 16.0, 17.0, 18.0, 19.0, 20.0, on the series you buy it for; each series is its own listing.

Community or Enterprise?

Both. It needs no Enterprise app.

What does it need?

The standard Discuss, Invoicing, Products, Settings apps. No extra Python package.

Where does it show up?

Under the Hotel menu (Today's desk, Reservations, Room board, Housekeeping).

Does anything leave my server?

No. It makes no call outside your Odoo server: no telemetry, no licence check, no third-party service.

What happens if I uninstall it?

Odoo drops the app's own tables and fields; the standard records it worked on (contacts, orders, products) stay as they are.

Support

support@bambooforge.dev - answered within two business days. OPL-1; one purchase covers one production database plus its staging copies.