AWRA OpsHub Search
Cash drawer management

A till is not a number. It is a custody record with a person's name on it.

One counter, one float, one named cashier, a sealed period, and an amount of physical money that either matches or does not. Everything difficult about cash is contained in that last clause — and the only way to make the difference meaningful is for the expected figure to be computed from the sales that actually belonged to that session, rather than typed by whoever is closing up.

Why cash is different

Card and mobile money reconcile themselves. Cash is the only tender that can walk.

A card payment leaves a trail at the acquirer. A mobile money payment leaves one at the operator. Neither can quietly become three hundred and fifty shillings less on the way from a customer's hand to a safe. Cash can, and it does — through error far more often than through theft, which is exactly why the control has to be arithmetic rather than suspicion.

The failure is almost never a missing amount. It is a missing period: nobody can say which stretch of trading the money in the drawer was supposed to correspond to, who was standing at it, or what the float was when they started. Once those three facts exist, a variance is a small conversation. Without them it is unanswerable, so nobody asks, and the answer becomes “cash is always a bit out”.

Four moments

A drawer session has exactly four events, and each one names somebody.

There is no fifth. No editing the float after trading has started, no adjusting the expected figure to make the variance go away, no reopening a closed session to tidy the number. The shape is deliberately rigid, because a cash control with a back door is a cash control that gets used through the back door.

01 / OPEN

A float is counted into a named counter

Somebody selects the counter, counts the starting cash, and records it. The session is stamped with who opened it, the moment it opened, and the cashier it belongs to. A note can be attached — and your own custom fields, if your close-out procedure needs a shift label, a branch code or a supervisor initial.

counteropening_floatopened_atopened_bycashier_idnotes+ your custom fields
02 / TRADE

Sales attach themselves to the session

This is the part that has to be automatic. A cash payment taken at that counter, by that cashier, while that session is open, is bound to the session as it is recorded. Nobody assigns it afterwards, and nobody can reassign it — which is what makes the expected figure something other than an opinion.

pos_cash_session_id on the paymentcountercashierpayment_date within the session
03 / DROP

Money leaves the till mid-shift, on the record

A busy counter should not be holding a day of takings, so cash is periodically removed to a safe. Each drop records the amount, the moment, the person who made it, and a note. Every drop reduces what should be in the drawer at close — so a till holding less than the day's sales is explained rather than suspicious.

amountdropped_atdropped_bynote
04 / CLOSE

The cash is counted, and the difference is computed

The cashier counts what is physically there and enters that one figure. Everything else — the cash sales total, the drops total, the expected amount and the variance — is computed at that moment and frozen onto the session, so it cannot drift afterwards as new records arrive.

counted_cashexpected_cashcash_sales_totalcash_drops_totalvarianceclosed_atclosed_bynotes

One typed figure

Everything except the count is computed, and the subtraction is the interesting part.

A reconciliation where the expected amount is entered by hand is not a reconciliation — it is two numbers somebody chose. Here the expected figure is derived, and one detail in the derivation is worth calling out because most systems get it wrong.

+
Opening float Counted in at the start of the session and never editable afterwards.
5,000.00
+
Cash sales, net of change given The detail: a sale paid with a 1,000 note against an 850 total puts 850 in the drawer, not 1,000. So change due is deducted, and the result is capped at the sale total so an overpayment cannot inflate the figure. Refunds go through as negatives. Only payments with a method of cash count — card and mobile money are somebody else's reconciliation.
84,310.00
Cash drops to the safe The sum of every drop logged during the session, each with its own time, amount and named person.
60,000.00
=
Expected cash in the drawer Computed. Nobody types this, and nobody can adjust it.
29,310.00
Counted cash The one figure a person enters. The whole design exists so that this is the only input.
28,960.00
=
Variance Negative is short, positive is over. Both are worth a sentence in the notes; the note is stored on the session.
− 350.00

