---
title: "The rules, and what TourCockpit refuses"
url: https://tourcockpit.com/help/rules-and-refusals
lang: en
description: "Everything TourCockpit allows and refuses, in one place, with the reason. The same rules hold on the office's screens, on the operator portal and through the API, so a booking refused on one is refused on all of them. At the end of the page, the names the data and the API use for every piece, value and refusal."
---

# The rules, and what TourCockpit refuses

Everything TourCockpit allows and refuses, in one place, with the reason. The same rules hold on the office's screens, on the operator portal and through the API, so a booking refused on one is refused on all of them. At the end of the page, the names the data and the API use for every piece, value and refusal.

## Seats

- Every head takes a seat. Adults, children and infants all count: six adults and two infants fill an eight-seat van.
- Only a cancellation frees a seat. A booking holds its seats until it is cancelled, so a departure's seats left are its seats minus the heads of its active bookings.
- The van sets the seats. Assigning a van gives the departure that van's seat count; clearing it gives back the company's default.
- A private tour is sold whole. Once one party is on a departure of a tour sold by the vehicle, nobody else is added, whatever seats are empty, from the office or a desk.
- A booking is one party. A group of parties is several bookings, each its own.

## Who can go on a departure

- The guide speaks the booking's language. A booking goes only on a departure whose guide, or a guide of its convoy, speaks its language. The office is held to this too, with no override. A departure with no guide yet takes any language, and a guide with no languages recorded speaks none.
- A new guide must cover what is booked. Assigning a guide, unlinking a convoy or taking a language off a guide is refused when it would leave a booking with nobody who speaks its language.
- Two languages per departure, for a desk. The first two languages booked fill a departure for the desks; a language already on it is always taken. A booking the office enters gets a warning instead.
- Kept for some desks. A departure kept for named desks is offered to those desks alone; none named means every desk. A booking the office enters is not checked against it.
- Adults only. A tour marked adults only takes no children and no infants, not even on a free seat.
- No child fare, no child. A per-person tour with no child fare cannot take a child. Recording the child as an adult is never the answer.
- Larger than the vehicle is sold for. A private tour takes a party only up to its largest price line.
- A cancelled departure takes nobody. Bookings and moves onto it are refused.
- An archived tour is not placed. It cannot be put on a day until it is published again.

## When does a party fit a departure?

When a desk looks for a departure with its guests, a language or a hotel, a departure is left out for one of these reasons, and the portal says which:

- It is full, or it has some seats but fewer than the party.
- Its guide does not speak the language.
- Two other languages are already on it, which is the desk's limit.
- The tour does not stop in the hotel's pickup zone.
- The party has children or infants and the tour is adults only.
- The party has children and the tour sells no child fare.
- It is a private departure that is already taken.

## Time: the cutoff and the cancellation notice

- The booking cutoff. Booking closes the company's cutoff hours (12 unless the company set another number) before the departure's start hour, or before 08:00 when the departure has none, on the company's clock. A booking entered by the office past the cutoff is taken after a confirmation, and records that it was. A booking a desk makes through the portal is not checked against the cutoff.
- The cancellation notice. Through the portal, a desk's own booking can be cancelled up to the company's notice before the start, which is at least 24 hours; the deadline minute itself is already too late, and after it the desk calls the office. The notice applies to the portal only.
- Hours on the wall clock. 24 hours before 08:00 is 08:00 the day before, on the two days a year the clocks change as on every other day.

## Money: prices, free seats and cash

- One price rule. Per person: adults times the adult fare, children times the child fare, infants times the infant fare, which is zero unless the tour sets one. By the vehicle: the first price line the party fits, charged once for the whole vehicle, whoever is in it.
- A zone can change the price. A zone price replaces the tour's fare from that zone, adult and child each on their own, and a private tour's price lines can be replaced per zone the same way.
- The price is kept. A booking keeps the price it was made at. It is priced again only for a change of party, of hotel, into or out of free, or a move to another tour or date. A change to the tour's fares moves nothing already booked.
- A private tour needs a price. A tour sold by the vehicle with no price lines cannot be booked.
- A free seat costs nothing. Its value is zero by its kind, never typed. Making a seat free, or charging for one that was free, is checked on its own, apart from the rest of the booking, which can be edited like any other.
- Cash only on CASH. A CASH booking needs the figure the guide collects; any other payment carries none. Nothing computes it: it is what was agreed.
- Cash within value. The cash to pick up can equal what the booking is worth, never more.
- A new tour must price every party. Changing the tour of a placed departure is refused when a party has no price on the new tour, or when its cash would be more than its new value. Nothing changes until both are fixed.
- Two figures, never mixed. What bookings were worth and the cash guides picked up on board are different figures, and neither is offered as the other or added to it. A CASH booking is worth its price; the cash is only the part the desk did not keep at the counter.
- Money counts what ran. A money figure counts departures dated up to today, on the company's clock: a departure still to come is not money yet.

