Regulatory Pack

SaaS tenant. The MFI Suite is delivered as a fully managed service — there is nothing to install or configure at the OS level. Self-hosted one-time licence buyers receive a dedicated installation runbook with the licence delivery; this page describes the user-facing workflow only.

The Regulatory Pack is a layered set of country modules (mfi_reg_) that hook into the core MFI engine and emit the exact returns, schemas, and disclosures each supervisor demands. Activate only the packs you operate in; each is self-contained and can be upgraded independently.

Regulator pack runs
CBK / SASRA / BoU pack runs.
At a glance — Eight country packs available. Kenya (SASRA + CBK + ODPC), Uganda (UMRA + BoU), Tanzania (BoT MFD), Ethiopia (NBE), Zambia (BoZ NBFI), Nigeria (CBN OFISD), Rwanda (BNR), and WAEMU (BCEAO/Cote d'Ivoire, Senegal, Mali, Burkina Faso, Togo, Benin, Niger, Guinea-Bissau). All packs share a common engine; differences are isolated to the country layer.

Pack philosophy

Microfinance regulation in Africa is a patchwork: every supervisor publishes its own taxonomy, file format, frequency, and signing rules. Rather than hard-code these into mfi_loan and mfi_savings, MFI Suite isolates jurisdictional logic in thin overlay modules. The core books loans and savings in IFRS terms; the country pack maps those values to the local return.

Each pack ships three things: data extensions (extra fields on partners, loans, accounts that the regulator requires but IFRS does not), report builders (Python/QWeb that produce the exact XLSX/XML/CSV the supervisor accepts), and a portal connector (REST/SFTP/email gateway to lodge the return). You install only the packs for jurisdictions where you hold a licence.

A pan-African group with a Kenyan parent and Tanzanian subsidiary installs mfi_reg_kenya on the parent tenant and mfi_reg_tanzania on the subsidiary tenant. The two tenants share no data; consolidated reporting is handled at group level via mfi_treasury rollups.

Country coverage matrix

All eight packs are production-deployed at one or more BridgeERP tenants. The table below summarises supervisor, return frequency, and the highest-stakes filing in each jurisdiction.

PackSupervisorTop returnFrequencyChannel
KenyaCBK / SASRA / ODPC / FRCMFB 1 prudential returnMonthlySFTP + portal
UgandaUMRA + BoUQuarterly statistical returnQuarterlyPortal upload
TanzaniaBoT Microfinance DepartmentMFI-2 prudential returnMonthlyEmail + portal
EthiopiaNational Bank of EthiopiaNBE-MFI quarterlyQuarterlyManual + courier
ZambiaBoZ Non-Bank Financial InstitutionsBoZ-NBFI monthlyMonthlyPortal API
NigeriaCBN OFISDMonthly e-FASS returnMonthlye-FASS portal
RwandaBNR Microfinance DepartmentQuarterly prudentialQuarterlyBNR portal
WAEMUBCEAO via national finance ministryFINREP equivalentQuarterlyLocal SFTP

Shared engine

Every pack reuses the same primitives. Understanding these helps when troubleshooting a country pack: 90% of bugs are in the mapping layer, not the engine.

  • mfi.regulatory.return — record per return per period (open, draft, ready, lodged, accepted, rejected)
  • mfi.regulatory.template — XML/XLSX/CSV scaffold with mako-style placeholders
  • mfi.regulatory.mapping — field-level rule (source domain + aggregation + sign convention)
  • mfi.regulatory.lodgement — audit record of every submission attempt (channel, payload hash, response)
  • mfi.regulatory.exception — failed validation captured for analyst review before lodgement

Filing lifecycle

  1. Cron opens a return record at period close (last day of month / quarter)
  2. Engine populates draft values from posted ledger + loan + savings positions
  3. Compliance officer reviews exceptions queue (negative balances, missing KYC, untagged products)
  4. Reviewer signs the return digitally (qualified e-sig if jurisdiction requires)
  5. Lodgement channel transmits the file and captures the reference number
  6. Acceptance webhook (or manual confirmation) closes the return record
Warning — Never edit a return after acceptance. To correct, file an amendment return through the supervisor's amendment workflow; the engine has a separate state for amendments to preserve the original audit trail.

Installing a pack

Packs are listed under Apps with the prefix MFI Regulatory. Install order matters: install mfi_reg_common first if not auto-installed, then the country pack. Restart workers after install so the new cron jobs register.

Watching this on a SaaS tenant: open the run/job's own log tab inside the suite. For deeper inspection, raise a support case from iBANK → Get help.

Reference

Return states (all packs)

StateMeaningEditableNext
openPeriod detected, return scaffolded, values not yet pulledYes (delete)draft
draftValues pulled, exceptions visible, awaiting officer reviewYesready
readyOfficer signed off, awaiting reviewer counter-signatureNo (only reviewer can reject)signed
signedCounter-signed, awaiting lodgement windowNolodged
lodgedTransmitted to supervisor, awaiting acceptanceNoaccepted/rejected
acceptedSupervisor confirmed receipt and validationNo (read-only forever)(terminal)
rejectedSupervisor returned the file with errorsReopen to draft, fix, re-lodgedraft
amendmentSubsequent correction filed against an accepted returnYeslodged

Troubleshooting

SymptomLikely causeFix
No return record opened on the 1st of the month.Cron job mfi_reg__open did not run (worker count is 0 or queue is stuck).Check Settings > Technical > Scheduled Actions, find the cron, click Run Manually, then re-enable.
Exception queue shows 'untagged product' for several loans.Loan product missing the regulatory classification field (e.g. SASRA loan category code).Open each loan product, set the regulatory code, then click Recompute on the return.
Lodgement fails with HTTP 401.Portal credentials in ir.config_parameter expired.Refresh the API token in the supervisor portal, paste into mfi_reg..token, retry lodgement.

See also

Was this page helpful?