Skip to main content

Timesheets and Timecard Discrepancies

How payroll timecards arrive in VoiceERP, what the Timesheets page flags, and how you and your drivers resolve discrepancies before payroll closes.

The Timesheets page (Human Resources → Timesheets) is where you catch payroll problems before you pay them. It doesn't hold your punches — your payroll system does. It reads them, compares them against what actually happened on the road, and hands you the days that look wrong while there's still time to fix them.

Where the numbers come from

Timecards are pulled from your payroll provider automatically. ADP, Paycom, and Uzio are supported, and the sync runs every few minutes all day, so a punch corrected in payroll shows up here shortly afterward. Connecting the provider is a one-time job covered in its own article.

The other half of the picture comes from Amazon — Flex and Cortex route data, plus your VoiceERP schedule and roster start times. That's what makes this more than a punch audit: the app knows whether a driver who clocked in at 9:15 actually started working at 9:15, and whether that driver had a shift on the schedule that day.

Each driver has to be tied to the right person in payroll for any of it to work. Anyone missing that link raises a Missing Payroll ID task, and the Match Payroll ID screen pairs them up. Unmatched people aren't checked at all.

The Timesheets view

The page opens on a range that starts with your oldest payroll period still open for edits and runs through today, so while the previous period is inside its processing window you see it together with the current one. The date range picker adjusts that. Three cards sit above the grid: Total Estimated Saving, the dollar value of the time in question based on each driver's hourly rate (a driver with no hourly rate on file is costed at $21 an hour), alongside Discrepancies Resolved and Discrepancies Outstanding. Press either count to filter the grid, press again to clear.

The grid is grouped by driver, with columns for Date, Issue, Status, Time Discrepancy, and Actions. Search with the box above it, and flip on "Only Show Drivers Over 40 Hours (In Selected Range)" to focus on the people whose extra minutes are costing you overtime. A speech-bubble icon in the Status column means the driver has written back.

Click a row for the detail panel: Issue Flagged, Rule Limit, At Work, and Estimated Discrepancy Cost, then a Timeline of the day showing payroll punches and Cortex route activity side by side. Further down, AI Outreach History lists every message Viki sent the driver about that day. For a Clock In On Unscheduled Day row, the panel also includes a Schedule Info section with Payroll Clock-In, Paid Time, and On Roster That Day. Each driver's own history lives on their profile under the Timesheets tab.

What gets flagged

Checks come in four families, and you switch each one on and set its threshold under Timesheet Settings. Clock-In/Clock-Out Issues covers missing punches, clocking in before roster start, clocking in on a day with no shift on the schedule, clocking out too late or too long after the final delivery, and payroll punches that disagree with Flex. Lunch Compliance covers breaks that ran long, ran short, started too late, fell outside your window, disagreed with Cortex, or had deliveries completed during them. Break Compliance covers non-lunch break length and count, total break time, and Unknown Stops. Work Hour Compliance covers days past your maximum shift length.

The Clock In On Unscheduled Day check in that first family has no threshold. It flags a payroll clock-in on a date the driver has no live shift on the VoiceERP schedule. Its only setting under Timesheet Settings is Treat drivers on the day's roster as scheduled. With the switch off, only the schedule counts. Turn it on and a driver on the day's roster counts as scheduled even without a shift.

Each check also carries an audience: Driver + admin triggers notify the driver as usual, while Admin alert only triggers ("Alert administrators only") flag the day for you without ever notifying the driver — the coaching-and-scheduling checks (final clock-out delay, non-lunch break length and count, total break time, shift length, and clocking out after the allowed time) start out as admin-only when your rules are first set up, since they're signals for you rather than something the driver should fix. One setting worth knowing sits alongside them: "Delay flagging lunch discrepancies until a set time of day" holds lunch checks back until an hour you pick, because a lunch that looks missing at noon often isn't by mid-afternoon.

Working a discrepancy

Most rows land on Awaiting HR Review. Approve Discrepancy sends it to the driver (blocked if they have no phone number on file); rows from admin-only triggers don't offer the driver-directed actions — Approve, Require Correction, and Send Reminder — since there's nothing to send, while Dismiss and the rest work as usual. Require Correction is the firmer version: the driver can acknowledge it but can't wave it away, and the row's button then becomes Allow Driver Dismissal to relax it again. Dismiss Discrepancy takes the row out of your queue; it stays in the grid as Admin Dismissed, counted as resolved, and Reopen Discrepancy on that row brings it back. Tick several rows and a bar appears at the bottom offering the same actions in bulk, including Allow Driver Dismissal and Reopen.

Once it's with the driver the status tracks it: Notification Scheduled, then Pending Driver Review, then Driver Acknowledged or Driver Dismissed, or Correction Required if you've insisted. Rows you dismissed yourself show Admin Dismissed. Send Reminder nudges anyone sitting on one, and when the punch is fixed in payroll the row turns Resolved on its own.

The deadline matters. Each discrepancy expires at your payroll submission deadline; anything unanswered by then is marked Unresolved and can no longer be sent to the driver, reminded, or reopened; Dismiss Discrepancy is the one action still open on it. The outstanding count is a countdown, not a backlog.

What the driver sees

Drivers only see flagged days from triggers set to notify them — admin-only triggers never appear in their app or generate a message. How the driver hears about a flagged day depends on what they use: a driver signed into chat on the mobile app gets a chat message from Viki, a driver with the home app gets a push notification titled "Timecard discrepancy" that opens straight to that day, and everyone else gets a text with a link to the same review page on the driver web portal. Under the HR tab there's a Timecards entry — "Review flagged days on your timecard" — badged with anything waiting on them. Each flagged day is a card showing the rule, the limit, and the same timeline you see. For a Clock In On Unscheduled Day card, the same Schedule Info appears: the payroll clock-in, paid time, and whether they were on the roster.

When VoiceERP can work out the likely correct time, the card leads with a Suggested fix — the proposed punch next to what payroll has, why it's suggested, and a confidence label — so the driver knows exactly what to fix in the payroll system. Their response is a choice between I'll fix my timecard (they will correct it in payroll; a note is optional) and My timecard is correct (no change needed; an explanation is mandatory for that one), followed by Submit response. That's what puts text behind the speech-bubble icon on your grid; it reaches you under Driver's Response, and they can change their answer later.

Notification settings

Under Timesheet Settings → Notification and Reminder Settings, "Automatically notify employees of identified discrepancies" is the big one: leave it off and everything waits for you to press Approve; turn it on and notifications go out without you. "Schedule initial notification at" sets the hour, and any individual check can override that to fire Immediately. Two reminder toggles follow — "Send reminders on days worked at" and "Send reminders on days not worked at" — each with its own time. A reminder names up to three of a driver's outstanding issues rather than sending one message per problem.

For your own side, Settings → AI Notifications offers Timecard Checking Summary, a digest of new discrepancies broken down by status.

The same page holds your Payroll Cycle — Weekly or Biweekly, the cycle start date, how long after it ends drivers can still edit timecards, and the cutoff time. That's what sets the expiry on every discrepancy, so get it right first.

Did this answer your question?