IFRS 9 — Expected Credit Loss

IFRS 9 is the international accounting standard that replaced the old "incurred loss" provisioning model with a forward-looking Expected Credit Loss (ECL) model. Every quarter end the system computes a provision number that lands in the trial balance, flows into CBK's quarterly return, and gets defended in the external audit. This page is the map of how it all fits together.

IFRS 9 runs
Quarterly run history with totals.

At a glance — IFRS 9 in this system is four ingredients × three stages × one engine. Ingredients: PD (probability of default), LGD (loss given default), EAD (exposure at default), and a macro overlay. Stages: 1 (12-month ECL), 2 (lifetime ECL, no impairment), 3 (lifetime ECL, credit-impaired). Engine: a quarterly batch that snapshots every loan, classifies it, computes ECL line-by-line, and posts one journal per portfolio segment to the GL.

Why IFRS 9 matters for a Kenyan MFI

Every regulated microfinance bank in Kenya files quarterly returns to the Central Bank of Kenya under prudential guideline CBK/PG/04 and audited annual accounts under IFRS 9 (effective 2018). The two numbers diverge — CBK still uses a watch/substandard/doubtful/loss buckets-and-rates schedule, while IFRS 9 uses forward-looking ECL — so the system computes both and the higher figure drives capital. Getting either wrong is a finding on the audit; getting both wrong is a CBK supervisory letter.

Beyond the legal angle, IFRS 9 is also how the board sees credit risk. The CFO walks into every quarterly board meeting with one number: 'Our ECL coverage ratio is X% of the gross book.' If that number jumps sharply, the board wants to know why — was it macro deterioration, a sectoral stress, or one big group loan slipping into Stage 3? The audit pack page is what answers that question.

The three-stage model

Macro scenarios
Base / Optimistic / Downside scenarios with weights.

Every loan, every quarter, sits in exactly one of three stages. The stage drives whether ECL is computed over 12 months or over the full remaining life of the loan.

The biggest source of audit findings is stage transitions: a loan that should have moved to Stage 2 but didn't (under-provisioned), or a loan that bounced back to Stage 1 without a proper cure period (over-provisioning into prior year, under-provisioning now). The staging engine page documents the exact rules.

StageTriggerECL horizonInterest recognitionTypical coverage
Stage 1Origination, or performing with no SICR12-month ECLGross carrying amount0.5% — 3%
Stage 2Significant Increase in Credit Risk (SICR) since originationLifetime ECLGross carrying amount5% — 15%
Stage 3Credit-impaired (default, 90+ DPD, restructured-distressed)Lifetime ECLNet carrying amount (EIR × net)30% — 80%

The four ingredients

Each loan's ECL is computed as EAD × PD × LGD × discount, with a forward-looking macro overlay applied to the PD. The four ingredients each have their own configuration page and their own assumption owner.

IngredientWhat it isWhere it livesOwner
PDProbability of default over the relevant horizonifrs9.assumption (by segment × stage)Risk Manager
LGDLoss given default — % of EAD lost after recoveriesifrs9.assumption (by collateral type)Risk Manager
EADExposure at default — outstanding + undrawn × CCFComputed live from mfi.loanEngine (no override)
Macro overlayForward-looking scalar by scenarioifrs9.scenario (base/upside/downside × weight)CFO + Risk Committee

The quarterly cycle

ECL is computed quarterly, on the last calendar day of each quarter (31-Mar, 30-Jun, 30-Sep, 31-Dec). The process is the same every quarter — the deliverable is the journal entry that lands in March/June/September/December books, plus the audit pack that gets emailed to the partner the following week.

  1. T+0: Quarter-end snapshot. Engine freezes every loan's outstanding, DPD, restructure status, collateral.
  2. T+1: Stage classification. Engine evaluates SICR rules per loan, assigns Stage 1/2/3.
  3. T+1: PD × LGD × EAD computation per loan, three runs (base/upside/downside).
  4. T+2: Probability-weighted ECL by scenario. CFO reviews and locks scenario weights.
  5. T+3: Journal entry generated (one per portfolio segment), posted in draft.
  6. T+4: Risk committee reviews; CFO approves; journal posted.
  7. T+7: Audit pack auto-built — model documentation, run logs, sensitivity, sign-offs.
  8. T+10: CBK return filed. ECL number reconciles to GL.

Each step in the cycle has its own detail page. Read them in order if you're new; jump straight to the page you need if you're operating.

What the live screen looks like

The screenshot below shows the production Runs list. Four quarterly runs across the year, each in posted state, with the gross book, weighted ECL, and coverage ratio visible at a glance. The CFO uses this view in board prep — one click into any run gives the full breakdown by segment, stage and scenario.

Worked scenarios

Scenario — CFO defends a sharp Q4 ECL increase to the board

