TelescoopeYour Digital Solution
← Work
TransportPayments

Coach tickets & rentals: from seat selection to daily reconciliation

A seat must never sell twice, and the daily report has to agree with the payment provider's own records.

Client
Transport and vehicle hire operator
Period
2025 – present
Role
Took over, then developed
Scope
Passenger app · booking site · operations console
Dailyreports reconciled every day
Oneseat map read by all three booking doors
iOS + Androidplus booking on the web
Two linesscheduled travel and vehicle hire in one system

01 — The situation

The same seat, three booking doors.

Our client operates a fleet for scheduled travel and also hires vehicles out. Bookings arrive from three directions: the passenger app, the website, and staff entering them at a counter.

All three compete for exactly the same thing — one seat on one departure. And unlike goods in a warehouse, a seat cannot be reordered once it has been sold twice.

02 — The problem

Two complaints with the same root.

The two most frequent complaints both came from the same thing: status decided too late.

Seats sold twice happen when availability is checked as the page opens rather than when payment is confirmed. Two people can both see a free seat, and both pay for it.

Report totals that change on every download happen because the report is recalculated from data that is still moving. Transactions whose status isn't final get counted, then change the next day.

A seat isn't stock in a warehouse. Sold twice, there is no replacement.

03 — What we did

Deciding status at the right moment.

Four decisions that closed both complaints at once.

  1. 01

    Seats held when payment starts, not when the page opens

    The moment someone enters payment, their seat is held with a deadline. If the payment isn't completed, the seat returns by itself. Nobody else will ever see a seat someone is currently paying for as free.

  2. 02

    Daily reports frozen, not recalculated

    Each day is closed once and its figures stored as a fixed record. Downloading the same report tomorrow produces exactly the same numbers — because what is read is the frozen record, not data that is still moving.

  3. 03

    System figures reconciled against the payment provider's own

    What the system records as received isn't necessarily what actually arrived. Each day the two are compared and the differences shown as a list to act on — rather than hidden inside a total that already appears to agree.

  4. 04

    One seat map behind all three doors

    App, website, and counter read and write the same seat map. There are no copies to reconcile later, because there are no copies.

04 — The outcome

Report totals stopped moving.

Daily reports now produce the same figures on every download, and differences against the payment provider appear as a list that can be checked — not as an unanswered question at month end.

We still look after the system, and bookings keep arriving through all three doors without colliding.

05 — What keeps it standing

Time is part of the data.

A booking system differs from an ordinary record-keeping system because time is part of what makes it correct. Data that is right today can be wrong tomorrow if its status isn't final.

So every figure used for a decision — reports, summaries, commission — is frozen at a clearly defined moment. What moves is allowed to move; what is reported is not.