Review and edit driver timecards
A Conterminal timecard is one driver on one business day. It is not a record you create and file — it is assembled on every page load from completed dispatch segments, self-logged time entries, and Motive ELD driving periods. The two things you can change are what a segment paid and the self-logged hours.
8 minute read · Updated July 27, 2026
Nothing here is a payroll calculation.
The timecard totals segment pay and worked minutes and stops there. The driver's hourly rate from the roster is not applied, no overtime rule runs, and there is no approve, lock, or export step. Treat these screens as the record of what happened and what each move paid, then do payroll wherever you do payroll.
The day view
Open Timecards from the Back Office section of the left rail. That section is collapsed by default, so expand it if you do not see the entry. The page opens on the current business day with a heading of Driver Timecards, the full date underneath, and the suffix — today when you are looking at today.
The table gives you one row per driver on your roster, with these columns:
- Segments Completed
- Dispatch legs marked completed with a completion time inside this business day. Shows an em dash when the driver had no activity at all.
- Segments Rated
- How many of those segments carry a pay amount, written as “3 of 5.” This is your work queue: anything short of the full count still needs a rate.
- Segment Pay
- The sum of the rates entered on that day's segments. Zero renders as an em dash, not $0.00.
- Logged Time
- Self-logged manual time only — the hours a dispatcher or manager typed in. It never includes ELD time.
- ELD Time
- Driving time synced from Motive. Independent of Logged Time; the two are not reconciled or deduplicated for you.
The last column is the link into the day itself. It reads Open Timecard if you can edit and View Timecard if you cannot — that label is the fastest way to tell which side of the permission line you are on. The driver name in the first column goes to the same place.
On a phone the table becomes a card per driver. Each card shows the name, the status chip, worked hours or No time, and a two-up grid of Segments and Segment pay. Segments rated and ELD time move behind a More timecard details disclosure, and the whole card ends in a full-width Open timecard button.
The list is the whole roster, not just the drivers who worked. Every driver record in your workspace appears every day, including Inactive and Terminated ones, with a row of em dashes. If a driver is missing entirely, the problem is the roster, not the timecard — see managing drivers and credentials. An empty roster shows “No drivers on the roster yet.”
Navigating business days
Four controls sit in the header: a Timecard date field, Previous Day, Today, and Next Day. Changing any of them rewrites the URL to ?date=YYYY-MM-DD, so a specific day is a link you can paste to a colleague.
- Use Previous Day and Next Day to step one calendar day at a time. They are hidden on narrow screens — on a phone you get only the date field and Today.
- Type or pick a date in Timecard date to jump anywhere. There is no range: the screen is always exactly one day.
- Inside a driver's day, Previous Day and Next Day keep the same driver and move the date, so you can walk one driver through a week without going back to the list.
The business day is Eastern time, always.
Every date on these screens is an America/New_York calendar day. It does not follow your browser, your workspace, or your terminal's local time, and there is no setting that changes it. A move completed at 9:30 PM Pacific lands on the next Eastern business day and will not be on the timecard you expected. Every clock time rendered on these screens is Eastern too, even though the field labels never say so.
A segment is filed on the Eastern date of its completion timestamp. Self-logged and ELD entries are filed on the date stored with the entry. That is why a late-evening move and the manual hours covering it can end up on two different timecards.
A ?date= value that is not a real YYYY-MM-DD date is discarded silently and you land on today instead — no error, no warning. If a link you followed shows today when you expected a past date, check the URL rather than assuming the day was empty. A malformed date in a driver's URL behaves differently: that one returns a 404.
Sorting and filtering
There are no sorting or filtering controls on this page. No column headers are clickable, there is no search box, and there is no status filter. The order is fixed by the server and is the same for everyone, every day:
- Drivers with activity first. Activity means at least one completed segment, one self-logged entry, or one ELD entry on that date. This is what keeps the people who actually worked at the top instead of alphabetically buried.
- Then active drivers. Within each of those two groups, Active drivers sort ahead of Inactive and Terminated ones.
- Then alphabetically by name.
A column-menu version of this table, with per-column sort and filter, exists in the codebase but is not wired to the route. You will not find it in the app, and no setting turns it on. If someone described filtering the timecard list to you, they were describing something that has not shipped.
In practice you narrow the screen two ways: change the date, or stop using the list. If you already know which driver you care about, open that driver's roster record and jump into a specific day from there, or edit the driver and date directly in the URL.
Opening a driver’s day
Selecting a driver opens that one day. The header carries an All timecards link back to the list on the same date, the driver name, the long date with (today) appended when it applies, and a View roster record link. Below that is a five-cell totals strip: Segments, Rated, Segment Pay, Logged Time, and ELD Time. Then three tables.
Completed Segments
Columns are Completed, Move, Container / Reference, Customer, Route, and Segment Pay, ordered by completion time. A row appears only when the dispatch is marked completed, its completion time falls inside this Eastern business day, and the underlying job is owned by your workspace — a leg you ran for another organization is deliberately excluded.
The Move chip is the dispatch move type: pickup, delivery, empty return, or a plain Move chip when the dispatch carries none. Route uses the real name only where the move type makes it unambiguous — a pickup shows the delivery order's pickup terminal as the origin, a delivery shows the consignee as the destination, an empty return shows the return terminal. Everything else falls back to the dispatcher's own endpoint category: Pier, Consignee, Yard, or Other. A vague route is honest reporting, not missing data.
Container / Reference links to the delivery order when the job has one. A day with no completed dispatches shows “No segments completed on this day.”
Cartage work is not on timecards yet. The note under the table says so outright: “Cartage segments appear here once segment completion lands with the dispatch cartage work.” A driver who spent the day on cartage jobs will show zero segments here even though the work happened.
ELD Time (Motive)
The third table carries a Read only chip and lists Start, End, Duty Status, and Duration. These rows are synced evidence from Motive, not something anyone typed. Only driving periods are synced, so the duty status you see is driving; on-duty-not-driving and off-duty periods are not pulled. An empty day reads “No ELD time synced for this day.”
The ELD sync window is three business days.
The Motive poll runs roughly every fifteen minutes and reconciles only the trailing three Eastern business days, today included. Corrections a driver makes in Motive to an older day will never appear on the Conterminal timecard, because nothing re-reads that day. Fix ELD gaps while they are still inside the window.
Editing segment pay
If you can edit, the Segment Pay cell on each completed segment is a dollar field. There is no Save button for it.
- Type the amount in dollars. The $ is printed beside the field, so enter 185.50, not $185.50. Nothing is pre-filled and nothing is suggested — every rate is typed by hand.
- Commit by leaving the field. Press Enter or click away. The save fires on blur, and typing a value identical to the saved one does nothing at all.
- Confirm it stuck. A saved segment shows a small rated 3:42 PM line under the field, and the Rated and Segment Pay totals at the top of the page update.
- Clear the field to un-rate. Emptying the box and leaving it deletes the pay record for that segment. That is the only way to undo a rate; the segment drops back out of the Rated count.
The errors appear directly under the field:
- “Enter a dollar amount”
- What you typed is not a number, or it is negative. Digits and a decimal point only.
- “Segment pay above $10,000 — enter it as an adjustment instead.”
- A hard cap on a single segment. Usually a decimal-point slip; if the amount is genuinely that large, it does not belong on one leg.
- “Only completed segments can be rated.”
- The dispatch is no longer in completed status. Almost always means someone reopened the leg in Dispatch while you had the timecard open.
- “Segment belongs to another organization.”
- The job behind the leg is owned by a different workspace. You cannot rate it from here.
Read-only viewers see the formatted amount or an em dash with no input box at all. Rating a segment refreshes both this page and the day list, so a colleague on the list view sees the new totals on their next load.
Manual time entries
The middle table is Self-Logged Time. Editors get an Add Time Entry button beside the heading; everyone else just reads it. An empty day says “No self-logged time for this day.”
- Select Add Time Entry. An inline form opens with Start, End, Break (min), and Notes. Start and End are pre-filled with 08:00 and 16:00 on the day you are viewing, and Break starts at 0.
- Adjust the times and the break. Worked time is End minus Start minus the break, floored at zero, and renders as 7h 30m. A break longer than the span produces 0h rather than negative time.
- Select Save Entry. Cancel discards the form. The row joins the table sorted by start time and the Logged Time total updates.
- Correct a row with Edit Entry. The same four fields reopen inline, with Save Entry, Cancel, and Delete. Delete asks “Delete this time entry?” in a browser dialog first, and is permanent — there is no undo and no history.
Validation is checked on the server, and the message appears in the open form: “Start and end times are required.”, “End time must be after the start time.”, “Break minutes must be zero or more.”, and “Driver not found.” if the driver does not belong to your workspace. An entry that crosses midnight is allowed — End simply has to be later than Start.
Check the saved time before you move on.
The Start and End pickers carry no time zone, and the two sides of the screen do not agree on one. The saved row is rendered in Eastern time, while the value you type is read against the server clock and the edit form pre-fills from your browser's time zone. In practice an entry typed as 8:00 AM commonly reads back several hours earlier, and reopening an entry and saving it again — even without changing anything — shifts it again by the same amount. Enter the row once, read the saved Start and End back, and if they are wrong, report it rather than editing repeatedly.
Only self-logged rows are editable. The ELD table has no controls at all, and any attempt to change one of those rows is refused with “ELD time is synced evidence and cannot be edited.” If ELD time is wrong, correct it in Motive and let the sync bring it over — within the three-day window.
Who can view vs edit
Timecards exist only for carrier workspaces. A forwarder or importer workspace has no Timecards entry in the left rail and is redirected to the unauthorized page if it reaches the URL directly — see why you cannot see a page.
- Can view
- Tenant admins, managers, and standard users in an active carrier workspace. Viewers see every number on both screens; their link label reads View Timecard and no input boxes render.
- Can edit
- Tenant admins and managers only. Editing covers segment pay and self-logged time entries — adding, changing, and deleting. No role can edit ELD rows.
The permission check runs on the server for every save, not just when the page renders, so a standard user cannot reach an edit by any route. Note that the timecard write boundary is deliberately wider than the driver roster's: a manager who can rate segments and log time here still cannot open the roster. The View roster record link in the day header is admin-only, so a manager or standard user who follows it lands on the unauthorized page.
Troubleshooting
A “Pay pending migration” banner across the top
The full message is “Segment pay columns are not applied to this environment yet — segments and time render; pay shows once migration 20260982 is applied.” The pay database change has not been applied to the environment you are on. Segments and time are complete and correct; every pay cell shows a Pay pending migration chip instead of a field, so nothing can be rated. This is an environment state, not an account problem — no permission or setting fixes it. Contact support with your workspace name if you see it in production.
The date does not match what your calendar picker shows
Business dates are America/New_York and nothing changes that. If you are west of Eastern, a late-afternoon or evening move completes on the next Eastern business day and appears on tomorrow's timecard; if you are east of it, an early-morning move can land on yesterday's. When a move is missing, check the adjacent day before assuming the segment was never completed. The same shift affects self-logged time, which is why the hours and the moves they cover can split across two days.
A completed move is not in Completed Segments
Three things must all be true: the dispatch leg is in completed status, its completion time falls inside the Eastern business day you are viewing, and the job behind it is owned by your workspace. A leg still marked in progress, one completed just past the Eastern midnight boundary, and one belonging to another organization all produce the same empty-looking result.
Cartage work does not appear at all
Cartage segments are not on timecards yet — the note under the table states it. Rate that work wherever the cartage job itself is billed; do not add a fake manual time entry to stand in for it.
Logged Time is blank even though there are entries
An entry with no end time contributes zero minutes by design, so it never becomes phantom paid hours. On the day list, one open-ended entry also blanks the whole End Time value for that driver. Open the driver's day, find the entry without an End, and complete it.
ELD Time is missing or stale
Only Motive driving periods sync, and only for the trailing three Eastern business days including today. A driver who is not linked to Motive will never show ELD time; an older day will never be re-read no matter what changes in Motive. If a recent day is empty, wait for the next poll — it runs about every fifteen minutes — before escalating.
“ELD time is synced evidence and cannot be edited.”
You tried to change or delete a Motive row. This is intentional and no role overrides it. Correct the record in Motive while the day is still inside the three-day sync window, or add a separate self-logged entry with a note explaining the discrepancy.
“Only completed segments can be rated.”
The dispatch left completed status between the time your page rendered and the time you committed the rate — usually because someone reopened the leg in Dispatch. Reload the timecard; if the segment is gone, the leg is no longer completed and has to be finished in Dispatch first.
“Segment pay above $10,000 — enter it as an adjustment instead.”
A single segment is capped at $10,000. Check for a misplaced decimal point first. A genuinely larger amount is not a segment rate and should be handled as a billing adjustment rather than forced onto one leg.
A timecard URL returns Page not found
Either the date in the URL is not a valid YYYY-MM-DD value, or the driver ID does not belong to your workspace. Go back to the day list and click through instead of hand-editing the address; a bad date on the list page silently falls back to today, but a bad date on a driver's page 404s.
A driver is on the list but every column is an em dash
That is a driver with no activity on that date: no completed segments, no self-logged time, and no ELD time. The roster is shown in full every day, including Inactive and Terminated drivers, so empty rows are expected and are not an error.
You cannot find a sort or filter control
There is none. The order is fixed — drivers with activity first, then active drivers, then alphabetical. Narrow the screen by changing the date or by opening a specific driver rather than looking for a control that is not there.