Every one of those figures is frozen onto the session at close. That matters more than it sounds: a variance computed live from a query would silently change as late payments, refunds or corrections landed afterwards, and a manager reviewing last Tuesday would see a different number from the one the cashier signed off. The close writes them down.

The awkward part, published on purpose

One open drawer per counter is the correct rule. It also has a sharp edge.

Two open sessions on one physical till would accumulate sales against two floats, and neither would reconcile. So a counter can hold exactly one open drawer. Combined with the rule that a sale must belong to your session, that produces a genuine trap at a shift change — and rather than pretend it does not exist, here it is, with the way out.

The dead end

14:00. The morning cashier has gone home without closing.

The arriving cashier tries to sell: refused, because there is no open session belonging to them. They try to open a drawer: refused, because the counter already has one. Two refusals, neither of which explains the other, and a queue forming.

> Cannot sell: no open cash drawer.
> Cannot open: this counter already has one.
> — and now what?

This is a real failure and it was ours. The rules were both correct; the messages were both useless, because neither named the holder or stated the exit.

How it reads now

The message names the holder and states the way out.

The refusal says who is holding the counter and what to do about it — count the cash and close that session — and it says explicitly that you can do this yourself from the cash drawers screen. Because that was always true: any user in the workspace may close a session, not only the cashier who opened it.

> This counter already has an open cash drawer
  held by A. Kimani. Count the cash and
  close that session before opening a new one —
  you can close it yourself from the cash
  drawers screen.

Which is the honest resolution: the constraint stays, because it is right, and the arriving cashier is told precisely how to satisfy it in one sentence rather than deducing it from two refusals.

It also means an abandoned drawer is closable by a supervisor with a physical count, so the variance lands on the session it belongs to rather than being absorbed into the next shift. That is the outcome that actually matters: a shift change should not silently merge two people's accountability.

The drawer register

Every session ever opened, filterable four ways.

One screen listing sessions newest first, with the computed snapshot on each row so the float, the sales, the drops, the expected figure and the variance are visible without opening anything. The filters are the four questions a manager actually asks.

By status

Open or closed. "Show me every drawer still open" is the first thing anybody wants at the end of a day, because an open drawer means the branch close is provisional.

By counter

One till at a time, across weeks. This is how a persistent problem at counter 3 becomes visible as a pattern rather than a run of individually forgivable small variances.

By cashier

One person's sessions. Used far more often to defend somebody than to accuse them — a cashier with forty clean closes and one bad one has a story that a single incident does not.

By date range

From and to, on the opening date. For a period review, a payroll query or an auditor asking about a specific fortnight.

Export
What it contains
Formats
All drawers, filtered

Every session matching the filters you have set, with its float, cash sales, drops, expected, counted and variance. The file for a period review or a request from an auditor.

CSVPDF
One drawer, in full

A single session with its arithmetic, its drops listed individually, and the cash sales that made up the total. The file you attach to an incident, or hand to the person whose count was short.

CSVPDF
On a schedule

Cash drawers is one of the eighteen datasets that can be posted on a timer — daily at 07:00 to whoever reviews yesterday, in your own timezone, with every delivery attempt recorded.

CSVPDFXLSX
Over the API

The same all-drawer and single-drawer exports are available to the API, gated on the same permissions, for a branch dashboard or a finance system that wants the figures without a person in the loop.

CSVPDF

Saved filters work here too, so “open drawers at the Kisumu branch” is a named chip above the list rather than four dropdowns you set every morning.

The straight answer

This is a cash custody record. It is not a cash management system.

Those are different products, and the second one involves safes, banking runs and denomination counts. Here is exactly where the line falls.

Cash drawer management — what is real

