GMC Booking — documentation (Joomla)
GMC Booking · Joomla 5 / 6 · Documentation
GMC Booking — documentation
Accommodation booking on your own Joomla site: properties and units, availability and rates, the booking engine, Stripe payments, channel sync with the OTAs, the guest registry and the Spanish SES.Hospedajes export. If you are looking for the WordPress plugin instead, its own documentation covers the port.
On this page — Install & update · Configure · Your first unit · How the booking engine works · Rates & pricing · Payments · Channel sync (iCal) · Guest registry · SES.Hospedajes export · Portal mode · Automation · Connector API · FAQ
Install & update
GMC Booking ships as one Joomla package (pkg_gmcbooking) containing the component, the site and API plugins and the scheduler task plugin. Install it through System → Install → Extensions. The installer creates its tables and every update runs an additive migration, so upgrading never asks you to touch the database.
- Requirements — Joomla 5.1 or newer (Joomla 6 included), PHP 8.1+, MySQL 8 / MariaDB 10.6+.
- Licence & updates — paste your Download Key into System → Update → Update Sites for GMC Booking; Joomla then offers updates normally.
- Never use “Rebuild Update Sites” — it silently drops the Download Keys of every extension on the site. If updates stop appearing, check the key before anything else.
Configure
Settings live in Components → GMC Booking → Options. The defaults are conservative: nothing charges a card until you configure a provider.
| Setting | What it does | Default |
|---|---|---|
operating_mode | Single = your own properties. Marketplace = other hosts list on your site. See Portal mode. | single |
default_currency | Currency shown and charged. | EUR |
hold_minutes | How long dates are held while the guest pays. | 15 |
payment_provider | none, stripe or PayPal. See Payments. | none |
| Tax fields | Rate, label and whether your prices already include it; stored on every booking. | 0 |
| Deposit fields | Percentage taken now, and how many days before check-in the balance is due. | — |
| Notifications | Guest confirmation, admin notification, reminder timing. | on |
Your first unit, end to end
- Create a property — the building or site: description, photo gallery, amenities, location.
- Create its units — what a guest actually books. A unit has a base price, a quantity (how many identical rooms of this type you have), a maximum occupancy and, optionally, an iCal import URL.
- Open availability — the Availability screen opens date ranges and sets per-date price and minimum stay.
- Publish and place the menu item — point a Joomla menu item at the booking search, or link straight to one property.
How the booking engine works
- Quote — for the requested dates and party: per-night rates, length-of-stay and seasonal rules, extras, coupon, tax, deposit and balance.
- Hold — availability is decremented inside a transaction and the booking is created with status
holdand an expiry. Two guests cannot take the last unit at once. - Confirm — a single guarded update flips the booking to
confirmedonly while the hold is live and the token matches. An expired hold cannot be confirmed, nor can somebody else's booking. - Expire — the scheduler releases holds nobody paid for and returns their dates to inventory.
Rates & pricing
- Rate plans — seasonal ranges and weekday rules, so a weekend costs what a weekend costs.
- Per-date overrides — set the price and minimum stay for specific dates straight from the Availability screen.
- Extras — cot, parking, cleaning, late checkout: per stay or per night.
- Coupons — percentage or fixed with a usage cap; the slot is claimed atomically at hold time, so a capped coupon cannot be over-redeemed by simultaneous bookers.
- Deposits — take a percentage now and collect the balance later, manually from the booking row or automatically on the due date.
Payments
Stripe is the primary provider, with PayPal available. Paste your keys and register the webhook endpoint with its signing secret — the webhook is what confirms a booking when a guest closes the tab after paying, and without it you will collect money against bookings that stay on hold.
- Payments are an append-only ledger — charge, refund and fee rows — so a partly refunded stay still reconciles.
- Balance collection: the deposit charge can save the card so the scheduler takes the balance off-session on its due date, falling back to a payment link when the bank demands authentication.
- Cancelling refunds according to your policy and returns the dates to inventory in the same operation.
- Stripe Connect (Portal mode) splits payments between you and the host, with a payout ledger.
Channel sync (iCal)
Give a unit an iCal import URL from Airbnb, Booking.com, Vrbo or any calendar that publishes one, and the scheduler imports it hourly: dates booked on that channel are closed on your site, so you do not sell the same room twice.
Guest registry
Guests is the per-person registry behind each booking: name, document type and number, nationality, date of birth, check-in and check-out. It exports as CSV with a UTF-8 marker so accented names open correctly in Excel, and it is the data source for the SES export below.
SES.Hospedajes export (Spain)
Spanish accommodation providers must report traveller data to the Ministry's SES.Hospedajes service. GMC Booking builds the request file the web service expects, from data you already hold.
- Parte de viajeros (PV) — the traveller report, built from the guest registry of a stay.
- Parte de reserva (RH) — the reservation report an intermediary files, built from the booking.
- Country codes are mapped to the three-letter codes the schema requires, and required elements that your data does not carry fall back to a valid default rather than producing a file the service rejects.
- Each export is marked so you can see what has already been reported and what has not.
Portal (marketplace) mode
In marketplace mode other hosts list their properties on your site and you take a commission. Hosts are approved by publishing them, listings can be queued for approval or auto-published, Stripe Connect splits each payment, and the payout ledger tracks what you owe. Host↔guest messages have a moderation list.
Automation (scheduler)
GMC Booking installs a Joomla Scheduled Task plugin. Enable it in System → Scheduled Tasks and drive Joomla's scheduler from real cron — the lazy web-request trigger is unreliable on a quiet site, which is exactly the site where an unexpired hold blocks your only free room.
- Expire abandoned holds and return their dates
- Import channel calendars (hourly by default)
- Send guest reminders and abandoned-checkout recovery
- Charge scheduled balances on deposit bookings
Connector API
A scoped REST API for partners and your own systems: availability, quote, book. Keys are issued per partner and revocable, and bookings made through it are stamped with their channel so reporting can tell them apart from web sales.
FAQ
- Why is the checkout night not charged?
Because it is not occupied. Ranges are half-open, the hotel convention: 3rd to 5th is two nights, the 3rd and the 4th, and the 5th is free for the next arrival. iCal end dates are treated the same way, so imported blocks line up instead of overlapping by a night.
- An OTA booking was cancelled — why is my site still blocked?
The iCal import only closes dates; it never re-opens them. Re-open the dates from the Availability screen. This is deliberate: automatic re-opening would require tracking which source owns each date, and a mistake there means selling a room you have already given away.
- The guest paid but the booking is still on hold. Why?
Almost always the Stripe webhook. Returning to the site is a convenience; the webhook is what confirms the booking. Verify the endpoint URL and signing secret in Options and inspect the delivery attempt in your Stripe dashboard.
- Can two guests take the last room at once?
No. Availability is decremented inside a transaction when the hold is created, not when payment completes, so the second guest sees the unit as unavailable while the first is paying. If that first guest never pays, the scheduler returns the dates.
- Does the SES export file itself with the authority?
No. It builds the request file in the shape the service expects, from the data you already hold, and marks what has been exported. Submitting it, and being answerable for its contents, stays with you — confirm with your gestor which report applies to your activity.
- Updates stopped being offered. What happened?
Check your Download Key. “Rebuild Update Sites” silently clears the keys of every extension on the site and is the most common cause. Paste it back into System → Update → Update Sites.
- Can I run accommodation and tours on the same site?
Yes. GMC Booking and GMC Tours are separate products with separate tables and coexist on one Joomla site, sharing the same conventions and licensing gateway.


