Vaults

The vault is the branch's secured cash store. It opens only under dual control, every movement leaves a paired audit entry, and it holds the operating cash that funds the day's tills.

Cash policies
Per-till float min/max + vault movement rules.

What a vault is in the system

Each branch has exactly one logical vault record (`mfi.cash.vault`). It is linked to a GL cash account, an overnight maximum (default KES 5M), a minimum reserve (default KES 200k), and two or more registered key-holders (typically branch manager + supervisor). A vault is not a till — it never transacts with members directly. It only moves cash to and from tills, to and from CIT bags, and (rarely) accepts emergency direct deposits from a head-of-treasury authorised top-up.

Note — Even single-room rural branches with a strongbox rather than a true vault still require a vault record — the controls do not depend on physical infrastructure.

Dual control mechanics

Opening the vault requires two distinct user ids registered as key-holders, swiping within a 120-second window. Both badge events are recorded against the vault session. Movements within an open vault session do not require a second swipe per movement — the session itself is the control. Closing the vault similarly requires both key-holders.

  • **Co-holders rule** — the two key-holders must be different physical individuals. The system blocks if both swipes resolve to the same user id (e.g. someone using a borrowed badge).
  • **Window** — 120 seconds default. After window expires, both must swipe again.
  • **Escalation** — if a primary key-holder is unavailable, the regional manager can be added as a temporary co-holder with a written authorisation.
  • **Audit** — every open and close generates a `mail.message` on the vault session record. Internal audit reviews these monthly.
Warning — Never share badges. The system logs IP, terminal, and timestamp on every swipe. Sharing badges is a level-3 incident automatically; CBK examiners ask for the dual-control audit on every inspection.

Movement types

Every movement updates the denomination ledger (not just the total). This is critical for forensic work: a KES 1,000 shortage paired with a KES 1,000 overage in coins is usually a counting error, but pure-note shortages without offset usually indicate fraud.

TypeFromToTrigger
Till floatVaultTillTeller opens session
Till returnTillVaultTeller closes session
Mid-day sweep inTillVaultTill exceeds operating max
Mid-day sweep outVaultTillTill below minimum for known transaction
CIT outboundVaultCIT bagSealed for pickup
CIT inboundCIT bagVaultBag arrived and broken
Inter-branchVault (A)Vault (B)Authorised by regional manager
Emergency injectionExternal (HO)VaultTreasury top-up
AdjustmentVaultResolves variance, requires incident

Vault denomination ledger

The vault keeps a running denomination ledger. When a teller pulls a KES 50,000 float as 30 × 1,000 + 20 × 500 + 25 × 200 + 30 × 100 + 20 × 50, every one of those counts decrements the vault ledger simultaneously. When you reconcile at close-of-day, the system compares physical count against this ledger denomination-by-denomination.

Overnight holding rules

The vault overnight maximum is the most-watched control by both internal audit and insurance underwriters.

  • **Default maximum** — KES 5,000,000 per branch (urban) or KES 2,000,000 (rural); set per branch in cash policy
  • **Breach** — branch session cannot close. Branch manager can override with regional manager email approval; both events are logged.
  • **Insurance coupling** — the insurance policy you hold against cash-in-vault has its own limit. If you breach insurance limit, recovery is capped at the policy regardless of actual loss. Treasury should reconcile policy limit and system overnight max quarterly.
  • **Carry-forward** — if cash arrives late from CIT (after vault close), it is held in 'sealed bag' status overnight and brought into vault next morning. This counts toward overnight maximum.
Warning — If your overnight max is set above your insurance limit, fix that today. We have seen MFIs lose KES 8M in a robbery and recover KES 5M because the policy was capped — the gap is uninsured operating loss.

Minimum reserve

The vault minimum reserve (default KES 200k) prevents the branch from running dry between CIT replenishments. When vault falls below minimum, the system blocks new outgoing CIT outbound trips and pages the regional treasury team to schedule a top-up. It does not block till floats from being drawn (operations must continue), but each draw decrements toward zero and the alert escalates.