What AWRA OpsHub does today

  • A drawer session as a first-class record, bound to a counter and a cashier, with the opening float, the opening moment and the person who opened it.
  • Sales bound to the session automatically as they are recorded — the cash payment carries the session identifier, so nobody assigns takings to a shift afterwards and nobody can reassign them.
  • Only cash payments counted, so card and mobile money stay in their own reconciliations rather than inflating a drawer figure.
  • Change given deducted and the result capped at the sale total, so a 1,000 note against an 850 sale contributes 850 rather than 1,000, and refunds pass through as negatives.
  • Mid-shift cash drops with amount, time, person and note, each reducing what should be in the drawer at close.
  • Expected cash computed rather than typed, from float plus net cash sales minus drops.
  • One typed figure at close — the physical count — and the variance derived from it.
  • Every figure frozen onto the session at close, so a late payment or a correction cannot silently change a variance a cashier already signed off.
  • One open drawer per counter enforced, with a refusal message that names the current holder and states the way out.
  • Any user in the workspace may close a session, so an abandoned drawer can be counted and closed by a supervisor and the variance lands on the shift it belongs to.
  • A register of every session filterable by status, counter, cashier and date range, with the computed snapshot visible on each row.
  • All-drawer and single-drawer exports in CSV and PDF, on the web and over the API, gated on the same permissions.
  • Schedulable delivery — cash drawers is one of the eighteen datasets that can be emailed on a daily, weekly or monthly cadence.
  • Your own custom fields on a drawer session, for a shift label, a branch code or a supervisor initial your procedure requires.
  • Variance tolerance on the shift report, so a small rounding difference is not treated the same as a real shortfall.

More we can add to your workspace

  • Denomination-level counting at close — how many 1,000 notes, how many 100 coins — with the count sheet a cash office would recognise.
  • A safe and banking-run ledger, so a drop into the safe and a deposit out to the bank are two tracked stages rather than the drawer's exit being the end of the trail.
  • A blind close, where the cashier cannot see the expected figure before entering their count.
  • A variance approval workflow, so a shortfall above a threshold needs a supervisor sign-off before the session is treated as closed.
  • Float top-ups and change orders during a session, as their own recorded event rather than folded into the opening float.
  • Automatic variance alerting on close, notifying a manager the moment a session closes outside tolerance rather than at the next report.
  • Multi-currency drawers, holding and reconciling more than one currency in a single physical till.
  • A drawer handover between two cashiers mid-shift, closing one accountability and opening the next against the same counted cash without a full close and reopen.
  • Hardware drawer-kick integration, opening the physical till from the software at the point of a cash sale.

Where we point you to a specialist

  • We will not let anybody edit the expected figure or the float after trading has started. The whole value of a variance is that one side of the subtraction was not chosen by the person being measured. A system that lets the expected amount be adjusted has a variance field that always reads zero, and a manager who has learned to ignore it.
  • We will not allow two open drawers on one counter, even though it would remove an awkward shift-change moment. Two floats accumulating sales into one physical till cannot be reconciled at all, so the constraint stays and the message explains itself instead.
  • We will not silently roll an unclosed drawer into the next shift. An abandoned session is closed with a physical count, by whoever is there, and the variance lands on the shift that produced it. Merging two people's accountability to keep a queue moving is how cash controls become decorative.
  • We will not treat a variance as evidence of theft, and neither should your process. The overwhelming majority are miscounts, wrong change and unlogged drops. What the record gives you is a period, a name and a figure, so the conversation can be short and specific — not a verdict.
  • We will not describe this as cash management. There are no denomination counts, no safe ledger and no banking runs today. If your cash office needs those, say so and we will scope them honestly rather than let a demo imply them.

Denomination counting and a safe-to-bank ledger are the two items in that middle column that turn this from a till control into a cash office, and they are one design conversation rather than two builds — the hard part is your banking procedure, not the arithmetic. A blind close is the cheapest single improvement for anywhere with a real shrinkage concern. Tell us how your cash actually moves and we will come back with a written spec, a timeline and a price.

What changes

“Cash is always a bit out” stops being an acceptable sentence.