## Pickup: hotels and times

- The hotel is on the list. A booking's hotel is one of the company's hotels. A new hotel is added to the list, with its zone, before it is booked.
- The time comes from the grid. The pickup time is the grid's time for the departure's tour and the hotel's zone, for the departure's size of vehicle when that size has its own row.
- A cell says one of three things. A time; no stop, meaning the tour does not collect there; or not set, meaning nobody has said yet. No stop is an answer and not set is a question.
- A typed time stays. A time set by hand never moves on its own; a time from the grid follows a change of tour, hotel or departure.
- The portal does not set a time. A booking made through the portal takes the grid's time, or waits for the office to set one.

## Crew: guides, drivers and vans

- No overlap. A guide, a CHOFER or a van is on one departure per slot. A morning and an afternoon fit in one day; a full day takes the day.
- A slot change cannot create an overlap. A tour's slot cannot change when a day would then hold an overlap.
- Not both positions. One person is never the guide and the CHOFER of the same departure.
- Off means off. A guide who is off that day cannot be assigned, and a guide on a departure cannot be marked off that day.
- Everyone on the roster speaks something. A person on the guide roster has at least one language, and each is one of the company's languages. Only the guide's languages count on a departure, never the CHOFER's.

## Departures and convoys

- Only an empty departure is cancelled. Move or cancel its bookings first.
- Parallel departures are allowed. The same tour can run several times on one day, each its own departure with its own seats and crew.
- A move carries the manifest. Moving a departure to another day moves every booking on it.
- A convoy is one day and one destination. Only departures on the board can be linked, on the same date and in the same family, and two departures that are each already in a convoy are not linked to each other: unlink one first. Each keeps its own seats and its own bookings.
- Medio Día has no length. A Medio Día departure counts as Medio Día whatever length is typed on it. A morning tour of another family keeps its length.
- A new order lists them all. Reordering the departures of a day, or the bookings of a departure, must list exactly the ones that are there.

## People, read only, and one company at a time

- One company at a time. Every read and every change happens inside one company. Figures are never added up or compared between companies.
- A read-only membership. It shows the company's work without changing it. What is the person's own stays theirs: their profile, language and password, their notification choices, which inbox items they have read, and the board sent to themselves.
- A person's language is their own. Each person sets the language TourCockpit speaks to them, and it follows them on every device.
- An email address belongs to one person. Inviting an address already in use is refused.
- A sign-up request is decided once. After it is invited or declined, it cannot be decided again.
- Undoing a change. A change in the Activity Log can be put back only while nothing changed it since. Some changes are never put back: signing in and other access changes, invitations, a switch of company, a file that went out, a change made in bulk, changes to a person, to an API key, or to a tour's own definition (its details, its route stops, its price lines and the desks it is kept for by default), a pickup time set on the grid, a new Reference Data row, a deleted departure, a booking's status other than a plain cancel, and the desks a departure is kept for when they are changed on their own. An entry that cannot be undone carries no Revert.

## Names in the API and in exports: the pieces

The API, the exports and anything built on them use the data's own names. These are the same pieces as on the How it fits together page.

| Data name | Product word |
| --- | --- |
| Company | Company |
| Tour | Tour |
| TourInstance | Departure |
| Booking | Booking |
| Passenger | Party |
| Driver | Guide or CHOFER |
| DriverLanguage | A guide's languages |
| Vehicle | Van |
| TourOperator | Operator |
| TourReservedOperator | Desks a tour is kept for |
| TourInstanceReservedOperator | Desks a departure is kept for |
| Hotel | Hotel |
| Zone | Pickup zone |
| TourZonePickupTime | Pickup grid |
| TourZonePrice | Zone price |
| TourVehiclePrice | Vehicle price |
| TourStop | Route stop |
| Language | Language |
| ChildSeatOption | Child seat |
| PickupTimeOption | Pickup time option |
| DriverDayAvailability | Day off |
| DailyNote | Day note |
| User | Person |
| UserCompany | Membership |
| Audit | History entry |
| OperatorSignupRequest | Sign-up request |

## Names in the API and in exports: tours and departures

