Collection Sheets Module

The Collection Sheets module (/sheets) manages field collections, group lending meetings, and center cash collection rounds. It pre-populates daily expected installments, enables rapid line-by-line field entry, and bundles dozens of individual repayments into a single verified, atomic ledger posting at the branch counter.


1. Key Definitions & Concepts

ConceptExplanation
Collection SheetA structured operational document listing all active loan installments scheduled for collection within a specific center, group, or officer portfolio on a given date.
Center / Group MeetingA scheduled field gathering of microfinance borrowers where loan officers conduct weekly or monthly peer-group collections.
Joint Liability Group (JLG)A lending methodology where group members co-guarantee each other’s loans. If one member defaults, the group pool or peers contribute to cover the installment.
Expected InstallmentThe pre-calculated scheduled sum of principal, interest, and routine charges due from a borrower on the meeting date.
Actual CollectedThe physical cash or digital money collected and logged against a specific borrower’s row on the sheet.
Variance / ShortfallThe numerical difference between Expected and Collected: $\text{Variance} = \text{Collected} - \text{Expected}$.
Bulk Atomic PostingA database transaction mechanism that commits all individual client repayments, schedule advances, and general ledger postings simultaneously. If a single line fails, the entire batch rolls back, guaranteeing zero corruption.

2. Navigating the Collection Sheets Workspace (/sheets)

The collection sheets home screen lists all active and historical collection rounds:

┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Collection Sheets                                                      [ + New Collection Sheet ]│
├─────────────────────────────────────────────────────────────────────────────────────────────────┤
│ [ Active Drafts (3) ] [ Pending Teller Verification (2) ] [ Posted (148) ] [ All Sheets ]       │
├────────────┬──────────────┬──────────────┬──────────────────┬───────────┬───────────┬───────────┤
│ Sheet #    │ Meeting Date │ Center/Group │ Loan Officer     │ Expected  │ Collected │ Status    │
├────────────┼──────────────┼──────────────┼──────────────────┼───────────┼───────────┼───────────┤
│ CS-2026-89 │ 16 Sep 2026  │ Uhuru Market │ Kevin Brian      │ KES 45,000│ KES 42,500│ In Field  │
│ CS-2026-88 │ 16 Sep 2026  │ Gikomba West │ Alice Chebet     │ KES 78,000│ KES 78,000│ At Counter│
│ CS-2026-87 │ 15 Sep 2026  │ Kibera East  │ Patrick Mwita    │ KES 32,000│ KES 32,000│ Posted    │
└────────────┴──────────────┴──────────────┴──────────────────┴───────────┴───────────┴───────────┘

Status Badges:

  • 🟡 In Field: Generated by the officer; currently open for line entries during field meetings.
  • 🔵 At Counter: Cash handed over to the branch teller; pending physical currency counting and posting.
  • 🟢 Posted: Atomically committed to the database; client schedules advanced and general ledger updated.

3. Generating a New Collection Sheet (/sheets/new)

Every morning before departing for field rounds, or during morning branch management preparation, the collection sheet is created via a structured 3-stage flow:

┌─────────────────────────┐         ┌─────────────────────────┐         ┌─────────────────────────┐
│         Stage 1         │  ────►  │         Stage 2         │  ────►  │         Stage 3         │
│        The Round        │         │    Due Installments     │         │     Confirm & Open      │
│(Station, Officer, Date) │         │(Select Borrowers & Amts)│         │(Pre-Staged Atomic Open) │
└─────────────────────────┘         └─────────────────────────┘         └─────────────────────────┘

Stage 1: The Round (Station, Officer, Day)

  1. Navigate to Collection Sheets $\to$ Click New Sheet (/sheets/new).
  2. Station Selection:
    • For branch-scoped staff (officer, teller, manager), your assigned station is pre-selected and locked.
    • For platform administrators (admin), pick any branch station across the network.
  3. Officer Assignment:
    • For loan officers, automatically locked to your assigned field portfolio.
    • For branch managers, select which loan officer’s portfolio will be dispatched.
  4. Round Date: Defaults to current date (YYYY-MM-DD).
  5. Dues Pre-Flight Guard: The system verifies that active loans with collectible balances exist for the station and officer. If no dues exist, opening is prevented with a clear error prompt (no_dues).

Stage 2: Due Installments (Selection & Target Customization)

