Excursions & runs
Plan an excursion or a run, crew it and project its cost, close it out when it has run, and read what it really cost — while the compliance clock learns the locomotive was in service.
A run is the record of a train: which locomotives and cars made up the consist, who crewed it, how many trips it made, how many riders it carried, what it burned, and what it cost. It starts as a plan and becomes a record when you close it out. Click Excursions & Runs in the sidebar to see them all.

Logging runs matters well beyond the operating department. RailCompliant counts inspection intervals in service days, and a run's date is one of the things that marks a day as in service. A railroad that never logs its runs will see its Part 230 service-day clocks sit still while the locomotive is actually working.
The calendar, the season and the list
The page leads with the month: every dated run on its day, coloured by where it stands — planned, running, closed out, or cancelled. Click a run to open it, ‹ and › to change month, or the + on a day to plan a run for that date. Full calendar → opens the railroad's Calendar, where runs sit beside inspections due, waivers, work orders and work days.
Below it, pick a Season (a year, or all years) and a Kind, then click Show. Four figures sum up the season's closed-out runs: Closed-out runs (with the number of trips), Train-miles, Passengers, and Direct cost (with the cost per trip and per rider).
Each run's row shows its name and route, date, kind, status, consist (locomotives, cars, crew), trips, train-miles, riders, and direct cost. A day of a multi-day excursion is labelled Day 2 of 3. A planned run shows only what has actually been spent on it so far.
What each route costs compares routes across the season's closed-out runs: runs, trips, average riders, fuel and water per trip, cost per trip, and cost per rider. Averages are weighted by trips and riders, so a busy day counts for more than a quiet one, and cost per rider only uses runs that counted their riders.
Planning: an excursion or a single-day run
Click + New. RailCompliant asks what you are planning:

- Excursion — an event of one or more days: a weekend special, a week of school trains, every Saturday in October. You give it a name, its first day, how many days, and which days (days in a row, Saturdays and Sundays, or the same day each week), plus the kind, route, miles per trip and trips each day. You get one planned run per day.
- Single-day run — one day's running: a test run after shop work, a work train, a charter, a one-off trip.
Either way, each run has:
- Name — how you refer to it. Every day of an excursion carries the excursion's name; renaming one day renames them all.
- Date — the day it operates. This is the date that counts as a service day for every locomotive in the consist.
- Kind — revenue, test, work, charter, or other. A test run after a repair and a Saturday revenue train are both runs; the kind is how you tell them apart later. Ticket revenue is tracked outside RailCompliant.
- Route — free text, such as "Yard → Summit → Yard".
- Miles per trip — one lap or round trip.
- Trips — how many times the route is run that day.
- Passengers — optional; the riders you expect, or once it has run, the riders carried across all trips.
- Trailing tons — optional; leave it blank and the app works it out from the consist (see below).
- Notes.
The days of an excursion
Each day of an excursion has its own page, because each day has its own crew, riders, fuel and service day. A strip at the top of every day ties them together:

- The day buttons and the ‹ › arrows step through the days. Each button is edged with its status.
- The strip totals the excursion: hours and cost planned across all its days, and actual so far for the days already closed out.
- Copy this day to the others gives every other day that is still open this day's consist, crew and planned hours, replacing what they had. Days already closed out are left alone. Set up the first day, copy it, then change only what differs.
- + Add a day adds a day after the last one, set up like it.
Each day is planned and closed out on its own.
A run is a plan until you close it out
Until a run is closed out its page carries a Plan notice, and nothing on it is on the books. The hours you enter are planned hours. They do not appear in the labor totals, on anyone's service record, or in the volunteer-hours report, so you can plan next month's excursion without it looking as though the work has been done.
The Projected cost card works out what the run should cost from your own records, so there is nothing to estimate by hand:
- Paid & contractor labor — planned hours at each person's rate from the crew roster.
- Fuel & water — what closed-out runs on the same route cost per trip, times the trips planned. It says how many earlier runs the figure is drawn from; with none, it says so and leaves fuel out.
- Other direct costs — any you have already entered.
- Volunteer time — planned volunteer hours and their in-kind value, shown beside the projected cost rather than inside it.
If a planned run's date passes without it being closed out, the notice turns red and says so. Close it out, or cancel it if it did not run. A cancelled run gives its locomotives no service day. If an engine was fired that day anyway, record it with a daily inspection or Log service day on the locomotive.
Building the consist
Consist — Locomotives. Pick a locomotive, give it a role (lead or helper), and click Add. Each assigned locomotive picks up the run's date as a service day (unless the run is cancelled) and its share of the mileage. Use Remove to correct a mistake.
Consist — Cars. Pick a car from your rolling stock and click Add. Only active cars are offered. The panel shows each car's weight, and flags any car without one. See Rolling stock.
The train. Once the run has a consist, a card above it draws the train end to end: each locomotive and car as its own type, with its reporting mark underneath, the lead locomotive at the right. Click any unit to open its record.

The crew, and their hours
The Crew card is the roster and the timesheet in one.

