A till is a teller's individual cash drawer for the duration of a shift. Every shilling that flows through the front-counter passes through exactly one till and is logged denomination-by-denomination so that close-of-day balancing is provable to the cent.
Tills — one row per teller per shift.
Till and till session
Two records are involved. The **till** (`mfi.cash.till`) is a permanent record — Till 01 at Kawangware branch — with a GL account, a maximum float, and an assigned teller pool. The **till session** (`mfi.cash.till.session`) is created every time a teller opens that till; it carries the running balance, the denomination ledger, and every transaction for that shift. Closing a till session writes a journal entry from the till GL account to a transit/clearing account; opening a new session brings the float back from the vault.
Note — One teller can hold only one open till session at a time. A till can be reused by different tellers across shifts but never overlapping.
Lifecycle
**Open** — teller scans badge + PIN at the till. System pulls the assigned float (default KES 50,000) from the vault and credits the till session.
**Float check** — teller counts cash in drawer, enters denomination breakdown, system compares to expected. Mismatch on open blocks the session.
**Active** — every customer-facing transaction (deposit, withdrawal, disbursement, repayment, fee) updates the running balance.
**Sweep** — when balance breaches policy maximum, supervisor moves excess to vault. Logged as till → vault transfer.
**Lock** — teller stepping away locks the drawer; balance is frozen, badge required to unlock.
**Pre-close count** — teller declares denomination breakdown at close.
**Reconcile** — system computes declared vs expected; variance ≠ 0 triggers incident workflow.
**Close** — once reconciled (or variance accepted), session closes and cash returns to vault.
Denomination ledger
Kenyan currency in circulation is KES 1,000 / 500 / 200 / 100 / 50 notes and KES 40 / 20 / 10 / 5 / 1 coins. The till tracks each denomination count separately. This is not cosmetic — it's how you detect mistakes versus theft.
Default opening float total: KES 50,000. The denomination editor on the till session form recalculates the total live as you type.
Denomination
Type
Common float allocation
KES 1,000
Note
30 (= KES 30,000)
KES 500
Note
20 (= KES 10,000)
KES 200
Note
25 (= KES 5,000)
KES 100
Note
30 (= KES 3,000)
KES 50
Note
20 (= KES 1,000)
KES 40
Coin
10 (= KES 400)
KES 20
Coin
20 (= KES 400)
KES 10
Coin
10 (= KES 100)
KES 5
Coin
10 (= KES 50)
KES 1
Coin
50 (= KES 50)
Note — If your branch operates a coin-light policy (most urban branches do), set the policy to skip coin denominations and round to KES 50 — the float comes out cleaner.
Who can do what
Action
Teller
Supervisor
Branch manager
Open own session
Yes
Yes (own)
Yes (own)
Open someone else's till
No
Yes (cover)
Yes (cover)
Sweep till → vault
No (request)
Yes
Yes
Force-close someone else's session
No
No
Yes (with reason)
Override hard maximum on transaction
No
No
Yes (logged)
Accept variance ≤ KES 5,000
No
Yes
Yes
Accept variance > KES 5,000
No
No
Yes if ≤ KES 50,000; else escalate
Journal entries posted
Each till transaction generates an accounting journal entry against pre-configured GL accounts.
Event
Dr
Cr
Notes
Float draw (vault → till)
Till cash (GL)
Vault cash (GL)
On open
Customer cash deposit (savings)
Till cash
Member savings liability
Per product config
Customer cash withdrawal
Member savings liability
Till cash
Per product config
Loan disbursement in cash
Loan principal asset
Till cash
Per loan product
Loan repayment in cash
Till cash
Loan receivable / interest income
Allocator splits per schedule
Sweep till → vault
Vault cash
Till cash
Mid-day or pre-close
End-of-shift return
Vault cash
Till cash
Closes the till session
Shortage accepted ≤ cap
Cash shortage expense
Till cash
Creates incident anyway
Overage accepted ≤ cap
Till cash
Cash overage income
Creates incident anyway
Worked scenarios
Scenario — Mary works a normal teller shift
Setting: Kawangware branch, mid-week. Mary is Senior Teller, opens Till 01.
Character
Role
Mary Mutua
Senior teller
Peter Otieno
Supervisor
Jane Wambui
Member depositing
Kimani Mwangi
Member repaying loan
Timeline
07:55: Mary taps badge at Till 01 terminal. Peter co-authorises the float draw from vault. (Till session #41 opened, float KES 50,000)
07:57: Mary counts the float in front of Peter. Matches. (Float verified, session ACTIVE)
08:12: Jane deposits KES 8,000 in 4 × 2,000-equivalent (4 × KES 1,000 × 2). Mary enters denomination breakdown. (Till balance KES 58,000)
10:30: Kimani repays KES 22,500 — KES 22 × KES 1,000 + KES 5 × KES 100. Mary enters split. (Till balance KES 80,500)
12:00: Mary locks till for lunch. (Session LOCKED)
13:00: Mary unlocks with badge. (Session ACTIVE)
15:45: After heavy afternoon repayments till balance hits KES 215,000. System soft-warns Mary and pages Peter. (Operating max breach)
15:50: Peter sweeps KES 150,000 to vault. Till now KES 65,000. (Till → Vault transfer logged)
17:00: Counter closes to public. (Branch in close mode)
17:08: Mary declares closing denomination breakdown. Total declared KES 71,300; expected KES 71,300. Variance 0. (Reconciled clean)
17:12: Cash returned to vault. Till session closed. (Till session CLOSED)
Outcome — Clean session; ~KES 145,000 in customer-facing throughput; zero variance.
Reference
Till session states
State
Meaning
Set by
draft
Created but float not yet pulled
System on open request
awaiting_count
Float pulled, awaiting opening count
System on float transfer
active
Open for customer transactions
Teller on float verify
locked
Drawer temporarily locked, no transactions
Teller on lock
pre_close
Counter closed, teller counting
Teller on close request
reconciling
Variance found, awaiting decision
System on variance
closed_clean
Closed with zero variance
System on reconcile
closed_with_variance
Closed after variance accepted
System on variance accept
force_closed
Closed by manager override
Branch manager
Key fields on till session
Field
Type
Notes
session_no
Char
Auto-allocated
till_id
M2O mfi.cash.till
Permanent till record
teller_id
M2O res.users
The teller for this shift
open_date
Datetime
When float was drawn
close_date
Datetime
When session was closed
opening_balance
Monetary
Float drawn
closing_balance_expected
Monetary computed
Opening + ins − outs
closing_balance_declared
Monetary
Teller's count at close
variance
Monetary computed
Declared − expected
denomination_line_ids
O2M
Denomination ledger lines
transaction_ids
O2M account.move
All journals against till
incident_id
M2O mfi.cash.incident
Set if variance ≠ 0
Troubleshooting
Symptom
Likely cause
Fix
Teller cannot lock till — 'pending transaction' warning
Customer transaction in mid-flight (e.g. receipt printing) holding a database lock
Wait 30 seconds for the transaction to complete or roll back. If still stuck, branch manager can force-unlock from the till session form.
Denomination breakdown total does not match cash count
Coin denomination skipped (e.g. KES 40 coins not entered)
Open the denomination editor, enable 'Show coins', recount and enter all denominations.
Float draw fails — vault rejected
Vault not yet opened by supervisor, or vault below configured minimum reserve
Supervisor opens the vault session first (dual control). If reserve is the issue, request CIT top-up before opening the branch.
Variance shows even after careful recount
A repayment was posted to a different till in error, or a void did not reverse the cash leg
Run the Till Movement Report filtered by date and till. Look for transactions that should not be there. Reverse via the original posting wizard, not by manual journal.
Till session shows transactions from yesterday
Previous session was never properly closed (force-closed in panic at EOD)
Branch manager opens the orphan session, runs Pre-close → Reconcile → Close on the old session, then teller can open a fresh session.