Skip to content

Part 2 of 7 · Cash drawer reconciler series ~6 min read

How a close gets recorded

This is the only system in this series with two inputs that arrive independently, minutes or hours apart, from different sources, with no shared identifier between them. Getting them paired without asking a supervisor to type a shift reference at eleven at night is most of the engineering, and it is worth doing properly, because the alternative is the thing everybody does: a spreadsheet, filled in on Sunday, from memory.

Key takeaways

  • Two inputs, arriving separately: a photographed count sheet and a till report.
  • They are paired on till, date and shift window — never on a reference somebody has to type.
  • A close with only one half is held, not discarded, and chased the next morning.
  • Unreadable denominations produce a question with the crop attached, never a guess.
  • The denomination breakdown is kept, not just the total, because it is what explains a miscount.

Two inputs, one shift

Two independent inputs converging on one shift recordThree boxes stacked on the left. Count sheet photo, carrying the denomination grid and labelled counted. POS export, emailed at close and labelled expected. And Printout photo, for a point of sale that only prints, also labelled expected. All three converge on One shift record on the right, holding the till, the date, the shift window, the counted total and the expected total. Below it, connected by a downward arrow, is the Explainer, which runs once both halves have landed. A note says the halves are matched on till, date and window, and that nobody types a reference at eleven at night.Count sheet photodenomination gridcountedPOS exportemailed at closeexpectedPrintout photoif the POS only printsexpectedOne shift recordtill, date, window,counted, expectedExplaineronce both halves landMatched on till, date and window. Nobody types a reference at eleven at night.
Fig 1. The two halves of a close and the three ways they arrive. Pairing is done on facts the inputs already carry, because any scheme that needs a typed reference will be skipped.
  • Database
  • Analytics
  • Front-end & mobile

How the halves get paired

Three facts are available without asking anybody for anything: which till, which date, and roughly what time. The till comes from the photo itself in most shops — the count sheet has a till number on it, or the photo came from a device assigned to a till. The date and time come from the upload. The till report carries all three explicitly.

So the pairing rule is: same till, same business date, and shift windows that overlap. The business date is not the calendar date, which matters enormously in hospitality — a close at 01:20 belongs to the previous day, and getting that wrong makes every Friday night look like a Saturday morning with no takings. The business-day cutover is a number in the thresholds sheet.

Reading a denomination grid

How a photographed count sheet becomes a counted totalA vertical chain of six steps inside the AWS account, entered by a box labelled Count photo, taken at close. Step one stores the original in S3 as evidence. Step two asks whether this close has been submitted before, keyed on till and business date against a DynamoDB shifts table; a recount exits to Replace the draft rather than creating a second close. Step three pulls the grid with Amazon Textract table extraction. Step four reads the denominations, multiplying the count by the value on each row. Step five checks whether the rows sum to the total written on the sheet, exiting to Ask about the sheet with the crop shown if they do not. Step six waits for the other half of the close, or chases it in the morning. A note says the written total is a checksum, and that if the rows do not sum to it the read is wrong rather than the count.AWS ACCOUNTCount phototaken at closeStore the originalS3, kept as evidenceThis close before?till + business dateDynamoDB shiftsdraft, replaceableReplace the draftrecount, not a secondrecountPull the gridTextract tablesRead denominationscount x value per rowRows sum to the total?the written totalAsk about the sheetshow the cropmismatchWait for the other halfor chase it in the morningThe written total is a checksum. If the rows do not sum to it, the read is wrong, not the count.
Fig 2. Reading the count sheet. The written grand total is used as a checksum on the machine read, which catches almost every OCR error before it becomes a phantom variance.
  • Storage
  • Database
  • App integration
  • Machine learning
  • Management
  • Front-end & mobile
  • People

The written total as a checksum

This is the single most valuable trick in the design and it costs nothing. Every count sheet has a grand total written at the bottom by the person who counted. The machine read produces its own total from the denomination rows. If those two agree, the read is almost certainly right. If they disagree, something was misread — and crucially, the system now knows that before producing a variance.

Without it, a misread “3” in the twenties row as “8” produces a hundred-pound variance that looks exactly like a serious problem, and the first person to see it is a manager. With it, the same misread produces a question to the supervisor with the crop of the twenties row attached, and it is resolved in four seconds by the person who wrote it.

When only one half arrives

  • Count but no till report. Usually a POS export that failed to send. The shift is held as incomplete, and if the report has not arrived by the next morning’s opening the supervisor is asked for a photo of the printout. Nothing is computed from a half.
  • Till report but no count. Usually somebody forgot to photograph the sheet before going home. Held the same way, chased the same way, and never inferred — a count is the one number in this system that cannot be reconstructed.
  • Neither, on a day the till was open. The most important case, and the easiest to miss. The thresholds sheet knows which tills trade on which days; a trading day with no close at all is chased in the morning, because a missing close is a much bigger signal than any variance.
  • Two counts, one report. A recount. The second replaces the first as a draft, both photos are kept, and the fact that a recount happened is recorded — it is occasionally the interesting part.

Next: what the explainer does with the difference before anybody hears about it.

All posts