Tills

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
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

  1. **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.
  2. **Float check** — teller counts cash in drawer, enters denomination breakdown, system compares to expected. Mismatch on open blocks the session.
  3. **Active** — every customer-facing transaction (deposit, withdrawal, disbursement, repayment, fee) updates the running balance.
  4. **Sweep** — when balance breaches policy maximum, supervisor moves excess to vault. Logged as till → vault transfer.
  5. **Lock** — teller stepping away locks the drawer; balance is frozen, badge required to unlock.
  6. **Pre-close count** — teller declares denomination breakdown at close.
  7. **Reconcile** — system computes declared vs expected; variance ≠ 0 triggers incident workflow.
  8. **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.

DenominationTypeCommon float allocation
KES 1,000Note30 (= KES 30,000)
KES 500Note20 (= KES 10,000)
KES 200Note25 (= KES 5,000)
KES 100Note30 (= KES 3,000)
KES 50Note20 (= KES 1,000)
KES 40Coin10 (= KES 400)
KES 20Coin20 (= KES 400)
KES 10Coin10 (= KES 100)
KES 5Coin10 (= KES 50)
KES 1Coin50 (= 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

ActionTellerSupervisorBranch manager
Open own sessionYesYes (own)Yes (own)
Open someone else's tillNoYes (cover)Yes (cover)
Sweep till → vaultNo (request)YesYes
Force-close someone else's sessionNoNoYes (with reason)
Override hard maximum on transactionNoNoYes (logged)
Accept variance ≤ KES 5,000NoYesYes
Accept variance > KES 5,000NoNoYes if ≤ KES 50,000; else escalate

Journal entries posted

Each till transaction generates an accounting journal entry against pre-configured GL accounts.

EventDrCrNotes
Float draw (vault → till)Till cash (GL)Vault cash (GL)On open
Customer cash deposit (savings)Till cashMember savings liabilityPer product config
Customer cash withdrawalMember savings liabilityTill cashPer product config
Loan disbursement in cashLoan principal assetTill cashPer loan product
Loan repayment in cashTill cashLoan receivable / interest incomeAllocator splits per schedule
Sweep till → vaultVault cashTill cashMid-day or pre-close
End-of-shift returnVault cashTill cashCloses the till session
Shortage accepted ≤ capCash shortage expenseTill cashCreates incident anyway
Overage accepted ≤ capTill cashCash overage incomeCreates incident anyway

Worked scenarios

Scenario — Mary works a normal teller shift

Setting: Kawangware branch, mid-week. Mary is Senior Teller, opens Till 01.

CharacterRole
Mary MutuaSenior teller
Peter OtienoSupervisor
Jane WambuiMember depositing
Kimani MwangiMember repaying loan

Timeline

  1. 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)
  2. 07:57: Mary counts the float in front of Peter. Matches. (Float verified, session ACTIVE)
  3. 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)
  4. 10:30: Kimani repays KES 22,500 — KES 22 × KES 1,000 + KES 5 × KES 100. Mary enters split. (Till balance KES 80,500)
  5. 12:00: Mary locks till for lunch. (Session LOCKED)
  6. 13:00: Mary unlocks with badge. (Session ACTIVE)
  7. 15:45: After heavy afternoon repayments till balance hits KES 215,000. System soft-warns Mary and pages Peter. (Operating max breach)
  8. 15:50: Peter sweeps KES 150,000 to vault. Till now KES 65,000. (Till → Vault transfer logged)
  9. 17:00: Counter closes to public. (Branch in close mode)
  10. 17:08: Mary declares closing denomination breakdown. Total declared KES 71,300; expected KES 71,300. Variance 0. (Reconciled clean)
  11. 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

StateMeaningSet by
draftCreated but float not yet pulledSystem on open request
awaiting_countFloat pulled, awaiting opening countSystem on float transfer
activeOpen for customer transactionsTeller on float verify
lockedDrawer temporarily locked, no transactionsTeller on lock
pre_closeCounter closed, teller countingTeller on close request
reconcilingVariance found, awaiting decisionSystem on variance
closed_cleanClosed with zero varianceSystem on reconcile
closed_with_varianceClosed after variance acceptedSystem on variance accept
force_closedClosed by manager overrideBranch manager

Key fields on till session

FieldTypeNotes
session_noCharAuto-allocated
till_idM2O mfi.cash.tillPermanent till record
teller_idM2O res.usersThe teller for this shift
open_dateDatetimeWhen float was drawn
close_dateDatetimeWhen session was closed
opening_balanceMonetaryFloat drawn
closing_balance_expectedMonetary computedOpening + ins − outs
closing_balance_declaredMonetaryTeller's count at close
varianceMonetary computedDeclared − expected
denomination_line_idsO2MDenomination ledger lines
transaction_idsO2M account.moveAll journals against till
incident_idM2O mfi.cash.incidentSet if variance ≠ 0

Troubleshooting

SymptomLikely causeFix
Teller cannot lock till — 'pending transaction' warningCustomer transaction in mid-flight (e.g. receipt printing) holding a database lockWait 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 countCoin 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 rejectedVault not yet opened by supervisor, or vault below configured minimum reserveSupervisor 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 recountA repayment was posted to a different till in error, or a void did not reverse the cash legRun 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 yesterdayPrevious 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.

See also

Was this page helpful?