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
| Concept | Explanation |
|---|---|
| Collection Sheet | A 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 Meeting | A 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 Installment | The pre-calculated scheduled sum of principal, interest, and routine charges due from a borrower on the meeting date. |
| Actual Collected | The physical cash or digital money collected and logged against a specific borrower’s row on the sheet. |
| Variance / Shortfall | The numerical difference between Expected and Collected: $\text{Variance} = \text{Collected} - \text{Expected}$. |
| Bulk Atomic Posting | A 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)
- Navigate to Collection Sheets $\to$ Click New Sheet (
/sheets/new). - 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.
- For branch-scoped staff (
- Officer Assignment:
- For loan officers, automatically locked to your assigned field portfolio.
- For branch managers, select which loan officer’s portfolio will be dispatched.
- Round Date: Defaults to current date (
YYYY-MM-DD). - 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 /sheetswith 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:
- 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.
- 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
- Add Borrower:
- Manually search and stage individual borrowers across the portfolio. The collection amount defaults to their expected installment automatically.
- Field Collection Actuals:
- Input actual cash collected per borrower.
- 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:
- 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 postfor field officers.
- Field Credit Officers are authorized to open sheets, stage borrowers, and record field collections (
- 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:
- Click Post $\to$ Navigates to
<sheet-post-page>. - 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
duetopaidorpartial. - Generates consolidated General Ledger entries:
Debit: 1101 Branch Cash Drawer$\to$ Total Cash IngestedCredit: 1201 Loans Receivable (Principal)$\to$ Principal RepaidCredit: 4100 Interest Income$\to$ Interest CollectedCredit: 4200 / 4300 Fees & Penalties$\to$ Charges Satisfied
- Dispatches automated SMS confirmation receipts to all paying borrowers.
- Generates individual official payment vouchers (
- The sheet is permanently locked as
Postedand 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).