Branch session

A branch session is the umbrella record for a single trading day at a single branch. Open it in the morning before tellers can transact, close it in the evening only after every till and the vault are reconciled. It is the unit of cash GL cut-off.

Branch tills
Branch end-of-day — every open till must close before EOD.

What a branch session represents

The branch session (`mfi.branch.session`) is created once per branch per trading day. It links the day's vault session and all till sessions, holds the open / close timestamps, and posts the closing GL cut-off journal that locks the day's cash position. Without an open branch session, no till can open and no cash transaction can post.

Note — Branch session is not the same as the financial period. The period is monthly and runs across all branches; the branch session is one day at one branch. The day's cash journals all roll up into the monthly period.

Opening the branch

  1. Branch manager (or delegated supervisor) opens the day from MFI → Cash → Branch Session → New.
  2. System checks: previous day's session is closed; if not, blocked.
  3. System checks: no orphan till sessions; if any, blocked.
  4. Manager confirms opening cash declared (matches yesterday's closing).
  5. System opens a vault session for the day (still requires dual-control swipes).
  6. Branch session is now OPEN; tellers can request till float draws.
  7. Public opens to customers when first till is active.

During the day

While the branch session is open, the system tracks live aggregates: total cash-in, total cash-out, count of till sessions opened, mid-day sweeps, current vault and till balances, pending incidents. The branch manager can pull a snapshot at any time from the session form.

  • Live position rolls up till + vault denomination ledger
  • All till sessions and the vault session are children of the branch session
  • Cash policy is resolved at session open and frozen for the day — a policy change mid-day applies tomorrow

Closing the branch

  1. Public counter closes at advertised time (typically 17:00).
  2. Tellers run their till close (denomination count, reconcile, variance handling).
  3. After every till session is closed_clean or closed_with_variance, vault is counted.
  4. Vault session closes (dual control).
  5. Branch manager runs the End-of-Day wizard from the branch session.
  6. Wizard validates: no open till sessions, no open variance incidents above branch cap, vault overnight balance within policy.
  7. If overnight balance breaches max: requires regional override or CIT off-load.
  8. Manager signs off electronically.
  9. System posts cash GL cut-off journal: closes each cash account at its closing balance.
  10. Branch session moves to CLOSED state.

GL cut-off mechanics

At branch close, the system posts a cut-off journal that:

  • Closes every till GL account back to zero (because cash returned to vault)
  • Confirms vault GL account balance equals physical vault count
  • Triggers M-Pesa / bank account reconciliation snapshots
  • Stamps the period such that subsequent retro-postings to today are blocked at this branch (requires reopen authorisation)
Warning — If you reopen a closed branch session to backdate a transaction, every downstream report — daily summary, ageing, IFRS 9 staging, regulator returns — must be recomputed. Always prefer next-day correction journals over backdated reopens.

Exception: branch did not open

If a branch did not open (public holiday, security alert, manager unavailable), no branch session is created and no daily cut-off is posted for that branch. The next-day session opens against the carry-forward vault count from the last open day.

HQ / Treasury session

HQ Treasury runs its own daily session for the central vault. It follows the same controls but with elevated authoriser caps and an additional CIT-summary section showing all in-transit trips that touched HQ today.

Worked scenarios

Scenario — Closing Karen branch after a busy month-end Friday

Setting: Karen branch, last Friday of the month. Heavy disbursement day.

CharacterRole
Florence AchiengBranch manager
Peter OtienoSupervisor
Aisha HassanRegional manager

Timeline

  1. 16:55: Florence locks the public door. Three tellers begin individual till close. (Branch session still OPEN)
  2. 17:20: Tellers complete clean closes. One had a KES 150 shortage — accepted at supervisor cap with incident. (All till sessions CLOSED)
  3. 17:25: Florence and Peter run vault count. Total KES 6,200,000. Above KES 5M overnight max because of month-end disbursements queued for Monday. (Vault overnight max breach)
  4. 17:28: Florence calls Aisha for regional override. (—)
  5. 17:32: Aisha logs in remotely, reviews context, electronically authorises overnight excess up to KES 7M for tonight only. Insurance underwriter cc'd by automation. (Override granted, branch can close)
  6. 17:35: Florence runs the EOD wizard. All checks pass with the override. (EOD WIZARD PASSED)
  7. 17:36: Florence signs off. System posts cut-off journal. (Branch session CLOSED)
  8. 17:38: Aisha schedules an emergency Saturday CIT pickup for Monday's disbursement pre-funding. (CIT trip scheduled)

Outcome — Branch closed legally with documented regional override; emergency CIT scheduled; incident on KES 150 shortage stays open for officer follow-up.

Reference

Branch session states

StateMeaning
draftCreated but vault not yet open
openVault open, tills can transact
closingEOD wizard in progress
closed_cleanClosed within all policy limits
closed_with_overrideClosed via documented override
reopenedReopened after close for correction (requires authorisation)

EOD wizard checks

CheckBlock / WarnBypass authoriser
All till sessions closedBlockBranch manager (force close)
No open level-3 incidentsBlockRegional manager
No open level-2 incidents > KES 50kBlockRegional manager
Vault overnight within policyBlockRegional manager
Insurance cap not breachedWarnHead of treasury
Pending CIT outbound completed or rolledWarnBranch manager
KRA ETIMS submissions in syncWarnBranch manager

Troubleshooting

SymptomLikely causeFix
Cannot open today's branch session — 'previous day not closed'Yesterday's session was never finalisedOpen yesterday's session, run the EOD wizard with the actual yesterday-evening counts, sign off, then today opens.
EOD wizard blocked by an incident the branch resolved on paperIncident record not updated to closedOpen the incident, complete the close-out fields, attach the resolution document, sign off. EOD then proceeds.
Cut-off journal posted to wrong periodBranch system clock skewVerify branch server NTP is in sync. Re-post the cut-off journal manually to correct period; document via change ticket.
Reopened session cannot be re-closed — 'fields changed'Cash policy was updated between original close and reopenRestore the original policy version at the session, re-run the EOD checks, close. Then revert policy.
Branch session shows different total than the Treasury dashboardDashboard cache out of sync; usually 60-second lagTrigger a manual sync from Treasury → Refresh, or wait for the next minute. If persistent, check the cash_dashboard cron.

See also

Was this page helpful?