← All postsPoint of sale

How to reconcile a cash drawer at the end of the day when three payment methods are in play

iotoms team · September 13, 2026 · 5 min read

A hardware and fasteners distributor ran a single front counter with one shared register, three cashiers rotating across a ten-hour day, and a till drawer nobody actually owned. Contractors paid however was fastest for them: cash off a job-site roll, a card tapped in a hurry, sometimes half in cash and half on account. At close, whoever was on shift counted the drawer, wrote the total on a slip, and dropped it in the safe.

Most nights it was close enough. A few dollars off either way, nobody worried. Then a run of Fridays came in $40 to $90 short, and nobody could say why.

The count that didn't mean anything

The count itself wasn't wrong — the cashier really did have that much cash in the drawer at close. The problem was what it was being checked against. The register's end-of-day report gave one number: total sales for the day. It didn't separate what should have been cash from what should have been card, and it didn't separate what one cashier rang up from what another did three hours earlier on the same shared drawer.

So "the drawer is $60 short" meant nothing specific. It could have been a cashier undercharging a regular. It could have been change miscounted on a big cash sale. It could have been a split-tender transaction where $30 cash and $45 card were rung up as one $75 sale, and the cash portion just never made it into the drawer count logic at all — the register treated the whole ticket as accounted for the moment any tender was applied. It could have been an end-of-day return, refunded in cash, that nobody flagged separately from a same-day sale.

Nobody could isolate which of those had happened, because the only artifact was one shift total against one shift count.

How it compounded

The owner did the obvious thing first: tightened up who was allowed to work the register, added a rule that only one person touched the drawer per shift. It helped a little, and it also meant three cashiers now clocked separate shifts against the same physical drawer without a formal handoff count — so when a shortfall showed up, it usually spanned two shifts and neither cashier could be pinned to it. Suspicion did what suspicion always does in a small team: it made the good cashiers defensive and gave the one who was actually skimming cover to keep doing it, because "the system's always a little off" had become an accepted excuse.

Three months in, a part-time cashier who covered weekend shifts left, and the following week's shortages dropped to zero. That was the answer, but it arrived by attrition, not by any control catching it. Whatever had been happening in the drawer had gone unnoticed for months, and every one of those months, a small amount of the day's real cash sales had quietly not made it to the deposit.

What actually needed to change

The fix wasn't more suspicion of staff. It was making the drawer produce a number that could actually be checked against something.

Assign the drawer to a person and a session, not a shift. Every cashier who touches a register should open their own till session with a starting float, and close it with their own count, even if three people share one physical drawer across a day. A shortage then belongs to one session, not a twelve-hour blur.

Break the expected total down by tender. "Sales today: $2,400" isn't a reconciliation figure. "Cash: $340 expected, card: $1,890 expected, on-account: $170 expected" is. The drawer only needs to match the cash line — and now a $60 gap shows up against a $340 expected cash total, not buried inside $2,400 of mixed tender.

Handle split-tender as two postings, not one. A $75 sale paid $30 cash and $45 card needs to add $30 to expected cash and $45 to expected card — not get logged as a single "paid" transaction that never breaks down by method. Get this wrong and every split-tender sale is a place a shortage can hide.

Post cash refunds against the same session they're paid from. A cash refund closes out a return; it should subtract from that session's expected cash the same way a sale adds to it, with the original transaction referenced, not entered as a free-standing cash-out that's easy to miss when totaling the day.

Tolerance, not silence. A small variance — a few dollars from rounding or a miscount — is normal and shouldn't trigger an inquisition. What it needs is a threshold: anything past a set dollar amount gets a note from the cashier at close, before memory fades, not a guess reconstructed a week later when the pattern's already three shifts old.

Practical checklist

  • Give every cashier their own till session and starting float, even on a shared physical drawer.
  • Reconcile cash against expected cash specifically — not against total sales across all tenders.
  • Confirm your POS posts split-tender sales as separate amounts per payment method, not one lump transaction.
  • Tie cash refunds to the session and original sale they belong to, so they show up in that day's expected total.
  • Set a small variance tolerance and require a same-day note above it, so a real problem doesn't take months of "a little off" to surface.

iotoms tracks every counter sale, split-tender payment and cash refund against the cashier's own till session and breaks the day's expected total down by payment method, so a shortage points at a specific shift and a specific tender instead of a single number nobody can explain.

See your own routes running on iotoms

Book a demo