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.
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.
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.
“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.
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.
Demo booking
Book a focused AWRA demo
Share a few details so we can send the confirmation email and route your request to the right AWRA team.
1
Request received AWRA has your demo context and contact details.
2
Check your email We send confirmation and follow-up from the AWRA team.
3
Book calendar slot Pick a time for a focused workflow walkthrough.
We use necessary cookies for secure sessions. With your permission, we also use cookies and browser storage for preferences, analytics, and demo engagement. Privacy Policy
AWRA OpsHub
Cookie settings
Cookie Consent Manager
Necessary cookies stay on for login, CSRF protection, and security. You can choose the optional categories below.
Overview
General Information
AWRA uses cookies and browser storage to keep public pages secure, remember selected preferences, measure website performance, and manage demo engagement prompts.
You can choose whether functional and marketing engagement storage apply. Analytics measurement is always active in this AWRA setup.
These settings apply to AWRA public website experiences such as the homepage, feature pages, pricing calculator, blog, help center, and request-demo page. Authenticated dashboard and vendor portal sessions still rely on required security cookies.
Required
Always active
Functional
Optional
Analytics
Always active
Marketing
Optional
For more context on privacy handling, open the Privacy Policy.
Required Cookies
Required Cookies
Always Active
Required cookies and storage support basic website delivery, secure sessions, request protection, and remembering the consent choice itself.
These cannot be switched off from this manager because disabling them would break login/session behavior, form protection, or the ability to remember the privacy choice you save.
Cookie details
Session security: keeps secure server sessions working while browsing AWRA.
CSRF protection: helps verify form submissions and protect requests.
Consent record: stores the preference decision so the banner does not keep asking after a choice is saved.
Examples: Laravel session cookies, CSRF tokens, and the AWRA consent preference record.
Duration: session security can expire with the browser/session; saved consent can last longer so the same browser remembers the choice.
Functional Cookies
Functional Cookies
Functional storage improves the public website experience by remembering interface choices, helper states, dismissed notices, and short-lived interaction preferences.
Turning this off does not stop secure required cookies or analytics. It only limits optional convenience memory.
If disabled, AWRA may show some helper prompts again or forget non-essential display choices. Core public pages, contact forms, and request-demo forms still work.
Cookie details
UI preferences: remembered display choices and helper states where available.
Dismissed notices: session-level or preference-level memory for notices the visitor has closed.
Frequency helpers: optional browser storage that prevents repeated prompts when allowed.
Examples: localStorage or sessionStorage values for dismissed banners, guide/helper states, and lightweight public-page preferences.
Effect when off: AWRA avoids optional convenience memory unless it is also allowed through marketing and engagement preferences.
Analytics Cookies
Analytics Cookies
Always Active
Analytics helps AWRA understand public page performance, traffic patterns, and content usefulness so we can improve the marketing website.
This category does not by itself enable demo popups, exit-intent prompts, or advertising pixels. Those are controlled by Marketing & engagement.
In this AWRA setup, Google Analytics and Google Tag Manager measurement are treated as mandatory website measurement and remain active.
Cookie details
Google Analytics / GTM: measures aggregate traffic and page activity.
Performance insight: helps identify which public pages, docs, and demo paths visitors use.
Operational signal: supports website quality decisions without enabling demo popups by itself.
Examples: Google measurement identifiers such as GA/GTM tags and related browser identifiers set by Google scripts.
Use: page views, source/referrer trends, public content performance, and product education page effectiveness.
Marketing & engagement
Marketing & engagement
Marketing and engagement storage supports demo prompts, exit-intent prompts, campaign attribution, and future advertising pixels.
When disabled, AWRA will not auto-open demo or exit-intent popups. CTA buttons can still open a form because that is a direct visitor action.
When enabled, AWRA can remember that a visitor already saw, dismissed, or submitted a demo prompt so the same popup is not repeated aggressively.
Cookie details
Demo prompt memory: tracks whether an auto prompt or exit prompt was recently dismissed.
Demo submission memory: avoids asking again after a visitor submits a demo request.
Campaign context: keeps source page, referrer, and UTM context available for demo requests.
Examples: popup frequency caps, demo-submitted flags, engagement source fields, and UTM/referrer context.
Effect when off: auto demo prompts and exit-intent prompts stay blocked; normal navigation and manually clicked CTA buttons still work.