The platform queries /api/v1/sheets/fresh and renders all scheduled dues for the round:

  • Borrower Identity: Client Full Name, KYC verification badge (✓), National ID, Phone, and Account Code.
  • Facility Details: Loan Account Ref (#LOX...), Product Name, Installment Progression (e.g. Inst #2 of 12), and Next Due Date.
  • Financial Status: Total Outstanding Balance, Scheduled Expected Installment, and Overdue Arrears (DPD late tag).
  • Target Customization: Pre-filled automatically to the borrower’s expected installment amount.
  • Selection Controls: Check or uncheck individual borrowers, or use Select all / Deselect all to toggle the entire roster.

Stage 3: Confirm & Open

  • Summarizes the aggregate Collection Target (KES) and total Borrowers Selected.
  • Clicking Open the sheet commits POST /sheets with all selected lines and installment targets already pre-staged in PostgreSQL.

4. Working with the Sheet in the Field (/sheet/:hex)

During the collection round, the responsive console allows officers or managers to manage the register:

┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Sheet #CSX2EB536CABD51 · Head Office · Round of 18 Sep 2026                 [ Sync Dues ] [ Print ]│
│ Officer: Amina Njeri | Expected: KES 5,168 | Staged: KES 5,168 | Status: Draft [ Awaiting Post ] │
├──────┬──────────────────────┬─────────────┬─────────────┬─────────────┬───────────┬─────────────┤
│ #    │ Borrower & Contact   │ Loan & Inst │ Expected    │ Collected   │ Balance   │ DPD / Status│
├──────┼──────────────────────┼─────────────┼─────────────┼─────────────┼───────────┼─────────────┤
│ 1    │ Daniel Omondi ✓      │ #LOX125CF14 │ KES 5,168   │ [ 5,168 ]   │ KES 81,329│ 0d Current  │
│      │ ID: 725925861        │ Biashara    │             │             │           │             │
│      │ Ph: 254725925861     │ Inst #2/12  │             │             │           │             │
└──────┴──────────────────────┴─────────────┴─────────────┴─────────────┴───────────┴─────────────┘

Key Console Capabilities:

  1. Sync Dues (Auto-Persist):
    • If an empty draft sheet was created or new dues matured, clicking Sync Dues pulls all un-staged due loans into the sheet and automatically persists them to PostgreSQL via PATCH /sheets/:hex.
  2. Add Borrower:
    • Manually search and stage individual borrowers across the portfolio. The collection amount defaults to their expected installment automatically.
  3. Field Collection Actuals:
    • Input actual cash collected per borrower.
  4. Physical Vault Breakdown:
    • Denomination counter grid for KES 1000, 500, 200, 100, 50 banknotes and coins with real-time discrepancy monitoring.

5. Counter Handover & Segregation of Duties (SOD)

To enforce institutional anti-fraud and dual-control banking standards:

  1. Why Officers See “Awaiting Counter Post”:
    • Field Credit Officers are authorized to open sheets, stage borrowers, and record field collections (can('stage')).
    • However, officers cannot post collections directly to the General Ledger. Cash must be physically verified at the branch counter.
    • The sheet console displays Awaiting counter post for field officers.
  2. Counter Handover:
    • The officer hands the cash bag and printed signed sheet to the Branch Teller or Branch Operations Manager.
    • The Teller verifies the physical banknotes and coins in the till.
    • If physical cash equals the staged sheet total, the Teller clicks Post (can('post')).

6. Atomic Posting Execution (/sheet/:hex/post)

Once cash is verified across the branch counter, the teller or manager executes the posting:

  1. Click Post $\to$ Navigates to <sheet-post-page>.
  2. The platform performs an ACID database transaction:
    • Generates individual official payment vouchers (PMX-...) for each paying borrower.
    • Applies the statutory payment waterfall (Penalties $\to$ Fees $\to$ Interest $\to$ Principal).
    • Advances installment schedules from due to paid or partial.
    • Generates consolidated General Ledger entries:
      • Debit: 1101 Branch Cash Drawer $\to$ Total Cash Ingested
      • Credit: 1201 Loans Receivable (Principal) $\to$ Principal Repaid
      • Credit: 4100 Interest Income $\to$ Interest Collected
      • Credit: 4200 / 4300 Fees & Penalties $\to$ Charges Satisfied
    • Dispatches automated SMS confirmation receipts to all paying borrowers.
  3. The sheet is permanently locked as Posted and cannot be altered.

7. Official Certified Printable Dossier

Clicking Print or Export $\to$ PDF generates a regulatory-compliant A4 collection dossier:

  • Profile Header: Institution logo, registered division identity, document control reference (BII-OPS-CR-01), and sheet number.
  • KPI Summary Strip: Staged Total, Expected Demand, Collection Rate %, and Batch Status.
  • Itemized Register: Borrower Name, KYC verification rosette (✓), National ID, Client Number, Phone, Loan Account Ref, Product Name, Installment Progression (Inst #X of Y), Due Date, Expected Demand, Arrears Breakdown, Staged Collected, Balance Owed, and physical Borrower Signature block.
  • Vault Reconciliation: Physical banknote and coin denomination inventory table.
  • Tripartite Sign-Off: Signatures and date lines for Role 01 (Collecting Credit Officer), Role 02 (Branch Receiving Cashier), and Role 03 (Branch Operations Manager).