Cash-in-transit (CIT)

Cash-in-transit (CIT) covers every physical movement of cash between two of our locations, or between us and a bank. The system enforces sealed-bag tracking from origin to destination so that liability is clear at every leg.

Cash incidents
Cash-in-transit incidents with state.

Trip, manifest, bag

A **CIT trip** (`mfi.cash.cit`) is the movement order. It has an origin, a destination, a carrier, a route, a scheduled date, and one or more **bags** (`mfi.cash.cit.bag`) attached. Each bag carries a seal number, a declared value, and a denomination breakdown. The **manifest** is the printable document the carrier signs at pickup.

  • **Origin** — vault, till, or HQ treasury
  • **Destination** — vault, bank account, or HQ treasury
  • **Carrier** — registered CIT provider (Wells Fargo, G4S, KK Security, or self-transport for short legs)
  • **Route** — pre-defined or ad-hoc; routes have a liability cap and an expected duration
  • **Bag** — physical sealed bag, one per logical batch; seal number unique per institution

Trip lifecycle

  1. **Draft** — branch (or HQ) creates trip, attaches bags, prints manifest
  2. **Approved** — branch manager and treasury approve (for trips above KES 2M)
  3. **Ready** — bags physically prepared, seals fitted, manifest ready
  4. **Picked up** — carrier signs manifest at origin
  5. **In transit** — bag with carrier, GPS tracked if available
  6. **Received** — carrier signs over at destination, recipient verifies seal number against manifest
  7. **Reconciled** — destination breaks bag, counts contents, matches declared value
  8. **Closed clean** — variance = 0 at destination
  9. **Closed with variance** — variance triggers incident; carrier may be liable

Carriers and liability

Each CIT carrier is configured with:

If a planned trip exceeds the carrier's per-bag or per-route liability cap, the system either:

  • **Splits** the trip across multiple bags (if per-bag cap is the constraint)
  • **Splits** the trip across multiple carriers (if per-route cap is the constraint)
  • **Blocks** the trip with a treasury escalation
FieldDescription
nameCarrier brand
liability_cap_per_bagInsurance cap per individual bag
liability_cap_per_routeAggregate cap per single trip
insurance_policy_noFor claim filing
api_endpointIf carrier offers tracking API (e.g. Wells Fargo)
default_routesPre-defined route templates

Seal numbers

Seals are tamper-evident tags physically fitted to each bag. Each MFI maintains a roll of pre-numbered seals procured from the carrier. The system tracks seal lifecycle from issue → fitted → broken.

Warning — Treat seal rolls like cheque-books. Issued seals are signed out to branches with a goods-received voucher. Lost or stolen seal blocks must be reported to all carriers within 24 hours.

Pickup and handover

At pickup, the carrier's crew chief signs the manifest (paper + electronic). The system captures:

Once handover is signed, the trip moves to In Transit and the bag balance leaves the vault GL.

  • Pickup timestamp
  • Carrier crew chief id
  • Branch handover officer id (must be branch manager or supervisor)
  • Bag seal numbers verified against bag records
  • Photograph of sealed bags (mobile capture)
  • Vehicle registration

Receipt at destination

At destination, the receiving party (another branch's manager, the bank's cash desk, or HQ treasury):

  1. Verifies seal numbers against manifest before accepting
  2. Refuses to accept if any seal is tampered or numbers don't match — bag returns to carrier and an incident is raised
  3. Signs the carrier's delivery receipt
  4. Logs the bag as Received in the system
  5. Breaks the seal in a controlled count area
  6. Counts contents denomination-by-denomination
  7. Matches against declared value → reconciles trip
Note — The seal-break is the moment of greatest fraud risk in the CIT chain. The receiver should never break seals alone — always two people present, ideally on CCTV.

Self-transport

For very short, low-value legs (under KES 200k between two branches in the same compound), self-transport is permitted with branch manager authorisation. The same sealed-bag, seal-number, two-person controls apply — just without a third-party carrier. The system labels these trips 'SELF' and applies insurance from a separate self-transport rider on the institution's policy.