| Data name | Value | Product word |
| --- | --- | --- |
| TourStatus | PUBLISHED | Published |
| TourStatus | ARCHIVED | Archived |
| TourPriceMode | PER_PERSON | per person |
| TourPriceMode | PER_DEPARTURE | by the vehicle |
| TourSlot | MORNING | morning |
| TourSlot | AFTERNOON | afternoon |
| TourSlot | FULL_DAY | full day |
| DestinationZone | NORTE | NORTE |
| DestinationZone | SUR | SUR |
| DestinationZone | HALF_DAY_MORNING | Medio Día, morning |
| DestinationZone | HALF_DAY_AFTERNOON | Medio Día, afternoon |
| DestinationZone | PRIVATE | Privado |
| DestinationZone | TREKKING | Trekking |
| DestinationZone | FAM_TRIP | Fam trip |
| PickupZone | norte | leaves from the north |
| PickupZone | sur | leaves from the south |
| TourLength | LARGO | LARGO |
| TourLength | CORTO | CORTO |
| TourInstanceStatus | SCHEDULED | on the board |
| TourInstanceStatus | CANCELLED | cancelled |

## Names in the API and in exports: bookings

| Data name | Value | Product word |
| --- | --- | --- |
| BookingStatus | CONFIRMED | booked |
| BookingStatus | CANCELLED | cancelled |
| PaymentType | CASH | CASH |
| PaymentType | TKT | TKT |
| PaymentType | PREPAID | prepaid |
| PaymentType | FREE | free seat |
| PickupTimeSource | GRID | from the grid |
| PickupTimeSource | MANUAL | set by hand |
| BookedByType | MANAGER | booked by the office |
| BookedByType | OPERATOR | booked by a desk |

## Names in the API and in exports: people, guides and companies

| Data name | Value | Product word |
| --- | --- | --- |
| UserRole | ADMIN | Owner: the same role under two names |
| UserRole | MANAGER | Manager |
| UserRole | OPERATOR | desk member |
| DriverAvailabilityStatus | DAY_OFF | Day off |
| DriverAvailabilityStatus | OFFICE | Office |
| DriverAvailabilityStatus | VACATION | Vacation |
| DriverAvailabilityStatus | SICK | Sick |
| DriverAvailabilityStatus | AVAILABLE | never stored: choosing Available removes the day off |
| CompanyKind | LIVE | the company |
| CompanyKind | SANDBOX | sandbox |
| CompanyKind | DEMO | demo |
| CompanyKind | ARCHIVE | archive |
| OperatorSignupRequestStatus | PENDING | pending |
| OperatorSignupRequestStatus | APPROVED | invited |
| OperatorSignupRequestStatus | DECLINED | declined |

## Refusal codes: seats, guests, prices and cash

| Refusal | What it means |
| --- | --- |
| CAPACITY_FULL | Not enough seats left for the party. |
| DEPARTURE_TAKEN | A private departure already has its group. |
| ADULTS_ONLY | The tour takes no children or infants. |
| CHILD_PRICING_UNAVAILABLE | The tour has no child fare. |
| PARTY_ABOVE_LAST_TIER | The party is larger than the private tour's largest price line. |
| NO_VEHICLE_PRICE | A tour sold by the vehicle has no price lines yet. |
| HOTEL_NOT_FOUND | The hotel is not on the company's list. |
| CASH_AMOUNT_REQUIRED | A CASH booking needs the cash to pick up. |
| CASH_AMOUNT_NOT_ALLOWED | Only a CASH booking carries cash to pick up. |
| CASH_ABOVE_VALUE | The cash to pick up is more than the booking is worth. |
| FREE_SEAT_MANAGER_ONLY | Making a seat free, or charging for one that was free, is not part of this access. |
| TOUR_CHANGE_CANNOT_PRICE | The new tour has no price for one of the parties. |
| TOUR_CHANGE_BELOW_CASH | At the new tour's price, a party's cash would be more than its value. |

## Refusal codes: departures, languages and desks

| Refusal | What it means |
| --- | --- |
| INSTANCE_NOT_FOUND | No such departure in this company. |
| INSTANCE_CANCELLED | The departure is cancelled. |
| INSTANCE_HAS_BOOKINGS | The departure still has active bookings. |
| TOUR_ARCHIVED | The tour is archived, so it cannot be placed on a day. |
| LANGUAGE_NOT_SPOKEN | No guide on the departure or its convoy speaks the booking's language. |
| GUIDE_LANGUAGE_UNCOVERED | The change would leave a booking with nobody who speaks its language. |
| DEPARTURE_LANGUAGES_FULL | Two other languages are already on the departure, a desk's limit. |
| TOUR_NOT_AVAILABLE | The departure is kept for other desks. |
| PAST_CUTOFF | The departure is past the booking cutoff. |
| PAST_CANCELLATION_NOTICE | The desk's free cancellation for this booking has ended. |
| DIFFERENT_DAYS | A convoy runs on one day. |
| DIFFERENT_DESTINATION | A convoy goes to one destination. |
| NOT_SCHEDULED | Only departures on the board can be linked. |
| ALREADY_LINKED | Both departures are already in convoys, or in the same one. |
| ORDER_CHANGED | A new order does not list exactly what is there. |

## Refusal codes: crew and the guide roster

