Configure the Kenya country profile

The country profile is the layer of configuration that every branch, product, and member inherits. Setting it wrong forces you to override the same field on hundreds of records later. Spend the hour to set it once, correctly.

MFI Suite settings
Country profile lives under Configuration → Settings → MFI Suite.

Currency and locale

Open Settings → Companies → Bridge MFI Ltd and confirm:

FieldValue for KenyaNotes
CurrencyKES (Kenyan Shilling)Locks once members exist
Decimal places2CBK reports require 2dp
Thousand separatorCommaPer ISO 4217 KE locale
Date formatDD/MM/YYYYPer Kenyan civil practice
Time zoneAfrica/NairobiUTC+3 no DST
LanguageEnglish (Kenya)Swahili optional via mfi.translation
Warning — Do not select USD even for a USD-funded portfolio. Use the standard multi-currency journals instead — the IFRS 9 ECL engine assumes the functional currency is KES and will mis-price ECL if you flip it.

KRA PIN format

Kenya Revenue Authority PINs follow a strict 11-character format: letter, 9 digits, letter (e.g. A001234567Z). The shipped regex enforces this on every res.partner with is_mfi_member=True.

Members without a KRA PIN (informal traders, mama mbogas) are allowed but the field x_no_kra_reason must be filled — the CBK reporting pack groups them under 'unbanked' for the financial inclusion line.

# mfi_member/models/res_partner.py — shipped validator
_KRA_PIN_RE = re.compile(r'^[A-Z]\d{9}[A-Z]$')

@api.constrains('vat')
def _check_kra_pin(self):
    for partner in self.filtered('is_mfi_member'):
        if partner.vat and not _KRA_PIN_RE.match(partner.vat):
            raise ValidationError(_(
                'KRA PIN %s is not in the expected format A0123456789Z.'
            ) % partner.vat)

Kenya's Data Protection Act (2019) and ODPC regulations require every member to give written, informed, withdrawable consent before you collect their data. The shipped consent text is reviewed annually by ALN and lives in ir.config_parameter mfi.odpc_consent_text.

  • Purpose: extended at member onboarding to cover credit scoring, mobile money lookup, CRB submission, and dunning calls.
  • Retention: 7 years post account-close per CBK Prudential Guideline CBK/PG/22.
  • Withdrawal: members can withdraw consent for marketing at any time via iBANK → Privacy.
  • Cross-border: data stays in Kenya unless the tenant has registered with ODPC as a data exporter.

CBK reporting calendar

The country profile ships the 2026 CBK reporting calendar so the dashboard can warn you when a return is due.

ReturnFrequencyDueModule
DTM-1 Statement of Financial PositionMonthly20th of following monthmfi_reports
DTM-2 Statement of Comprehensive IncomeMonthly20th of following monthmfi_reports
DTM-3 Liquidity StatementWeeklyFollowing Wednesdaymfi_treasury
DTM-4 Capital AdequacyQuarterly15th of following monthmfi_reports
DTM-5 Large ExposuresQuarterly15th of following monthmfi_reports
DTM-6 Sector ConcentrationQuarterly15th of following monthmfi_reports
DTM-7 Insider LendingQuarterly15th of following monthmfi_reports
DTM-8 Geographical DistributionAnnually31 Marchmfi_reports
IFRS 9 ECL summaryQuarterly30 days post quarter-endmfi_ifrs9
Goldberg AML/CFT (FRC-1)Monthly15th of following monthmfi_audit

SMS short codes and senders

Africa's Talking and Safaricom Bulk SMS each need configuration in the country profile so dunning, OTP, and statement texts go out from the right sender.

UseSender IDProviderCost (KES)
OTP for iBANK loginMFI-OTPSafaricom Bulk0.80 per SMS
Dunning reminderMFIPAYAfrica's Talking0.50 per SMS
Statement dispatchMFISTMTSafaricom Bulk0.80 per SMS
Marketing (opt-in only)MFIAfrica's Talking0.50 per SMS
Note — Sender IDs must be pre-registered with the Communications Authority of Kenya. Lead time is 5–10 working days. Apply at least two weeks before go-live.