Worked scenarios

Scenario — CIT from Kawangware to KCB Mama Ngina

Setting: Friday afternoon. Kawangware branch needs to bank KES 1.2M of accumulated cash. G4S is the scheduled carrier.

CharacterRole
Florence AchiengBranch manager
Peter OtienoSupervisor
Mary MutuaG4S crew chief
Aisha HassanKCB cash desk officer

Timeline

  1. Day 1, 14:00: Florence creates a CIT trip from Kawangware vault to KCB Mama Ngina, carrier G4S, route Kawangware-CBD. (Trip CIT/2026/0481 in draft)
  2. Day 1, 14:15: She allocates one bag, declared value KES 1,200,000, denomination breakdown captured from vault. (Bag 0481-A with seal #88412)
  3. Day 1, 14:20: Florence and Peter both authorise — trip moves to Ready. (Trip APPROVED)
  4. Day 1, 15:30: G4S crew arrives 30 minutes early. Crew chief Mary inspects bag and seal. (—)
  5. Day 1, 15:35: Florence and Mary both sign the manifest electronically. Florence photographs bag. Vehicle KCB123A. (Trip IN TRANSIT, vault ledger decremented)
  6. Day 1, 16:10: G4S delivers to KCB Mama Ngina. Aisha at KCB cash desk verifies seal #88412 matches manifest. (—)
  7. Day 1, 16:15: Aisha signs G4S receipt. Mary leaves. (—)
  8. Day 1, 16:20: Aisha breaks seal with KCB colleague present. Counts KES 1,200,000 exactly. (Trip RECEIVED)
  9. Day 1, 16:25: Aisha issues KCB deposit slip, scans into the system via the carrier portal. (Bank transaction recorded, trip CLOSED CLEAN)
  10. Day 1, 16:40: Treasury sees KES 1.2M land in the KCB account in the next bank-feed sync. (Bank reconciliation auto-match)

Outcome — Clean CIT trip; KES 1.2M banked the same afternoon; one hour total from pickup to bank reconciliation.

Reference

Trip states

StateMeaning
draftCreated, bags being assembled
approvedTwo-signature approval complete
readyBags sealed, manifest printed
in_transitPicked up by carrier
receivedArrived and signed over
countedSeals broken, contents counted
closed_cleanReconciled zero variance
closed_with_varianceReconciled with incident
cancelledCancelled before pickup
lostCarrier reported loss; insurance claim opened

Commonly configured carriers (Kenya)

CarrierPer-bag cap (typical)Per-route cap (typical)
G4S KenyaKES 5,000,000KES 25,000,000
Wells Fargo LimitedKES 5,000,000KES 30,000,000
KK SecurityKES 2,000,000KES 10,000,000
Securex Cash SolutionsKES 5,000,000KES 20,000,000
SELF (in-compound only)KES 200,000KES 200,000

Troubleshooting

SymptomLikely causeFix
Cannot mark trip as picked-up — manifest missingManifest PDF not printed, or carrier crew chief id not enteredPrint manifest from the trip form; scan in crew chief id; both signatures required.
Trip blocked because exceeds carrier per-route liability capSingle trip value > carrier capEither split into two trips on different carriers, or escalate to treasury to authorise a temporary cap raise (requires carrier confirmation).
Seal number rejected as 'already used'Seal number was previously logged in another tripVerify the physical seal — if you have duplicates, contact carrier immediately (serial-number collision is a fraud risk). Use a different seal from the roll.
Bank confirms deposit but trip stuck in 'received'Seal-break/count step skippedBank operator completes count step in the carrier portal, system auto-reconciles.
Carrier reports bag tampered on arrivalSeal damaged or replaced en route — fraud or accidentDo not accept bag at destination. Carrier returns to origin under joint custody. Open level-3 incident. Notify carrier insurance immediately (24-hour clock starts on tamper observation).

See also

Was this page helpful?