| Refusal | What it means |
| --- | --- |
| GUIDE_ALREADY_ASSIGNED | The guide is already out in that slot that day. |
| CHAUFFEUR_ALREADY_ASSIGNED | The CHOFER is already out in that slot that day. |
| VEHICLE_ALREADY_ASSIGNED | The van already runs in that slot that day. |
| CREW_DUPLICATE | One person cannot be both the guide and the CHOFER. |
| SLOT_CHANGE_CONFLICT | Changing the tour's slot would create an overlap. |
| DRIVER_OFF | The guide is off that day. |
| DRIVER_ASSIGNED | The guide is on a departure that day, so cannot be marked off. |
| DRIVER_LANGUAGE_REQUIRED | A person on the roster needs at least one language. |
| DRIVER_LANGUAGE_UNKNOWN | A language is not one of the company's languages. |

## Refusal codes: people, access and the API itself

| Refusal | What it means |
| --- | --- |
| NOT_FOUND | No such record in this company. Another company's records answer this too. |
| INVALID | The request does not make sense as sent; the message says why. |
| VALIDATION_FAILED | A field is missing or in the wrong shape. |
| UNAUTHORIZED | Not signed in, or the key is not valid. |
| FORBIDDEN | This is not part of this access. |
| READ_ONLY | The membership is read only. |
| LANGUAGE_OWNER_ONLY | Changing another person's language is not part of this access. |
| NOT_A_PERSON | A company key has no language of its own to change. |
| EMAIL_TAKEN | The email address is already in use. |
| REQUEST_DECIDED | The sign-up request was already decided. |
| REVERT_REFUSED | That change cannot be put back; the message says why. |
| CONFLICT | Something else changed the same data at the same moment, or the value already exists. Nothing was changed. |
| RATE_LIMITED | Too many in a short time. Try again later. |
| BATCH_ITEM_NOT_A_WRITE | An item in a batch is not a change the API makes. |
| BATCH_ITEM_STANDALONE | An item sends something or takes effect outside the batch, so it is made on its own. |
| BATCH_REF_UNRESOLVED | An item uses the id of an earlier item that created nothing. Nothing was changed. |

## Refusal codes: sending the board and messages

| Refusal | What it means |
| --- | --- |
| NO_CONTACT | There is no WhatsApp number or email address to send the board to. |
| TOO_LARGE | The file is too large to send this way. Download it, or send the PDF. |
| RENDER_FAILED | The file could not be made. |
| STORE_FAILED | The file could not be stored, so nothing was sent. |
| NOT_READY | WhatsApp is not ready for this file yet. Send it by email. |
| UPLOAD_FAILED | The file could not be handed to WhatsApp, so nothing was sent. |
| NOT_DELIVERED | The file was made but could not be delivered. |
| TIMED_OUT | WhatsApp did not confirm the file in time. It may still arrive. |
| SEND_FAILED | A message from the public contact form could not be sent. |
| TOO_MANY_REQUESTS | Too many messages from the contact form. Try again later. |

## Refusal codes: signing in, passwords and requests

| Refusal | What it means |
| --- | --- |
| INVALID_CREDENTIALS | The email address or the password is wrong. |
| LINK_INVALID | The link to choose a password is not valid, was used, or has expired. |
| ALREADY_SET | A password is already set. Change it instead. |
| NO_PASSWORD_SET | There is no password to change yet. Choose one first. |
| CURRENT_PASSWORD_WRONG | The current password is not the right one. |
| INVALID_LOCALE | That is not one of the languages TourCockpit speaks. |
| BAD_REQUEST | The history was asked for without a valid date or record. |
| BATCH_ITEM_REFUSED | An item in a batch was refused, so none of the batch was made. |

## Names in the API: why a party does not fit

| Reason | What it means |
| --- | --- |
| FULL | No seats left. |
| NOT_ENOUGH_SEATS | Some seats, fewer than the party. |
| LANGUAGE | The guide does not speak the language. |
| LANGUAGES_FULL | Two other languages are already on it. |
| NO_STOP | The tour does not collect from the hotel's zone. |
| ADULTS_ONLY | Children or infants in the party. |
| NO_CHILDREN | Children, and the tour sells no child fare. |
| TAKEN | A private departure that already has its group. |

## Names in the API: what a figure can be broken down by

| Code | Level | Groups on |
| --- | --- | --- |
| guide | departure | the departure's guide, or unassigned |
| van | departure | the departure's van |
| tour | departure | the tour |
| day | departure | the date the departure runs |
| month | departure | the month the departure runs |
| zone | booking | the pickup zone of the booking's hotel |
| hotel | booking | the booking's hotel |
| operator | booking | the operator, or the office's own bookings |
| language | booking | the booking's language |
| payment | booking | CASH, TKT, prepaid or free |
| entered | booking | the day the booking was entered, on the company's clock |
