> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orriven.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Room blocks

> Record what you contracted with each hotel — n rooms of one room type per night — and watch pickup against it.

A **room block** is one contract: *n* rooms of **one room type** at **one hotel**, night by night. You record what was negotiated; the console then tracks **pickup** — how many of those rooms your attendees' stays are actually using — against it.

Need a "Speaker block" carved out of the main allocation? Sub-blocks are simply **more blocks**: create another block over the same hotel and room type and attribute the speakers' stays to it. Each block's pickup is counted from the stays attributed to *it*.

## Create a room block

<Steps>
  <Step title="Click Add room block">
    Name the contract — "Speaker block", "Attendee block" — and pick the hotel and the room type it holds. A block covers exactly one room type at one hotel; a contract spanning two room types is two blocks.
  </Step>

  <Step title="Enter the nightly contract">
    On the block's page, add one row per night: the date, how many rooms are **contracted**, and the **rate**. Nights differ — peak nights often carry more rooms and higher rates — so each night is its own row.
  </Step>

  <Step title="Add the contract notes">
    Optionally set the **currency** for the rates and the **cut-off** date — when the hotel releases unsold inventory.
  </Step>
</Steps>

<Note>
  Rates and currency are **contract notes**, nothing more. Nothing is charged to anyone, and no amount is enforced — they are there so the numbers you negotiated live next to the pickup they apply to. The cut-off date is equally informational: nothing closes automatically when it passes.
</Note>

## Pickup: always derived, never edited

For each night, the block's page shows contracted, **picked up** and what is left. Pickup is counted live from the [stays](/en/housing/stays) attributed to the block: a stay covers a night when the night falls between its check-in and check-out, and it counts as long as it is not cancelled or a no-show.

Because pickup is derived from the stays themselves:

* it **cannot drift** — there is no counter to get out of sync;
* it **cannot be edited** — the only way to change pickup is to change the stays;
* cancelling a stay releases its pickup immediately, every night it covered.

## Going over the block

If more stays are attributed than a night's contracted count, the console flags the block **Over block** — on the list, and per night on the detail page.

<Warning>
  Over-block is a **flag, never a barrier**. The platform will not refuse a stay because a block is full: the contracted count is a promise to renegotiate with the hotel, not a wall. When you see the flag, call the hotel — do not expect the software to have stopped anyone.
</Warning>

## Archiving

Blocks are archived, never deleted — pickup history must stay answerable. An **archived block** keeps its history but takes no new stays; **Restore** reopens it. Stays already attributed to an archived block keep their attribution.

## Rules to know

* One block = one hotel + one room type. Sub-blocks are just more blocks.
* Pickup and availability are derived from stays on every view — never stored, never editable.
* Per-block pickup follows **attribution**: with two blocks over the same room type, a stay counts against the block it is attributed to.
* Rates, currency and cut-off are informational contract notes; nothing charges, nothing auto-closes.
* Exceeding a contracted count flags the block; it never blocks the stay.
* Archived blocks keep their pickup history and take no new stays.