Public holidays 2026

Public holidays affect interest accrual (use act/365 with holidays excluded for some products) and the dunning calendar (no SMS on a public holiday). The shipped holiday list for 2026:

  • 1 Jan — New Year's Day
  • 3 Apr — Good Friday
  • 6 Apr — Easter Monday
  • 1 May — Labour Day
  • 1 Jun — Madaraka Day
  • 10 Oct — Huduma Day (Utamaduni)
  • 20 Oct — Mashujaa Day
  • 12 Dec — Jamhuri Day
  • 25 Dec — Christmas Day
  • 26 Dec — Boxing Day
  • Variable — Idd ul-Fitr, Idd ul-Adha (set 30 days prior by Chief Kadhi)

Worked scenarios

Scenario — A new member arrives with a malformed KRA PIN

Setting: Branch counter, Wednesday afternoon. Mary is a new tea-trader applying to join Bridge MFI. The PIN on her certificate is A12345678Z — 10 chars, not 11.

CharacterRole
Mary MutuaNew member applicant
Peter OtienoBranch loan officer
Florence AchiengSystem admin remote

Timeline

  1. Day 1, 14:20: Peter enters the PIN on Mary's member form. Save triggers the constraint and BridgeERP raises a ValidationError. (Member draft, save rejected)
  2. Day 1, 14:22: Peter inspects the certificate Mary brought — it is a 2014 PIN printed before the format change. (Manual check)
  3. Day 1, 14:25: Peter calls KRA iTax at 020-4999999 and requests Mary's updated PIN. (External KRA portal)
  4. Day 1, 14:40: KRA confirms the new format is A001234567B. Peter updates the field. (Validation passes)
  5. Day 1, 14:42: Peter saves. Member moves to kyc_pending. (mfi.member.state = kyc_pending)

Outcome — Mary's KYC continues without leaving the country-profile rules; the malformed PIN never enters the database.

Reference

ir.config_parameter keys set by country profile

KeyDefault for KenyaNotes
mfi.country_codeKEISO-3166 alpha-2
mfi.base_currencyKESLocks after first member
mfi.kra_pin_requiredTrueSet False for SACCO with informal members
mfi.odpc_consent_textReviewed annually
mfi.cbk_reporting_activeTrueDisables for non-DTM lenders
mfi.sms_providerafricastalkingor 'safaricom_bulk'
mfi.sms_otp_senderMFI-OTPMust be pre-registered with CA
mfi.daraja_environmentproductionor 'sandbox'
mfi.business_days_per_year260Used for act/360 interest accrual
mfi.timezoneAfrica/NairobiMust match OS tz

Locale fields on res.company

FieldValueEffect
currency_idKESDefault currency on every journal
country_idKenyaDrives address format
partner_id.vatKRA PIN of MFIStamped on invoices
account_fiscal_country_idKenyaDrives tax position

Troubleshooting

SymptomLikely causeFix
Cannot change currency after a member existsmfi.base_currency_locked is TrueThis is by design. To change currency, run the migration tool and rebook every transaction — do not flip the parameter.
SMS sender showing as 'AFRICASTKNG' instead of 'MFI-OTP'Sender ID not approved by CA yetApproval takes 5–10 working days; use default sender in the meantime and update mfi.sms_otp_sender once the CA letter arrives.
CBK calendar shows wrong due dateTime zone drift between OS and databaseSet both to Africa/Nairobi; restart container; re-run mfi-doctor calendar.
ODPC consent text shows blank on iBANKir.config_parameter cleared during a database copyRe-run ./mfi-doctor reseed odpc to repopulate from the shipped template.
Eid holiday not on calendarChief Kadhi has not announced yetEdit resource.calendar.leaves manually when Gazette is published; the shipped data leaves Eid blank.

See also

Was this page helpful?