
ISEPINFORMAL SECTOR EMPOWERMENT
Software Requirements Specification
COMSIP Malawi on ISEP. Dedicated ISDBMS tenant with MWK ⇄ USD currency engine.
Requirements for bringing the approved COMSIP Cooperative Development Management Platform and COMSIV Microfinance Management System under the ISEP platform as a country-routed, separately-hosted database engine serving COMSIP Cooperative Union Limited alone.
- Prepared by
- Waltergates Ghana Limited
24th Street, HS No. 20, New Achimota, Accra
- Prepared for
- COMSIP Cooperative Union Limited
COMSIP House, Area 6, Lilongwe
- Status
- v1.0 · Draft for M2 sign-off
05 October 2026
ConfidentialWGL-COMSIP-SRS-001
Document control
About this document
| Field | Value |
| Document ID | WGL-COMSIP-SRS-001 |
| Contract milestone | M2 — Requirements Confirmation (Agreement, Annex 7). Sign-off of this SRS is the formal acceptance basis for M2. |
| Source documents | [R1] COMSIP ISDBMS Platform — Product Development Documentation (SDD), approved by COMSIP. [R2] Software Development, Hosting, License, Implementation and Support Agreement, Waltergates ↔ COMSIP, incl. Annexes 1–7. [R3] COMSIP ISDBMS Implementation Milestone Tracker. [R4] ISEP Website prototype (country selection, COMSIP portal). |
| Order of precedence | Where this SRS conflicts with the Agreement, the Agreement prevails. New scope in this SRS that is not in Annex 1 is flagged CR and needs a Change Request (Annex 6). |
Revision history
| Version | Date | Author | Change |
| 0.1 | 01 Oct 2026 | WGL Product | Requirements extracted from SDD [R1] and Annex 1 [R2] |
| 1.0 | 05 Oct 2026 | WGL Product | Added ISEP country routing, tenant isolation and MWK ⇄ USD engine |
Priority key
Must — required for Go-Live (M7). Should — required by end of stabilisation (M8). Could — desirable; scheduled by agreement.
Contents
1Introduction
2Overall description
3ISEP integration & tenancy
4Functional requirements
5Currency engine (MWK ⇄ USD)
6External interfaces
7Non-functional requirements
8Data requirements
9Acceptance & traceability
10Open issues & assumptions
11Approval
COMSIP Malawi on ISEP · SRS v1.02
01Introduction
1.1Purpose
This SRS states what the COMSIP platform must do, how well, and under which constraints — in testable terms. It turns the approved SDD [R1] and the contractual scope in Annex 1 [R2] into numbered requirements that developers build against and COMSIP's UAT team tests against (Annex 4).
1.2Scope
The system is the COMSIP Cooperative Development Management Platform and COMSIV Microfinance Management System, built on Waltergates' ISDBMS. It is delivered as a dedicated tenant of ISEP:
- Users reach it from the ISEP landing page by selecting Malawi.
- It runs on its own database engine and keys. Nothing is shared with the ISEP Ghana network.
- It keeps a Malawi Kwacha (MWK) ledger by default, with conversion and reporting in US Dollars (USD).
Channels: web portal, offline-first Android app, and a USSD service in English and Chichewa.
1.3Definitions
| Term | Meaning |
| ISEP | Informal Sector Empowerment Platform — Waltergates' multi-country front door and shared services. |
| ISDBMS | Informal Sector Database Management System — Waltergates' proprietary core platform. |
| Tenant | A logically and physically isolated deployment of ISDBMS for one customer (here comsip-mw). |
| COMSIV | COMSIP's non-deposit-taking microfinance unit. |
| SLG | Savings and Loan Group — the informal group a member joins before graduating to a cooperative. |
| SSRLP | Social Support for Resilient Livelihoods Programme (donor-funded). |
| TA | Traditional Authority — sub-district administrative unit used in reporting. |
| PAR | Portfolio at Risk — outstanding loan balance with repayments overdue by more than N days. |
| MWK / USD | ISO 4217 codes for the Malawi Kwacha and US Dollar. (MWK is the official code; "MKW" isn't.) |
| Booked rate | The exchange rate stored on a transaction when it is posted; it never changes afterwards. |
| Maker-checker | Control where one user enters a record and a different user approves it. |
02Overall description
2.1Product perspective
ISEP Ghana already serves cooperatives and partner institutions. COMSIP joins as a second country with its own engine. The ISEP shell handles country choice and branding only; once a user enters the COMSIP tenant, all business logic, data and sessions belong to COMSIP's deployment.
Fig. 1 — Logical view
ISEP landing (isep domain)Country selector · public content · routes to tenant
Ghana tenantISEP cooperative network · GHS · existing ISDBMS DB
Malawi tenant · comsip-mwLaravel API · React portal · Android · USSD · DB isdbms_mw (PostgreSQL/MySQL) · MWK default · AWS Cape Town / Azure SA
Airtel MoneyMobile money
TNM MpambaMobile money
Bank gatewayCOMSIP's bank
USSD / SMSAggregator
COMSIP Malawi on ISEP · SRS v1.03
2.2User classes
| User class | Channels | Main tasks | Scope |
| Union HQ executive (CEO, GM, Finance, Audit, M&E) | Web | Approvals, analytics, fund disbursement, regulatory and donor reports, FX rate approval (Finance) | National |
| District coordinator / case worker | Web, Android | Field monitoring, group audits, member verification, approving group registrations | District |
| Field extension worker | Android | Offline registration, training records, first-level loan appraisal | Assigned groups |
| COMSIV credit officer | Web, Android | Appraisal, disbursement authorisation, PAR tracking, product setup | Portfolio |
| Cooperative governance officer (chair, treasurer, secretary) | Web, Android | Member management, minutes, group savings verification, group financial reports | Own cooperative |
| Member / beneficiary | Android, USSD | Balance, loan status, statements, service requests | Self |
| IT administrator | Web | Users, configuration, security monitoring, backups | System |
2.3Operating environment
- Backend: Laravel (PHP) REST API. Frontend: React/Node.js. Mobile: native Android, encrypted SQLite (SQLCipher). Database: PostgreSQL or MySQL.
- Hosting: dedicated cloud in a low-latency region (AWS Cape Town / Azure South Africa), CDN for static assets.
- Time zone CAT (UTC+2). Phone numbers +265. Languages: English and Chichewa.
2.4Constraints
- Malawi Data Protection Act (2024) and Ghana Data Protection Act 2012 (Act 843). COMSIP is Data Controller; Waltergates is Data Processor.
- Cross-border hosting under Standard Contractual Clauses or MACRA permits.
- USSD screens must fit 160 characters; sessions must survive operator timeouts.
- Rural connectivity is intermittent — field work must not depend on being online.
2.5Dependencies
- COMSIP delivers clean legacy registers within 20 business days of kickoff.
- Bank gateway API credentials provisioned by M3.
- USSD short code, SMS traffic and devices are COMSIP's responsibility (Annex 1 §6).
- COMSIP names the reference commercial bank for exchange rates (see §5).
03ISEP integration & tenancy
New requirements that bring COMSIP under ISEP. These sit on top of Annex 1 scope.
| ID | Requirement | Priority | Source |
| ISEP-01 | The ISEP landing page shall show a country selector with Ghana and Malawi, visible above the fold and in the site header on every page. | Must | R4 |
| ISEP-02 | Selecting Malawi shall route to the COMSIP portal (e.g. /mw or comsip.isep…) with COMSIP branding, Malawi content and MWK as the display currency. | Must | R4 |
| ISEP-03 | The selected country shall be remembered on the device and changeable at any time. Switching country shall end any active session in the other tenant. | Must | R4 |
| ISEP-04 | The COMSIP tenant shall use a separate database instance, schema, encryption keys, backups and secrets from every other ISEP tenant. No cross-tenant query path shall exist. | Must | R2 §12.1 |
| ISEP-05 | Identity shall be tenant-scoped: Ghana ISEP credentials shall not authenticate in the COMSIP tenant and vice versa. JWTs shall carry a tenant claim checked by every API call. | Must | R2 Annex 5 |
| ISEP-06 | COMSIP data shall not appear in the ISEP Ghana cooperative directory or any shared analytics unless COMSIP gives written consent per dataset. | Must | R2 §13.2 |
| ISEP-07 | ISEP shared services (status page, help centre, design system) may be reused, but they shall hold no COMSIP personal data. | Should | — |
| ISEP-08 | Tenant configuration (currency, locale, time zone, phone format, fiscal year, admin units District → TA → Village) shall be set per tenant, not hard-coded. | Must | R2 Annex 1 |
COMSIP Malawi on ISEP · SRS v1.04
04Functional requirements
4.1Member management
| ID | Requirement | Priority | Source |
| MEM-01 | Register a member with full legal name, gender, date of birth, National ID (where available), district, TA, SLG/cooperative, mobile number, photo and digital consent. | Must | SDD 3.1 · A2 §2 |
| MEM-02 | Validate National ID format on the device and at the server; store it encrypted at field level (AES-256). | Must | SDD 7.1 |
| MEM-03 | Detect likely duplicates (National ID, phone, name + DOB + group) before saving, and block a confirmed duplicate. | Must | A2 §2(c) |
| MEM-04 | Capture socio-economic baseline and household demographics. | Must | A1 §2(a) |
| MEM-05 | Track lifecycle status: Pending → Verified → Active → Graduated / Exited, with reason and date. | Must | SDD 3.1 |
| MEM-06 | District coordinator verifies new profiles; on activation the system generates a USSD PIN and sends it by SMS. | Must | SDD 5.1 |
| MEM-07 | Keep a full change history of every profile edit (who, when, before, after). | Must | SDD 3.1 |
4.2Cluster & cooperative governance
| ID | Requirement | Priority | Source |
| GOV-01 | Maintain registries of SLGs, clusters, primary cooperatives and union affiliation. | Must | A1 §2(b) |
| GOV-02 | Record leadership positions and tenure, committee structures and term expiry alerts. | Must | SDD 3.2 |
| GOV-03 | Record meetings, attendance and minutes, with attachments. | Must | SDD 3.2 |
| GOV-04 | Record share capital purchases per member and apply configurable dividend rules. | Must | SDD 3.2 |
| GOV-05 | Run a graduation workflow from SLG to registered cooperative, with checklist and approval. | Must | SDD 3.2 |
4.3Savings
| ID | Requirement | Priority | Source |
| SAV-01 | Record group savings and individual voluntary savings: deposits, withdrawals, running balances. | Must | A1 §2(d) |
| SAV-02 | Calculate and post interest per product rules; administer mandatory reserve funds. | Must | A1 §2(d) |
| SAV-03 | Accept deposits via Airtel Money and TNM Mpamba, and by manual entry with treasurer confirmation. | Must | A1 §2(i) |
COMSIP Malawi on ISEP · SRS v1.05
4.4COMSIV microfinance
| ID | Requirement | Priority | Source |
| MF-01 | Configure loan products (individual, group, cooperative, seed capital) with term, interest method, fees, penalties, grace period and limits. | Must | SDD 3.3 |
| MF-02 | Accept loan applications from the web portal, the Android app (field officer) and USSD (member-initiated). | Must | SDD 5.2 |
| MF-03 | Score applications automatically using savings velocity, repayment history and group audit performance; show the factors to the officer. | Must | A1 §2(c) |
| MF-04 | Route approvals by amount thresholds (officer → committee → manager → CEO), configurable by Finance. | Must | SDD 5.2 |
| MF-05 | Disburse via bank gateway or mobile money; generate the repayment schedule at disbursement. | Must | SDD 5.2 |
| MF-06 | Accrue interest and penalties daily; track repayments from mobile money or manual entry. | Must | SDD 3.3 |
| MF-07 | Calculate PAR 1/30/60/90 and raise delinquency alerts to officers and coordinators. | Must | A1 §2(c) |
| MF-08 | Loans are denominated in MWK. USD-denominated loans are out of scope unless added by CR. | Must | A1 §2(h) |
4.5SSRLP & livelihood programmes
| ID | Requirement | Priority | Source |
| SSR-01 | Register beneficiaries and verify eligibility automatically against configurable programme criteria. | Must | SDD 3.4 |
| SSR-02 | Allocate and track seed capital, grants and agricultural inputs per beneficiary. | Must | A1 §2(e) |
| SSR-03 | Record service delivery milestones and household economic impact over time. | Must | SDD 3.4 |
| SSR-04 | Record donor inflows in their original currency (often USD) and post to the MWK ledger at the booked rate (see §5). | Must | A1 §2(h) |
4.6Audit, compliance & M&E
| ID | Requirement | Priority | Source |
| AUD-01 | Provide tablet-friendly digital audit checklists that work offline. | Must | A1 §2(f) |
| AUD-02 | Compute risk scores and institutional health ratings; keep compliance history per group. | Must | SDD 3.5 |
| AUD-03 | Let M&E staff build data collection forms without code. | Should | SDD 3.5 |
4.7Reporting & analytics
| ID | Requirement | Priority | Source |
| RPT-01 | Dashboards disaggregated by district, TA, gender, age and vulnerability, meeting World Bank reporting formats. | Must | A1 §2(g) |
| RPT-02 | Every financial report can be shown in MWK or USD; USD views state the rate basis used (see FX-09). | Must | A1 §2(h) |
| RPT-03 | Export to CSV, XLSX and PDF. | Must | SDD 3.5 |
COMSIP Malawi on ISEP · SRS v1.06
4.8Channels
| ID | Requirement | Priority | Source |
| WEB-01 | Responsive web portal with role-specific home screens for executives, underwriting, programmes and reports. | Must | A1 §2(k) |
| AND-01 | Android app supports full offline registration, repayment capture and audits, stored in an encrypted local database. | Must | A1 §2(l) |
| AND-02 | Show "last synced" time and pending upload count at all times. | Must | SDD 6.1 |
| SYN-01 | Two-way delta sync in the background, with checksums, retry queue and timestamped actions. | Must | SDD 3.7 |
| SYN-02 | Resolve conflicts by documented rules per entity; financial records are never overwritten silently — they're flagged for review. | Must | SDD 5.3 |
| SYN-03 | Field devices cache the current approved FX rate so offline screens can show USD equivalents; the server re-checks on sync. | Should | New |
| USSD-01 | USSD menus in English and Chichewa: savings balance, loan status, mini-statement, loan application, service request. PIN on every session. | Must | A1 §2(m) |
| USSD-02 | USSD amounts are shown in MWK only, to fit the 160-character limit. | Must | SDD 6.2 |
4.9Access control & audit trail
| ID | Requirement | Priority | Source |
| SEC-01 | Role-based access with data scope by national, district, cooperative or self. | Must | A1 §2(j) |
| SEC-02 | Multi-factor authentication for admin, finance and HQ executive roles. | Must | SDD 7.2 |
| SEC-03 | Tamper-evident logs of logins, failed attempts, profile edits, loan approvals, disbursements, deletions and FX rate changes — with user ID, timestamp and IP. | Must | A5 §1(c) |
4.10Billing meters
The Agreement charges USD 10.00 per registered member and 1.00% on project funding transactions, invoiced monthly in USD or MWK (Agreement §10).
| ID | Requirement | Priority | Source |
| BIL-01 | Count chargeable members per month using the Annex 2 §2 rules (committed, mandatory fields complete, unique). | Must | A2 §2 |
| BIL-02 | Meter project funding transactions (seed capital, grants, revolving funds) once at ledger allocation; exclude loan repayments, savings deposits, internal transfers and error reversals. | Must | A2 §3 |
| BIL-03 | Produce the monthly Platform Billing Audit Report within 5 business days of month end. | Must | A2 §4 |
| BIL-04 | Where COMSIP pays in MWK, convert the USD invoice using the reference bank's selling rate on the invoice date and print it on the invoice. | Must | §10.6 |
COMSIP Malawi on ISEP · SRS v1.07
05Currency engine (MWK ⇄ USD)
COMSIP runs its books in Kwacha, but donors fund and report in dollars and Waltergates invoices in dollars. The engine keeps one source of truth in MWK, keeps the original amount and rate on every foreign-currency transaction, and lets users convert and report in USD without changing the books.
5.1Principles
- MWK is the functional currency. Every ledger balance is held in MWK.
- Keep the original. A USD transaction stores its USD amount, the rate used and the MWK result. None of these change later.
- One approved rate per day per type. Buying, mid and selling rates come from a named source and are approved by a second person.
- Say which rate you used. Every USD figure on screen or in a report shows its rate and date.
5.2Requirements
| ID | Requirement | Priority | Source |
| FX-01 | Support MWK (default) and USD as ledger currencies; further currencies can be added by configuration. | Must | A1 §2(h) |
| FX-02 | Keep a rate table with date, source, buying, mid and selling rate, status (draft / approved / superseded), maker and checker. | Must | New |
| FX-03 | Finance staff enter rates (maker); the Finance Manager approves them (checker). The same user cannot do both. | Must | A5 §1 |
| FX-04 | Optionally import daily rates automatically from the reference bank or Reserve Bank of Malawi feed; imported rates still need approval. | Could · CR | New |
| FX-05 | Block posting of USD transactions when there is no approved rate for the value date; warn when the rate is older than 2 business days. | Must | New |
| FX-06 | On posting a USD transaction, store original amount, currency, rate ID, rate value, rate type and the MWK amount. | Must | New |
| FX-07 | Provide a converter (web and Android) for MWK ⇄ USD in both directions with a choice of buying, mid or selling rate. It's for information only and posts nothing. | Must | R4 |
| FX-08 | Provide a display-currency switch (MWK / USD) on dashboards and reports. Switching never changes stored values. | Must | R4 |
| FX-09 | Reports in USD offer two bases: historical (each line at its booked rate) and closing (all balances at the period-end mid rate). The basis is printed in the report footer. | Must | New |
| FX-10 | Calculate realised and unrealised FX gains/losses on USD-held programme funds at month end and post them to configured GL accounts. | Should · CR | New |
| FX-11 | Log every rate entry, approval, override and correction in the audit trail (SEC-03). Approved rates can't be edited — only superseded. | Must | A5 §1(c) |
5.3Calculation rules
| Rule | Definition |
| Rate expression | MWK per 1 USD, stored with 6 decimal places. |
| MWK → USD | usd = round(mwk ÷ rate, 2) |
| USD → MWK | mwk = round(usd × rate, 2) |
| Rounding | Banker's rounding (half-even) to 2 decimals in both currencies; use decimal arithmetic, never floating point. |
| Default rate type | Donor inflows: buying rate (what COMSIP receives). Payments out in USD: selling rate. Reporting and the converter default: mid. |
Worked example — SSRLP grant of US$ 40,000.00 received 03 Oct 2026
Approved rate FX-2026-10-03-01 · buying 1,734.000000
MWK posted = 40,000.00 × 1,734.000000 = MK 69,360,000.00
Stored : orig 40,000.00 USD · rate_id FX-2026-10-03-01 · type BUY · mwk 69,360,000.00
1% fee meter : MK 693,600.00 (BIL-02 — inbound allocation, charged once)
Rates shown are illustrative; live rates come from COMSIP's approved rate table.
COMSIP Malawi on ISEP · SRS v1.08
06External interfaces
| Interface | Purpose | Notes |
| Airtel Money, TNM Mpamba | Collections and disbursements | Webhook callbacks; idempotency key per transaction |
| COMSIP commercial bank gateway | Bank disbursements and settlement | Credentials by M3; merchant fees are COMSIP's (A1 §6) |
| USSD / SMS aggregator (e.g. Africa's Talking) | Member USSD sessions; PIN and alert SMS | Short code acquired by COMSIP |
| FX rate source | Daily reference rates | Manual entry at Go-Live; automated feed via FX-04 (CR) |
| ISEP shell | Country routing and branding | No personal data crosses this boundary |
07Non-functional requirements
| ID | Requirement | Source |
| NFR-01 | Monthly availability of 99.5%, excluding scheduled maintenance (22:00–04:00 CAT, 48 h notice for >30 min). | §12.2, 12.5 |
| NFR-02 | Daily incremental and weekly full backups, AES-256, off-site replica, 30-day retention. RPO ≤ 24 h, RTO ≤ 48 h. | §12.3–12.4 |
| NFR-03 | TLS for all traffic; AES-256 at rest for IDs, banking data, passwords, biometrics; Bcrypt password hashing. | A5 §1(a) |
| NFR-04 | Quarterly penetration tests; continuous vulnerability scanning; breach notice to COMSIP within 72 h. | A5 §1(d) · §13.4 |
| NFR-05 | Web pages load in under 3 s on 3G for 95% of requests; API p95 under 800 ms; USSD response under 2 s. | SDD 13 |
| NFR-06 | Scale to at least 250,000 members and 50 concurrent sync batches without degrading NFR-05. | SDD 13 |
| NFR-07 | All user-facing text available in English and Chichewa; dates DD MMM YYYY; amounts with currency code or symbol. | A1 §2(m) |
| NFR-08 | On exit: full SQL and CSV export within 30 days, then NIST SP 800-88 deletion. | A5 §2 |
| NFR-09 | Support: helpdesk 08:30–17:30 CAT business days; Severity 1 response within 2 business hours, resolution within 2 business days. | A3 |
08Data requirements
| Entity | Key fields |
| Member | member_id, national_id (enc), names, gender, dob, phone, district, ta, village, group_id, status, consent_at |
| Group / Cooperative | group_id, type (SLG / cluster / coop), district, ta, registered_on, leaders[], share_capital |
| Loan | loan_id, product_id, borrower (member / group), principal_mwk, rate, schedule[], status, par_days |
| Ledger entry | entry_id, account, amount_mwk, orig_amount, orig_ccy, fx_rate_id, fx_rate, fx_type, value_date, posted_by |
| FX rate | fx_rate_id, date, base USD, quote MWK, buy, mid, sell, source, status, maker_id, checker_id, approved_at |
| Programme allocation | alloc_id, programme, beneficiary_id, asset_type, amount_mwk, orig_ccy, fee_metered |
COMSIP Malawi on ISEP · SRS v1.09
09Acceptance & traceability
UAT runs in the staging environment with anonymised data. COMSIP has 10 business days per handover. A module is accepted with zero open Material Defects (Annex 4).
| Milestone | Window | Requirements covered |
| M1 Kickoff & governance | ≤ 10 BD | — |
| M2 Requirements confirmation | ≤ 30 BD | Sign-off of this SRS |
| M3 Core customisation | ≤ 75 BD | ISEP-01–08, MEM, GOV, SAV, MF, SSR, FX-01–09, FX-11, AND, SYN, USSD |
| M4 Staging & UAT handover | ≤ 90 BD | All Must items deployed to staging |
| M5 UAT sign-off | ≤ 110 BD | Test scenarios incl. FX worked example, tenant isolation test |
| M6 Training | ≤ 120 BD | 2 admin + 4 TOT sessions, incl. FX rate maker-checker |
| M7 Go-Live | ≤ 130 BD | Migration cutover, gateways live, BIL meters on |
| M8 Stabilisation | +90 days | Should items; RPT, AUD-03, SYN-03 |
9.1Key acceptance tests
- Tenant isolation: a Ghana ISEP token calling a COMSIP endpoint gets 401; no COMSIP record appears in the ISEP directory.
- Country routing: choosing Malawi on the landing page opens the COMSIP portal; the choice persists after reload.
- FX posting: the worked example in §5.3 posts exactly MK 69,360,000.00 and stores the rate ID.
- FX control: the same user cannot both enter and approve a rate; posting a USD transaction without an approved rate is blocked.
- Offline: register 20 members offline, reconnect, all sync with zero loss and duplicates flagged.
10Open issues & assumptions
| # | Item | Owner |
| OI-1 | Name the reference commercial bank for FX rates and invoice conversion. | COMSIP Finance |
| OI-2 | Confirm whether FX-04 (automatic rate feed) and FX-10 (FX gain/loss) are wanted — both need a Change Request. | COMSIP / WGL |
| OI-3 | Confirm URL pattern for the Malawi tenant (sub-path or sub-domain). | WGL |
| OI-4 | Confirm data residency choice (South Africa region) and MACRA transfer approach. | COMSIP Legal |
| OI-5 | Provide Chichewa translations review panel for USSD and app text. | COMSIP |
11Approval
Signing below confirms this SRS as the Approved Requirements Specification for Milestone M2.
For Waltergates Ghana Limited
Name: ______________________
Title: ______________________
Signature & date: ____________
For COMSIP Cooperative Union Limited
Name: ______________________
Title: ______________________
Signature & date: ____________
COMSIP Malawi on ISEP · SRS v1.010