Setting: Quarterly board pack, 5 January 2027. Q3 ECL was KES 8.4M (2.1% coverage); Q4 ECL is KES 14.7M (3.6% coverage). The board chair wants to know why.

CharacterRole
Florence AchiengCFO
Kimani MwangiRisk Manager
Mary MutuaHead of Credit
Peter OtienoBoard chair
Aisha HassanExternal audit partner (observer)

Timeline

  1. Dec 28: Florence locks the Q4 macro scenarios. Downside weight raised from 20% to 35% on Risk Committee instruction (drought outlook + CBK rate hike). (ifrs9.scenario weights versioned)
  2. Dec 31, 23:59: Quarter-end snapshot fires automatically. 4,217 loans frozen with state. (ifrs9.run created, state=snapshotted)
  3. Jan 2, 09:00: Kimani runs the staging engine. 138 loans transitioned Stage 1 → Stage 2 (mostly agriculture sector — 30-day DPD breach plus sector watchlist trigger). (state=staged)
  4. Jan 2, 11:30: Engine completes PD/LGD/EAD across all three scenarios. Weighted ECL: KES 14.74M. (state=computed)
  5. Jan 3, 10:00: Mary cross-checks Stage 2 list against her watchlist. Two loans she expected to be Stage 3 are still Stage 2 — Kimani checks: both restructured last quarter, in cure period. (Cure-period flag on loan record)
  6. Jan 3, 14:00: Florence approves; journal of KES 6.31M (the increment) posts to GL account 5520 Impairment Loss. (state=posted, account.move id 8842)
  7. Jan 5, 09:00: Board pack distributed. ECL bridge shows: +KES 2.1M staging migration, +KES 3.4M macro overlay (downside weight up), +KES 0.81M new originations. (Audit pack section 4)
  8. Jan 5, 15:00: Board meeting. Florence walks Peter through the bridge. Aisha (auditor) confirms the model documentation and sign-offs are in order. (Minute item 7.3)

Outcome — Board accepts the ECL number. Risk Committee asked to revisit agriculture sector exposure cap in Q1 2027.

Reference

Key BridgeERP models in the IFRS 9 app

ModelPurposeKey fields
ifrs9.runOne quarterly runname, period_end, state, total_ead, total_ecl, scenario_ids
ifrs9.run.lineOne loan in a runloan_id, stage, ead, pd_12m, pd_lifetime, lgd, ecl_base, ecl_upside, ecl_downside, ecl_weighted
ifrs9.assumptionPD/LGD parameter set, versionedsegment_id, stage, pd_value, lgd_value, valid_from, valid_to
ifrs9.scenarioMacro scenario + weightname, type (base/upside/downside), weight, macro_factors_json
ifrs9.staging.ruleSICR / Stage transition rulename, sequence, condition_python, target_stage
ifrs9.audit.packAuto-built audit bundlerun_id, document_ids, sign_off_ids, state

Access groups

GroupReadWriteApprove
MFI / IFRS 9 / ViewerYesNoNo
MFI / IFRS 9 / AnalystYesYes (draft only)No
MFI / IFRS 9 / Risk ManagerYesYes (assumptions, scenarios)No
MFI / IFRS 9 / CFOYesYesYes (lock + post)
Accounting / BillingRun summary onlyNoNo

Troubleshooting

SymptomLikely causeFix
ECL number swings dramatically quarter-to-quarter for no obvious portfolio reason.Scenario weights edited mid-quarter without versioning, or PD assumptions updated without recomputing prior quarters.Open the run audit log (Run → Audit tab). Compare assumption-version IDs with prior quarter. If they differ, document the change in the assumption-change register and refer to the audit pack.
Run stuck in computing state for more than 30 minutes.Long-running cron worker on a large book (>10k loans) or DB lock from a concurrent backup.Check (managed by the platform team — raise a support case if needed). If the worker is alive, wait. If killed, re-run from Run → Recompute; the engine is idempotent at the run-line level.
External auditor says "model documentation is insufficient."The audit pack was exported before all sign-offs were captured.Re-open the audit pack, ensure the four sign-offs (Analyst, Risk Manager, CFO, Internal Audit) are all present, then regenerate the PDF. See audit pack.
ECL coverage looks unreasonably low (e.g. 0.3%) on a 30-day book.Macro overlay scenario weights default to 100% upside — usually because someone copied a sandbox tenant.IFRS 9 → Scenarios. Confirm weights sum to 100% with base ~50%, upside ~20-25%, downside ~25-30%. CFO must sign off any deviation.
Stage 3 loan count is zero despite obvious NPLs.Staging rules disabled, or DPD threshold mis-configured at 180 instead of 90.IFRS 9 → Configuration → Staging Rules. Activate the default rule set and verify DPD ≥ 90 → Stage 3 is sequence 10 and active.

See also

Was this page helpful?