Pick a person from the roster, give them a role (engineer, fireman, conductor, brakeman, or crew), and click Add to crew. Anyone can be crewed whether or not they have an app login — see Crew & qualifications. Crew who do have a login see the run on their own My Career service record.
Type each person's hours beside their name and click Save hours. Each person has one figure per run: to correct it, change it and save again; clear the box for no hours. Whether the hours are volunteer, paid, or contractor, and the rate they are valued at, come from the person's roster record; the card does not ask.
The menu button at the end of a row opens Edit roles — tick the roles the person holds on this run; one person can hold several — and Remove from crew. Removing someone keeps any hours they had; they move to the card below.
Others on this run is for people who work the run without being on the train crew: station and ticket staff, car hosts, a shop hand who comes out for the day. Pick the person, enter their hours and, optionally, what they are doing. The menu at the end of an entry edits or removes it.
Starting a run
The top of a run's page shows where it stands, in three steps: 1 Planning, 2 Running, 3 Close out. The step it is on glows yellow, finished steps are ticked off in green, and a step you can take next is a green button.
When the train goes out, click Start now. The run turns to running; a run with no date yet takes today's. Starting a run is optional, since you can close out a planned run directly.
Closing out a run
When the run is done, click Close out in the steps at the top of its page (or in the plan bar; on an excursion, Close out day 2, and so on). One form starts from the plan and records what actually happened:
- What ran — the date run, trips, miles per trip, riders, and trailing tons (leave blank to work it out).
- Fuel & water used — for each locomotive in the consist, the store its fuel came from and how much, and the store its water came from and how much. Each fill comes off that store's stock at the store's unit and price. Leave an amount blank to skip it.
- Crew hours and Others' hours — each box starts at the hours planned for that person. Change it to what they actually worked, or clear it if they did not work the run. The hours are booked on the run date on each person's roster terms.
- Other direct costs — anything else the run cost.
Saving closes the run out: it books the hours, draws the fuel, and builds the operating report. If anything cannot be used, nothing is saved and the form lists what to fix.
Set up your coal, oil, diesel, and water on Stores before your first run. Run fuel and water are drawn from a store, which holds the price and the unit, so closing out asks only for a quantity.
After a run is closed out, its Crew and Others cards show the booked hours, and can still correct them. Fuel and other costs can be added on the run's page at any time:
Fuel & water on this run — pick the locomotive, the store it came from, and the quantity, and click Add. The store sets what it is, its unit, and its price, and the fill comes off its stock. A fill is always real, even on a run that is still a plan, because the fuel has left the store.
Other direct costs — a description and an amount: sand, a hired flagman, car hire, a crossing officer — anything the run cost that is not fuel, water, or crew time.
If you type something that cannot be used — hours above 24, a quantity with a unit in it, more than the store has on hand — nothing is saved and a sentence beside the form says why.
Cancelling, deleting and running again
The menu button beside the steps at the top of a run holds:
- Edit run — the run's name, date, status, kind, route, miles per trip, trips, riders, trailing tons and notes, in a box over the page.
- Run again — see below.
- Cancel this run — for a run that is not going to run after all. Its plan is kept for reference and nothing about it counts. Set it back to planned from Edit run if it is on again.
- Delete — for a run entered by mistake. Its plan, consist, crew and costs go with it. Once hours or fuel are on the books, a run is a record of something that happened: it can be corrected, but not deleted, and the menu says so.
A run's status changes to closed out only by closing it out; Edit run offers planned, running and cancelled.
Run again, in a run's menu and beside each run on the list, plans a new single-day run with the same name, kind, route, miles and trips, the same consist and crew, and the earlier run's hours as its planned hours. Cars and people that are no longer active are left off, and the new run says so. To extend an excursion, use + Add a day instead.
The operating report
A closed-out run leads with its Operating report:
- Trips, Train-miles (miles per trip × trips), Riders, Trailing tons, and Ton-miles (trailing tons × train-miles).
- Fuel & water — each consumable used, per trip, per mile, per 1,000 ton-miles, and its cost. Different units are never added together, and a fill without a price is flagged so you know the cost is understated.
- What it cost — fuel, water, paid and contractor labor, and other direct costs, adding up to the direct cost, with the cost per trip, per mile, and per rider.
- Volunteer time — hours and their in-kind value, shown beside the direct cost rather than inside it.
- Estimated maintenance allocation — for each locomotive, its lifetime maintenance spend divided by its lifetime miles, times this run's miles. It is an estimate of wear, kept apart from the direct cost.
Under the report, Planned and actual sets the plan as it stood when the run was closed out beside what was booked: hours, paid and contractor labor, fuel and water, other direct costs, the direct cost, and volunteer time.

Trailing tons are worked out from the light weight of every car in the consist plus the riders at 175 lb each, unless you entered a figure yourself — useful for a work train, loaded freight cars, or a borrowed coach. If a car has no weight on file the tonnage shown is only a floor, and the per-ton-mile figures wait until every car has one.
What the record feeds
A run updates several places at once:
- Service days — the run date counts toward every service-day interval on each assigned locomotive, which is what the Compliance dashboard counts down.
- Mileage — miles per trip × trips is added to each locomotive's total (shown as "run" miles, separately from manually entered miles) and to each car's car-miles. Cancelled runs, and planned runs dated in the future or with no date, add no miles.
- Fuel and cost — fills roll into the locomotive's averages and the fleet view described in Fuel, water & mileage. A closed-out run's paid hours and its other direct costs count as spending in the Cost Center; fuel drawn from a store was already counted when the store was bought.
- Volunteer hours — hours booked at close-out are attributed across the locomotives that ran, so grant reporting can show effort per machine. Planned hours are never counted.
- The calendar — every dated run shows on the railroad's Calendar and in the calendars people have subscribed to on their phones.
Every change to a run is appended to its Record history panel at the bottom of the page, along with who made it.