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

# Reconciliation and the scheduled jobs

> How Omnibeds finishes bookings a supplier hasn't confirmed, and what each scheduled job does: frequent checks, the daily quote job, exchange rates and hotel content.

Some work in Omnibeds happens without anyone clicking: finishing bookings a supplier accepted but didn't confirm yet, warning before free cancellation ends, re-checking quotes, and refreshing exchange rates and hotel content. The jobs check and flag. They never book or cancel.

## Reconciliation

Reconciliation works the same way for every supplier. For each booking the supplier accepted but hasn't confirmed, Omnibeds asks the supplier again:

| The supplier says | The booking becomes |
| - | - |
| Confirmed | `confirmed` |
| Failed, for certain | Closed as failed, with the reason |
| Still processing, or no answer | Unchanged; asked again next time |

It runs from the frequent checks, from the **Run reconciliation** button on the bookings page, and when someone opens the booking. Real suppliers are always asked live, and one booking's error never stops the others.

## The scheduled jobs

| Job | When | What it does |
| - | - | - |
| Frequent checks (`/api/cron/frequent`) | Woken every hour; each agency's checks run as often as it chose in the admin panel | Cancellation deadline alerts, reconciliation, and the price-drop watch |
| Quotes (`/api/cron/quotes`) | Daily at 03:00 UTC | Closes quotes past check-in or their deadline, then re-checks open priced and sent quotes and flags changed options |
| Exchange rates (`/api/cron/fx`) | Working days at 15:30 UTC | Stores the day's ECB reference rates. Prices also fetch them when the stored ones are old. |
| Hotel content (`/api/cron/content`) | Daily at 04:00 UTC | Reloads each supplier's stored hotel content when the interval set in the admin panel has passed |

The daily jobs are scheduled in `vercel.json`. The hourly wake-up comes from an outside scheduler (`.github/workflows/scheduled-checks.yml`), so the agency, not the scheduler, decides how often its checks run.

The frequent checks and the quote job run once per agency, inside that agency's scope; the quote job only for agencies with the quotes module on. When a shared secret is configured, every job route requires it as a bearer token.

### Deadline alerts

The frequent checks warn 72 hours and 24 hours before a booking's free cancellation ends. Alerts appear in the bell, and are emailed when email sending is set up.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.