Design a bus’s seat layout once on a drag-and-drop grid. That exact map renders live — with real-time availability — at the POS counter and on your website. A seat sold on either channel disappears from the other within a second, with a database-enforced guarantee that two buyers can never win the same seat.
Drag-and-drop seat designer
Build a 40-seater in minutes — seater or sleeper berths, one or two decks, aisles, driver, doors, toilet & luggage. Validated as you place.
One seat map, everywhere
The same component renders in the backend, at the POS counter and on the website — the channels can never drift apart.
Race-proof holds
A seat picked on one channel vanishes from the other. Under concurrent load exactly one buyer wins — never two, never a 500 error.
A premium seat experience
Zoom, pan, full-screen, dark mode, live stats, filters, keyboard navigation and screen-reader labels — on desktop, mobile and touch kiosks.
The seat map your customers actually enjoy
Live availability, VIP / wheelchair / ladies / emergency markers, seat classes, an occupancy dashboard and instant filters — all in one component.

Light & dark, out of the box
The map follows the viewer’s theme and offers a one-tap dark toggle — legible for colour-blind users, with status conveyed by colour and shape.

Search, recover, connect
Customers search by stop and date, get nearby-date suggestions when a trip is full, and can book multi-leg connecting journeys as one order.

What’s inside
| Fleet & master data | Operators, buses (with registration & per-trip driver), amenities and stops. |
| Routes, schedules & trips | Reusable routes, recurring schedules and an auto-generator that materialises trips and their seats. |
| Seat statuses & classes | Available, held, booked, reserved, blocked, maintenance — plus VIP, wheelchair, ladies/gents, window, emergency-exit and Economy/Business/Premium classes. |
| Bookings, PNR & e-ticket | Every sale becomes a booking with a readable PNR and a signed QR e-ticket, on POS and web alike. |
| Real-time & recovery | Live cross-channel seat push, hold countdown, waitlist and abandoned-cart follow-ups. |
| Confirmations | Translatable e-mail (with QR) and optional SMS on every confirmed booking. |
A modular suite — install only what you sell
Bus Booking — Free
The foundation: designer, shared seat map, trips, race-proof holds, bookings, PNR & e-ticket.
Website add-on
Public search → seat select → hold → checkout → payment → e-ticket, plus portal, waitlist & auto-pick.
POS add-on
A Bus Ticket button at the counter: pick a date, search a route, select seats, print a ticket with QR.
Connections add-on
Sell A→C as a connecting journey when there’s no direct bus — both legs held atomically.
Up and running in five steps
1Master data. Under Bus Booking ▸ Configuration, add your operators, stops and amenities.
2Design a layout. Open Seat Layouts and drag seats, aisles and the driver onto the grid; mark VIP, window, ladies or wheelchair seats and set classes.
3Buses & routes. Create buses (assign the layout) and routes with their stops.
4Schedules & trips. Add a schedule and let the generator create trips, or create trips directly and add the driver’s name & phone.
5Channels. Install Website and/or POS. In Settings ▸ Point of Sale ▸ Bus Booking set the Bus Ticket product and trip window; the website is live at /bus.
Demo data ships a ready-made operator, layout, route and trips so you can try the whole flow immediately.
Requirements
Odoo 19 · Community or Enterprise. The base app is standalone; the Website and POS add-ons pull in their respective Odoo apps.
Built for scale
Batched, index-backed queries and a partial-unique DB index as the single-winner guarantee — designed to hold up under real concurrent booking load.
Thoughtfully built Odoo apps — designed, verified and supported.
Bus Booking · Odoo 19 · © Do Incredible
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 4080 |
| Technical Name |
bus_booking_base |
| License | LGPL-3 |
| Website | https://doincredible.com |
Please log in to comment on this module