# Bookings

> The space where members book rooms, desks and stations at the physical location, paying in credits. Setting up rooms, search, booking with cost and balance, conflicts with suggested times, rescheduling, canceling, maintenance blocks, booking for someone else, no-shows, calendar invite and reminder.

The **Bookings** module lets members **book rooms, desks and stations** at the physical space (coworking, headquarters, office) by the hour, **paying in [credits](/monetizacao/creditos)**. The team sets up what can be booked and how much each thing costs, and the member finds what is free, books it and gets the confirmation by email with an invite for their calendar.

## What it's for

| Community | Bookings |
|---|---|
| Coworking | A meeting room for 8 people, costing 3 credits per 30 minutes, paid with the plan's credits |
| Shared office | Desks and stations by the hour, for those without a fixed spot |
| Association headquarters | Auditorium and committee rooms, blocked on general assembly days |
| Studio | Editing stations booked in 2-hour periods |

## How it works

### What gets booked

Each bookable thing is a **room or desk** (the app uses the types **Room**, **Desk**, **Station** and **Other**). It has:

| Field | What it means |
|---|---|
| **Name** and **Description** | How the member sees it |
| **Capacity (people)** | How many people fit; empty, no limit |
| **Units** | How many bookings it takes **at once**. 1 is an exclusive room; more than 1 is a set of identical desks |
| **Amenities** | Projector, TV, whiteboard, flipchart, video conferencing, speakerphone, monitor, Wi-Fi, power outlets, air conditioning, natural light, coffee and water, standing desk, phone booth, printer and accessible |
| **Photo** | Shows on the card and on the room's page (recommended 1800 × 600 pixels, 3:1). Without an image, the card and the page show a gradient in the [community's colors](/configuracoes/cores). |
| **Weekly hours** | When it can be booked, on the community's clock |
| **Prices** | How much it costs in credits (see [Prices](#prices-in-credits)) |

Three switches control its status: **Open for booking** (off, people see it but can't book it), **Active** (off, paused: no new bookings, existing ones stay) and **Visible to members** (off, only the team sees it).

### Booking rules

The space sets the defaults and each room can change them (an empty field follows the space):

| Rule | Default |
|---|---|
| **Slot (minutes)** | 30: bookings start at multiples of this |
| **Shortest booking** and **Longest booking (minutes)** | The shortest is the slot; the longest, 240 (4 hours) |
| **Gap between bookings** | Time kept free after each booking |
| **Minimum notice (minutes)** | 0: you can book for right now |
| **Book up to (days ahead)** | 30 |
| **Free cancellation until (hours before)** | The community's window (24 h) |
| **Show who booked** | Off: the agenda only says "Taken" |

> [!NOTE]
> By default, a booked room stays **taken for the whole time, with no check-in**: nobody needs to "arrive" for the booking to count, and it isn't released on its own if the person doesn't show up. The team can mark the [no-show](#no-show) by hand.
>
> With the door panel and release turned on, this changes: a room nobody starts is released.

### Prices in credits

With no **price band**, the room is **free**. Each band says **how many credits each block of time costs** (for example, 3 credits per 30 minutes), and it can apply to **every day**, to **a weekday** or to **a specific date**, with optional start and end times. The **first band that fits** wins: a specific date, then a weekday, then every day. The cost is per block, and **each block uses the band it starts in**.

Example: the room costs 3 credits per 30 minutes. A 2-hour booking has 4 blocks and costs **12 credits**. Changing the band later **doesn't change** bookings already made.

Times that require a payment in money aren't available yet: they show with the notice that they need a payment and can't be booked.

## What the member does

The Bookings space has the **Agenda**, **Find a room** and **My bookings** tabs (and, for the team, **Rooms and desks** and **Bookings**). Whoever isn't signed in sees **Sign in to book**.

### Find a room

In **Find a room**, enter the **day**, the window (**From** and **Until**), the **duration**, how many **people** and the **type**, and tick what it **must have** (the amenities; all of them are required). The app shows only what fits, with the **cost in credits** of each one, the free start times and your balance. If the balance doesn't cover a time, it shows as not enough credits. If nothing fits, the app shows the **next free times** for the same request.

The **Agenda** shows the day or the week of a room (or of all of them), with the times **Free**, **Free, not enough credits** and **Taken**.

### Book

1. Pick the free time in the search or in the agenda. The **Book [room]** window opens.
2. Check the **duration**: the app calculates the **cost** and shows your **balance**. Without enough credits, it warns *"It costs X, the balance is Y: Z credits missing"* and doesn't let you confirm.
3. Fill in the **people** (up to the capacity), the purpose (**What is it for?**) and the **notes**, if you want.
4. Click **Confirm booking**. The cost is **debited right away**, and the screen shows *"Booking confirmed"*, how many credits were debited and the balance now, with the **Add to calendar** button.

The booking is **confirmed** from the start: there is no approval.

### Pay with the company balance

Whoever is on the team of a [company](/membros/empresas#the-company-s-credits) with credits sees **Pay with** in the booking window: **Company balance (N)** or **My balance (N)**. The cost check uses the chosen wallet.

- In the **Agenda** and in **Find a room**, a time only the company balance covers shows **free, with the company icon** (*"The company balance covers this time"*), and the legend says *"Acme covers (20 credits)"*. Opening that time, the window already comes set to **Company balance**.
- On confirmation, the screen says how many credits were debited from the company balance and the company balance now. In **My bookings**, the booking shows **Paid by** and the company's name.
- In the company statement, the use shows **Used by** and the name of whoever booked.
- A closed company, or a person who left the team, no longer pays with the company balance.

### When the time was already taken

If someone booked the time first, the booking isn't made and the app shows **Free times close to the one you asked**, so you can pick another without starting over. The same person can't book the same time twice.

### Rescheduling

In **My bookings › Upcoming**, **Reschedule** changes the day and the start time **in the same room**, keeping the length. The app shows the settlement before you confirm:

| New time | What happens to the credits |
|---|---|
| Costs the same | Nothing changes (*"Same cost"*) |
| Costs more | The **difference is debited** (without balance for the difference, it doesn't reschedule) |
| Costs less | The **difference is refunded** |

Whoever is on a company can also **switch who pays** when rescheduling, with or without changing the time: whoever paid gets everything back and the new payer pays the whole cost (*"The company balance pays the whole cost (2 credits); what you paid comes back to you."*). Without switching, the price difference goes to whoever already paid.

You can only reschedule an active booking that hasn't started yet. Rescheduling doesn't reset the cancellation window: if the booking was already within the window, canceling it later is still a late cancellation. The calendar invite is updated and the person gets an email about the change. A courtesy booking never touches the credits.

### Canceling

**Cancel** opens the confirmation *"Cancel this booking?"*. Canceling **within the cancellation window** (24 h by default), the credits come back in full. **After it**, the cancellation is **late** and, by default, the credits **are lost** (the community can change this in the [credit rules](/monetizacao/creditos#the-community-rules)). A free booking has nothing to refund. Credits always go back to **whoever paid**: a booking the company paid returns to the company balance (also on a no-show and on release for lack of check-in). The time goes back to the agenda, the person gets the email and the event is canceled in their calendar. A booking that has already started can't be canceled.

### Start the meeting

In **My bookings › Upcoming**, a confirmed booking has the **Start meeting** button. It works from **10 minutes before the start until the end** of the booking (or until the end of the grace period, if the community releases rooms nobody started: see Door panel). Whoever booked, the owner, the admin and the moderator can tap it; the screen shows *"Meeting started"*. Tapping again is harmless. The same button is on the door tablet, no phone needed.

## What the team does

The team here is the owner, the admin, the moderator and finance. Above the list, the **Manage bookings** bar shows how many bookings there are **today** and has **New room or desk** and **Space settings**.

### Set up rooms and desks

In **Rooms and desks**, **Add room or desk** asks for the basics (name, type, capacity); then, on the room's screen, the tabs **Agenda**, **Details and rules**, **Weekly hours**, **Blocks**, **Prices**, **Photo** and **Amenities**. The type **can't change** after it's created. Only the owner and the admin create, edit and delete rooms.

Deleting a room with **upcoming bookings** requires canceling them: the credits are refunded in full and the members are told by email. Bookings already finished stay in the history.

### Maintenance block

In **Blocks**, **Block** prevents bookings in a period (maintenance, holiday, event) and **Open extra** creates a time outside the weekly hours, always on the community's clock. Blocking a period with **bookings in the way** requires canceling them: the app lists how many there are, the credits are **refunded in full** and the members are told by email, with your reason. Removing a block gives the time back, but the bookings it already canceled **don't come back**. Blocking belongs to the whole team (owner, admin, moderator and finance).

### Maintenance history

On the room, desk or equipment screen, the **History** tab (team only: owner, admin, moderator and finance) gathers the item's maintenance past in two lists:

- **Rounds**: the [inspection rounds](/espacos/rondas-de-inspecao) that checked the item, with the sector, what was marked (OK, problem or pending), the problem description, who checked and when, and the ticket opened;
- **Support tickets**: the [Support](/espacos/suporte) tickets that point to the item, opened by request or in a round.

Each list shows the **50 most recent**. It shows which room has the most problems and what has already been done in it.

### Booking for someone else

In the booking window, the team sees **Book for someone else**: search for the member; the cost is **debited from them**, and they are the one who gets the email and the invite. Leave it empty to book for yourself. Through the API and the assistant, the team can also charge the booking to the person's company balance (`payWith`).

Only the owner and the admin also see **Courtesy (no credits)**: the booking is free for the member and nothing is debited, and saying **why** it is a courtesy is required.

### No-show

When the member doesn't show up, the team (or the agenda's host, in [Scheduling](/espacos/agendamento)) opens the booking and picks **No-show**. It only applies to a confirmed booking that **has already started**. What happens to the credits follows the community's rule: by default, **they are lost**; with the rule off, they come back.

### Door panel

A tablet at the room's door shows whether it is free or busy and the day's bookings. **Each tablet opens with its own secret link.**

**Create the link** (owner, admin or moderator):

1. Open the room and go to the **Door panel** tab.
2. In **Tablet name**, type for example *Room 1 tablet* and click **Create link**.
3. The link appears **only once**, under **Panel link**, with a warning that it is a secret: whoever has it sees this room's panel. Click **Copy link**, open it on the tablet, then **Done**. The link can't be shown again.

Each room accepts up to **10 active panels**. The list shows the name, **Active** or **Revoked**, who created it and the **Last used** date (or *Never used*). Finance sees the list, but only the owner, the admin and the moderator create or revoke.

**Revoking.** Under **Revoke**, confirm *"Revoke this panel?"*. The link stops working at once and the tablet says the link was revoked. Lost the link or swapped the tablet? **Revoke the panel and create another**: the old link doesn't come back.

**On the tablet.** Open the link in the browser, no login. The screen shows:

- the room state (**Free**, **Free until** a time, **Busy**, **In a meeting**, **Closed**), the current booking and the next one;
- today's bookings;
- the **Start meeting** button, when the option is on (see below);
- **Book now (on your phone)**: pick a duration and the screen shows a **QR code** (*"Scan to book"*). Whoever scans it with a phone camera opens the booking form **already filled in** with the room, time and duration. Someone not signed in sees **Sign in to book**; the credits come from the balance of whoever confirms. The tablet never books by itself, and the QR closes on its own after a few seconds.

**Panel options.** In **Space settings**, the **Door panel** section (owner and admin) controls what the tablet shows and does:

| Option | What it does | Default |
|---|---|---|
| **Release rooms nobody started** | With no **Start meeting** within the grace period after the start, the room is released and the booking becomes a **no-show** under the community's credit rule (by default the credits are lost; see [No-show](#no-show)). Only for rooms that have an active panel, and the person gets an email | Off |
| **Minutes to start the meeting** | The grace period, 1 to 120 minutes after the start | 10 |
| **Show the "Start meeting" button** | Records the real use. Always shown when release is on | Off |
| **"Book now" durations (minutes)** | 1 to 6 values, 5 to 480, separated by commas | 15, 30, 60 |
| **Show the first name of who booked** | Off: the panel only says "Busy". It never shows a last name, email or notes | On |
| **Show the meeting title** | The title may be private | Off |

With release off, a booked room stays taken until the end, as described above.

### The list of bookings

The **Bookings** tab (team) lists everyone's bookings, under **Upcoming**, **Past** and **Canceled**, with filters by room and by day. Each row has **Reschedule**, **No-show** and **Cancel**; a cancellation by the team **always refunds the credits in full** and the member is told by email.

## Emails and calendar

| When | What the person gets |
|---|---|
| Booking confirmed | Email with the time (in the community's time zone), the cost, the balance and a **calendar invite** (an `.ics` file) |
| Booking rescheduled | Email about the change, and the **event is updated** in the person's calendar |
| Booking canceled (by them, by the team or by a block) | Email with the refund, and the **event is canceled** in the person's calendar |
| **1 hour before** | A reminder, only once (bookings made within the last hour don't get it) |

The invite works in Google Calendar, Outlook and Apple Calendar. The invite comes from the Memberfy address, not from a person's email. The **Add to calendar** button on the confirmation downloads the same file.

## Create the space

1. **Add Space**, **Coworking** tab, **Bookings** module (owner or admin).
2. Set the defaults in the **Bookings** step: slot, shortest and longest booking, notice, how many days ahead the agenda stays open, **Show who booked** and the **weekly hours**.
3. Save and, in the space, **Add room or desk**.
4. To charge, create the **price bands** of each room and give credits to plans and products (see [Credits](/monetizacao/creditos#step-by-step)).

## Who can do what

| Action | Owner | Admin | Moderator | Finance | Member |
|---|---|---|---|---|---|
| Search, book, reschedule and cancel their own | ✔ | ✔ | ✔ | ✔ | ✔ |
| See the list of all bookings | ✔ | ✔ | ✔ | ✔ | — |
| Book for someone else, cancel and reschedule others' | ✔ | ✔ | ✔ | ✔ | — |
| Mark a no-show | ✔ | ✔ | ✔ | ✔ | — |
| Block time | ✔ | ✔ | ✔ | ✔ | — |
| Create, edit and delete rooms | ✔ | ✔ | — | — | — |
| Price bands | ✔ | ✔ | — | — | — |
| Courtesy booking | ✔ | ✔ | — | — | — |
| Create and revoke the door panel link | ✔ | ✔ | ✔ | — | — |
| See the list of door panels | ✔ | ✔ | ✔ | ✔ | — |
| Change the door panel options | ✔ | ✔ | — | — | — |
| Start the meeting of a booking (their own and others') | ✔ | ✔ | ✔ | — | ✔ |
| See the maintenance **History** of the item | ✔ | ✔ | ✔ | ✔ | — |

## Common errors and how to fix them

| Situation | What to do |
|---|---|
| *"This time is no longer free"* | Someone booked it first; pick one of the suggested times |
| *"You are N credits short for this booking"* | Ask the team for credits, or pick a cheaper time |
| The room doesn't show for the member | Check **Open for booking**, **Active** and **Visible to members** |
| I can't block a period | There are bookings in it: confirm canceling them |
| *"This time needs a payment"* | Payment in money isn't available yet; use a credits band |

## Frequently asked questions

**Do I need check-in?** No. By default the booked room stays taken the whole time, and the team marks the no-show by hand. Only if the community turns on release in the door panel, and then the tablet or **Start meeting** in **My bookings** records the start.

**Can I charge in money?** Not yet: bookings are paid in credits.

**Can the member book without credits?** Only a free room (no price band) or a courtesy.

**Who sees the name of whoever booked?** Only if **Show who booked** is on; otherwise, members see "Taken".

## In the API and MCP

The routes live under `/api/bookings`, documented in the [API reference](/api/referencia). `POST /api/bookings` and `POST /api/bookings/{id}/reschedule` accept `payWith` (`own`, the default, or `company`), and every booking carries `creditPayer { type, id, name }` (who paid). In the search and availability, each slot carries `affordableWith` (`own`, `company` or `null`) and the answer carries `companyWallet { companyId, name, balance }` when the company can pay. The assistant books, reschedules, cancels and manages rooms in conversation: see [Tools · Bookings and Scheduling](/mcp/ferramentas-reservas).

Price rules (`POST` and `PUT /api/bookings/resources/{resourceId}/price-rules/{ruleId}`) also take `amount`, the money per block (not charged yet), greater than 0 and with at most 2 decimal places. With more (`1.005`), the response is `400` on `amount`, *"Enter the amount with at most 2 decimal places."*, and the amount is never rounded.

## Related

- [Credits](/monetizacao/creditos)
- [Scheduling](/espacos/agendamento)
- [Inspection rounds](/espacos/rondas-de-inspecao)
- [Attendance](/espacos/presenca)
- [Modules](/conceitos/modulos)