Not because people stop making mistakes, but because a mistake now has a shift, a name and a figure attached to it within a day. Small variances get explained while somebody still remembers the transaction, which is the only time they can be.

A variance means something

One side of the subtraction is computed, so the difference is not two chosen numbers.

Change given stops inflating takings

A 1,000 note against an 850 sale puts 850 in the drawer, and the arithmetic knows it.

A light till is explained

Every mid-shift drop is on the record with its amount, time and person.

Shifts stop merging

One drawer per counter, closable by anybody, so the variance lands on the shift that made it.

Patterns become visible

Filter by counter or cashier across weeks and a persistent problem stops looking like bad luck.

The figures do not drift

Everything is frozen at close, so last Tuesday reads the same today as it did then.

Frequently asked questions

What exactly is a cash drawer session?
A custody record for one till over one period. It is bound to a POS counter and a cashier, and it holds the opening float, when it opened and who opened it, then at close the counted cash, the computed expected cash, the cash sales total, the drops total, the variance, when it closed and who closed it. Notes can be attached at both ends, and your own custom fields can be added if your close-out procedure needs a shift label, a branch code or a supervisor initial.
How is expected cash calculated?
Opening float, plus cash sales net of change given, minus cash drops to the safe. Three details in that make the difference between a useful figure and a decorative one. Only payments whose method is cash are counted, so card and mobile money stay in their own reconciliations. Change due is deducted and the result is capped at the sale total, so a customer paying with a 1,000 note for an 850 sale contributes 850 rather than 1,000 and an overpayment cannot inflate the figure. And refunds pass through as negatives rather than being ignored.
Can somebody adjust the expected figure to make a variance disappear?
No. The float cannot be edited once trading has started, and the expected amount is computed rather than entered. The only figure a person types at close is the physical count. That is the entire design: the value of a variance is that one side of the subtraction was not chosen by the person being measured. A system that allows the expected amount to be adjusted has a variance field that always reads zero and a manager who has learned to ignore it.
How do sales get attributed to a drawer session?
Automatically, as they are recorded. A cash payment taken at that counter, by that cashier, while that session is open, carries the session identifier on the payment itself. Nobody assigns takings to a shift afterwards, and nobody can reassign them. That is what makes the expected figure something other than an opinion formed at close of business.
What happens at a shift change if the previous cashier did not close their drawer?
A counter can hold only one open drawer — two floats accumulating sales into one physical till could never be reconciled — and a sale must belong to your own session. Together those rules once produced a genuine dead end: the arriving cashier could not sell and could not open, with neither refusal explaining the other. The refusal now names the person holding the counter and states the way out in one sentence, including that you can close it yourself from the cash drawers screen. That was always true: any user in the workspace may close a session, not only the cashier who opened it. So a supervisor counts the abandoned drawer, closes it, and the variance lands on the shift that produced it rather than being absorbed into the next one.
Why record cash drops separately?
Because a busy counter should not be holding a whole day of takings, and a till holding less than the day's sales needs to be explained rather than investigated. Each drop records the amount, the moment, the person who made it and a note, and every drop reduces what should be in the drawer at close. Without them, the only two options at close are a drawer stuffed with cash or an unexplained shortfall.
Do the figures change after a session is closed?
No, and this is deliberate. Every figure — cash sales, drops, expected, counted, variance — is written onto the session at close rather than recomputed on each view. A variance calculated live from a query would silently change as late payments, refunds or corrections arrived afterwards, so a manager reviewing last Tuesday would see a different number from the one the cashier signed off. The close writes them down.
Can drawer data be exported or emailed automatically?
Yes, four ways. Every session matching your current filters exports to CSV or PDF; a single session exports in full, with its drops listed individually and the cash sales that made up the total, for attaching to an incident or handing to the person whose count was short. The same two exports are available over the API on the same permissions. And cash drawers is one of the eighteen schedulable datasets, so the register can be posted daily, weekly or monthly to whoever reviews it, in your own timezone, with every delivery attempt recorded.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center