Reconciliation routine

  1. Branch manager triggers Vault Count from the vault session form (typically once per day at branch close, plus surprise counts at random intervals).
  2. Two key-holders physically count the vault denomination-by-denomination.
  3. Both enter their counts independently into the count wizard.
  4. System compares both counts to each other and to the ledger.
  5. If both counts match each other and the ledger: vault session reconciled clean.
  6. If both counts match each other but differ from ledger: incident raised (variance with single source).
  7. If the two counts differ: re-count required (this is usually a coin-counting error).

Worked scenarios

Scenario — Vault open and float allocation, Karen branch

Setting: Karen branch, 07:30. Florence and Peter arrive together as the registered key-holders.

CharacterRole
Florence AchiengBranch manager (key-holder 1)
Peter OtienoSupervisor (key-holder 2)
Mary MutuaTeller waiting for float
Kimani MwangiTeller waiting for float

Timeline

  1. 07:30: Florence and Peter arrive together. Both swipe within 40 seconds. (Vault session opens, dual control verified)
  2. 07:32: Both physically inspect the vault — seals on the overnight bag intact. (Visual inspection logged)
  3. 07:35: They count the overnight bag together: KES 620,000. Matches the closing balance from yesterday evening's branch session. (Opening count verified KES 620,000)
  4. 07:50: Mary requests float for Till 01. Florence authorises the movement. (Vault → Till transfer KES 50,000)
  5. 07:55: Kimani requests float for Till 02. Authorised. (Vault balance KES 520,000)
  6. 11:50: Aisha (Till 03) needs additional KES 100,000 mid-morning to cover a large group disbursement. (Vault → Till transfer KES 100,000)
  7. 15:45: Mid-day sweep from Mary's till brings KES 150,000 back to the vault. (Till → Vault movement)
  8. 17:30: All till float returns complete. Vault count: KES 540,000. (Closing count KES 540,000)
  9. 17:42: Florence and Peter both swipe to close the vault session. (Vault session CLOSED)

Outcome — Clean vault session; ledger matches physical count; KES 540,000 overnight (well below KES 5M max).

Reference

Vault master fields

FieldTypeNotes
nameChare.g. 'Kawangware Vault'
branch_idM2O res.branch1:1
gl_account_idM2O account.accountCash GL
overnight_maxMonetaryPer policy
minimum_reserveMonetaryTriggers replenishment
key_holder_idsM2M res.usersTwo or more required
insurance_policy_noCharFor recovery
insurance_limitMonetaryRecovery cap
physical_locationCharFor audit
last_count_dateDatetimeFor overdue alerts

Vault session states

StateMeaning
draftCreated, awaiting first swipe
openBoth key-holders verified, ready for movements
pending_closeClose requested, awaiting count
reconcilingCount complete, variance under investigation
closed_cleanReconciled, zero variance
closed_with_varianceReconciled, variance accepted with incident

Troubleshooting

SymptomLikely causeFix
Cannot open vault — 'second key-holder required'Only one badge swipe within windowSecond key-holder swipes within 120 seconds. If unavailable, regional manager can be added as temporary co-holder via the Authorisation panel.
Vault movement rejected because 'denomination ledger inconsistent'A previous movement did not record denomination breakdown (e.g. import or manual adjustment)Run the vault recount wizard, accept the current physical count as the new baseline, raise a variance incident to document the reset.
Insurance limit alert fires every morningOvernight max is set above insurance limitLower the overnight max in cash policy to match the insurance limit, or escalate to head of treasury to renegotiate cover.
Minimum reserve breached but no CIT scheduledCIT route paused or carrier holidayHead of treasury arranges emergency CIT or inter-branch transfer; in extremis, branch operates on reduced hours.
Surprise count shows variance after a clean vault session yesterdayLikely overnight access; check entry logs and CCTV before assuming counting errorRaise an immediate level-3 incident. Do not transact until cause is identified. Follow the robbery/tamper procedure even if you don't yet have evidence of a break-in.

See also

Was this page helpful?