Sign in

Operator credentials, then your authenticator code. Sessions end after 15 idle minutes.
Every sign-in requires a 6-digit code from Google Authenticator, Microsoft Authenticator, or any standard authenticator app. First sign-in walks you through enrolment.

View the design preview (no sign-in needed) →

Enter your code

Open your authenticator app and enter the 6-digit code for .
This step expires in 5:00

Enrol your authenticator

Open Google or Microsoft Authenticator, choose Add account, and scan:
Can’t scan? Enter the setup key manually
Account name
Setup key (shown once — never written down anywhere else)
Enrolment expires in 5:00
The bank stores this secret encrypted; codes are single-use. If you lose the phone, an administrator resets your enrolment.

Change password

First sign-in uses a password someone else created for you. Set your own before continuing — this signs out every session, including this one.
Staging -
AO
Adaeze O. · Operations
Notifications
  • AML case A-2214 — STR filing clock under 22 hours. Assigned to compliance.
  • Reversal ₦620,000 waiting on your second approval for 2h 14m.
  • Till 04 closed clean — ₦0.00 variance at 14:02.

Good afternoon, Adaeze

Sunday 24 August · accounting day 2026-08-24 is open · all systems nominal
NIBSS NIP · 240 ms
Ledger tie-out · 0.00 variance
Kafka lag · 0.4 s
VAS · IBEDC degraded, failover active
Approvals · 7 waiting on you →
Total deposits
0bn
+2.1% this week
Transactions today
0
+8.4% vs last Sunday
Throughput now
0 TPS
peak today 1,286
Success rate
0%
+0.03 pts
Active customers
0
+1,204 today

Transaction volume — 24 hours

All channels · 5-minute buckets · times are WAT

00:0006:0012:0018:0023:551.6k0.8k0 peak 1,286 TPS

Needs attention

View all →

Everything below has a deadline clock

Reversal ≥ ₦500K awaiting second approval2h 14m
Tier-3 upgrade — document reviewSLA 3h
AML case A-2214 — structuring pattern
In-doubt NIP transfer (outbound ↗) — TSQ cycle 3auto
Till 04 closed with ₦0.00 varianceclean

Latest transactions

Live · click any row for the full posting and state history

TimeReferenceCustomerTypeChannelAmountStatus
14:32:11PUP-TRF-9F27B1Chinedu OkaforNIP transferMobile₦250,000.00Completed
14:32:08PUP-BIL-4C11A9Bunmi AdeyemiAirtime · MTNMobile₦5,000.00Completed
14:31:59PUP-TRF-8E03D4Halima BelloNIP transferPOS₦1,400,000.00TSQ · in doubt
14:31:45PUP-DEP-2A76F0Agent 00412 · NnewiCash depositPOS₦82,500.00Completed
14:31:30PUP-TRF-7D9910Emeka & Sons LtdBook transferPartner API₦3,120,000.00Awaiting approval
14:31:12PUP-BIL-1B44C7Ngozi EzeElectricity · IBEDCMobile₦12,000.00Auto-reversed

My approvals

Everything waiting on YOU, across every module — and nothing can be approved without opening its full review first
Waiting on me
0
across 6 modules
Oldest item
2h 14m
SLA 4h
Breaching within 1h
0
the reversal
Approved by me today
0
0 rejected
TypeWhat needs your decisionAmountRequested byWaitingSLA
ReversalDuplicate POS debit — Agent 00412, customer already refunded once₦620,000.00Tunde A.
TransferCorporate transfer above mandate threshold — needs class-A signatory rule check₦3,120,000.00Partner API · Emeka & Sons
JournalManual journal — branch expense correction (JRN-2211)₦48,200.00Finance · Kemi O.
ChargeInterbank fee band 2 change · v14 → v15, effective 01 Sep₦26.88 → ₦25.00Product · Adaeze O.
MandateEmeka & Sons mandate v3 → v4 — threshold raise + new class-B signatoryRelationship · Bola F.
KYCTier-3 upgrade — Halima Bello, CAC + address documents attachedOnboarding desk
ChartActivate GL 41180 · Reactivation fee income (mapped Form 1000 · 30220)Finance · Kemi O.

There is deliberately no approve button on this list. Approval happens only inside the full review — after you have seen what changes, who asked, the before/after, and the evidence. An approval you could give without reading is not a control.

Customers

312,554 customers · type in the box to filter the table live
Tier 1
0
64%
Tier 2
0
27%
Tier 3
0
9%
Pending KYC review
0
oldest 2h 50m
CustomerTypePhonePrimary NUBANTierKYCTotal balanceAcctsLast activityRisk
Chinedu OkaforIndividual0803 221 44100234118765Tier 3Verified₦4,182,330.55314:32 todayLow
BABunmi AdeyemiIndividual0805 114 90980234102211Tier 2Verified₦482,120.001yesterdayLow
HBHalima BelloIndividual0902 337 55210234110034Tier 3Verified₦2,930,700.10222 AugMedium
ESEmeka & Sons LtdCorporate0811 400 22870234099812Tier 3Verified · CAC₦18,455,002.44209:15 todayLow
NENgozi EzeIndividual0703 992 11450234121490Tier 1Docs in review₦61,240.00119 AugLow
MIMusa IbrahimIndividual0908 220 77140234130267Tier 2Verified₦734,910.85107:58 todayLow
ANAdaobi NwankwoIndividual0812 664 00930234141822Tier 1BVN mismatch₦8,300.00117 AugMedium
GTGombi Traders Co-opCorporate0813 555 81020234150773Tier 2Verified₦5,204,118.00221 AugLow
Rows 1-8 of 312,554 (server-side; sort and filters apply to the full base)page 1 of 39,070

Accounts

Every balance is a sum of ledger postings — nothing here is a stored guess
Open accounts
0
+1,310 this week
Dormant
0
6.3%
Post-no-debit
0
all dual-approved
Active liens
0
₦84.2M held

Recently touched accounts

Status changes, liens, and limit overrides — each row carries its approval trail

NUBANCustomerProductBalanceLast eventStatus
0234118772Chinedu OkaforBusiness Current₦270,000.00₦50,000 block · court order · 22 AugPartial block
0234121490Ngozi EzeEveryday Savings₦61,240.00limit override expired · 20 AugActive
0234099812Emeka & Sons LtdCorporate Current₦18,455,002.44mandate updated · 2 signatories · 18 AugActive
0234141822Adaobi NwankwoEveryday Savings₦8,300.00PND pending 2nd approval · 24 AugPND proposed
0234130267Musa IbrahimEveryday Savings₦734,910.85dormancy sweep notice · 15 AugPre-dormant

Limit overrides in force

Every override has an expiry — none are forever

Emeka & Sons Ltd · daily transfer₦50Mexpires 31 Aug
Gombi Traders Co-op · single transfer₦10Mexpires 30 Sep

Product distribution

Accounts by deposit product

Everyday Savings 61%
Business Current 22%
Ajo Target Savings 11%
Fixed Deposit 6%

Virtual accounts

Collection rails: every payer gets their own NUBAN, so money arrives pre-labeled and reconciles itself
Active virtual NUBANs
0
+2,140 this week
Collections today
0M
+14%
Auto-matched
0%
sweeps < 5 s
Unmatched queue
0
oldest 38 min
Expected deposits open
0
partner-registered

Pools

Static pools live forever; dynamic pools mint per-invoice numbers that expire. Sweeps post through the same idempotent ledger path as everything else.

PoolOwnerTypeIssuedCollected todaySweep targetState
VA-KOBO-01KoboPay LtdStatic · per sub-customer22,408₦148,220,400partner settlement walletActive
VA-AGRO-02AgroLend NGDynamic · per invoice · 24h expiry1,204 open₦42,110,000hold until matchedActive
VA-SCH-03Gombi Schools collectionsStatic · per student3,180₦24,470,500school current accountActive
VA-OLD-00Retired pilot poolStatic2,000₦0Tombstoned · inbound rejected

Inbound collections — live

Every credit resolves to matched or lands in the queue below — a payment can never silently sit in suspense. Try resolving the unmatched one.

TimeVirtual NUBANPayerAmountMatched toState
14:33:029902114408GTBank · ADEBAYO K.₦86,000KoboPay · sub-cust 8841Matched · swept 2.1s
14:32:479902551203Access · INV-2244 ref₦1,250,000AgroLend · invoice 2244Matched · expected deposit
14:31:209902114408UBA · C O EMENIKE₦86,000Unmatched · payer name differs
14:30:449902660071Zenith · HALIMA B.₦45,000Gombi Schools · student 0771Matched · swept 1.8s
14:29:129902553390Opay · expired invoice₦18,500invoice 2199 · expired 09:00Rejected · auto-returned to sender

Expected deposits — partner-registered

A partner announces an inbound before it happens; arrival auto-matches and fires their webhook

AG-3321AgroLend · ₦2,400,000 · expires 18:00Waiting
KB-1108KoboPay · ₦680,000 · expires 16:30Waiting
AG-3318AgroLend · ₦1,250,000 · INV-2244Arrived 14:32 · webhook 200

Collections by pool — today

KoboPay static ₦148.2M
AgroLend dynamic ₦42.1M
Gombi Schools ₦24.5M

Match rate, sweep latency, and unmatched aging export per partner — and every virtual-account balance rolls up into the CBN return schedules automatically.

Payments operations

Every transfer is in exactly one state · no transfer can be lost
Completed today
0
99.87%
In flight
0
normal
In doubt · TSQ
0
auto-resolving
Auto-reversed
0
0.06%
Awaiting approval
0
oldest 2h 14m

Approval queue — maker-checker in action

All my approvals →

Nothing here has an approve button — Review opens the full before/after and evidence first; approval lives inside the review

ActionProposed byAmountAgeApprovals
Reversal — duplicate POS debit, Agent 00412Tunde A.₦620,000.000 of 2
Book transfer above corporate thresholdPartner API · Emeka & Sons₦3,120,000.001 of 2
Manual journal — branch expense correctionFinance · Kemi O.₦48,200.000 of 2

In-doubt transfers — the reconciler is on them

Both directions live here. Outbound ↗ in-doubt = we sent money and NIBSS has not given a final answer — the customer's money sits safely HELD (never gone) while the status query (TSQ) cycles until a final answer forces completion or automatic refund. Inbound ↙ in-doubt = another bank says they sent money to us — the credit is PROVISIONAL (visible but not spendable) until settlement confirms it, so a forged or failed inbound notice can never become spendable money. Click a row for its full state history.

DirectionReferenceCustomerAmountCounterpartyStateTSQ cycleNext
Outbound ↗PUP-TRF-8E03D4Halima Bello₦1,400,000.00Zenith · 2081…HELD · awaiting NIBSS3 of 1240 s
Outbound ↗PUP-TRF-6B22E8Musa Ibrahim₦75,000.00Access · 0044…HELD · awaiting NIBSS1 of 1212 s
Outbound ↗PUP-TRF-5A97C2Emeka & Sons Ltd₦960,000.00UBA · 1023…FINAL · posting4 of 12confirming
Inbound ↙IN-GTB-99A1E0Chinedu Okafor₦250,000.00GTBank · 0044…PROVISIONAL · awaiting settlementsettle window

Loans

Portfolio ₦412M · provisioning computed continuously per CBN prudential rules
Active loans
0
+38 this week
Portfolio
0M
+3.2%
Portfolio at risk (30d)
0%
−0.4 pts
Provisions held
0M
auto-posted
Applications in review
0
SLA on track

Application pipeline

Each application is an orchestrated process — nothing waits invisibly

RefApplicantAmountProductStageSLA
LN-8842Emeka & Sons Ltd₦2,000,000Working capital · 12mCredit review · Tunde A.
LN-8843Bunmi Adeyemi₦350,000Micro trade · 6mAuto-approved · score 742
LN-8844Gombi Traders Co-op₦1,200,000Group lending · 9mGuarantor docs missing

Loan portfolio — 4,211 running loans

View all →

Click a loan for its 360 — schedule, classification history, collateral, postings. One full profile is mocked: LN-7710.

LoanBorrowerProductOutstandingNext dueDays overdueClass
LN-7710Chinedu OkaforWorking capital · 12m₦1,046,220.0001 Sep0Performing
LN-7581Bunmi AdeyemiMicro trade · 6m₦118,400.0004 Sep0Performing
LN-7203Gombi Traders Co-opGroup lending · 9m₦764,000.0028 Aug12Watchlist
LN-6844Halima BelloWorking capital · 12m₦402,110.0015 Jul41Substandard
LN-6019Musa IbrahimMicro trade · 6m₦58,300.0002 May115Lost · 100% provisioned

Provisioning ladder — CBN prudential floors, tenant may tighten, never loosen

Classification and provisioning are computed continuously from days-overdue — this ladder IS the rule. A tenant value below the CBN floor is refused at save, not warned about.

ClassDays overdueCBN floorThis bankPortfolio in classProvision held
Performing01%1%₦379.1M₦3.79M
Watchlist1–305%7% · tightened₦17.5M₦1.23M
Substandard31–6020%20%₦6.2M₦1.24M
Doubtful61–9050%50%₦3.7M₦1.85M
Lost90+100%100%₦5.9M₦5.90M

Specific provisions above sum to ₦14.01M; the ₦18.7M KPI adds the general provision on the performing book and interest-in-suspense (both broken out in the Reports drill-down). Nothing here is hand-entered — the ladder drives postings automatically as loans age, and every provision movement is a ledger entry with this ladder version stamped on it.

Arrears buckets

Aging drives provisioning automatically

Current ₦379.1M
1–30 days ₦17.5M
31–90 days ₦9.9M
90+ days (non-performing) ₦5.9M

Collections today

Auto-debit with retry policy · failures queue for follow-up

Instalments collected₦8,204,11096.2%
Retry queue₦312,4002nd attempt 18:00
Escalated to recovery₦64,9003 loans

Restructuring, recovery & write-offs

The lifecycle beyond the pipeline — every step dual-approved, every provision auto-posted

LN-8611Restructure · tenor 9 to 12 months · customer letter on file0 of 2
LN-8420Write-off proposal · ₦64,900 · provisioned 100% · board memo attached0 of 2
LN-8390Guarantor claim · guarantor notified, response due in 5 daysWaiting

Fixed deposits

₦92.4M under management · interest accrues daily through the ledger
Active deposits
0
+11 this month
Principal held
0M
+6.0%
Maturing in 30 days
0
₦9.1M
Avg rate
0%
tenor-weighted

Maturing soon

Rollover instructions captured in-app; unanswered maturities pay out to the linked account

RefCustomerPrincipalRateTenorMaturesInstruction
FD-2210Chinedu Okafor₦500,00014.0%180d12 OctRoll principal
FD-2190Halima Bello₦2,000,00013.5%90d02 SepAwaiting choice
FD-2144Gombi Traders Co-op₦1,500,00012.8%365d28 AugPay out

Premature termination requests

Penalty computed by the product's rule, shown to the customer before they confirm

FD-2201Musa Ibrahim · ₦300,000 · 42 days earlypenalty ₦4,830Awaiting dual approval
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Bills & value-added services

Two-phase vending: hold, vend, confirm or auto-reverse — no ambiguous endings
MTN · 99.9% · 1.1s
Airtel · 99.7% · 1.3s
DSTV · 99.4% · 2.0s
IBEDC · 91.2% · failover to backup provider
EKEDC · 99.1% · 1.8s
Vends today
0
+12%
Value
0M
+9%
Auto-reversed
0
0.29% · all refunded
In doubt
0
re-querying

Vend monitor

The IBEDC failure below refunded itself before the customer could call support

TimeCustomerServiceAmountProviderState
14:31:12Ngozi EzeElectricity prepaid₦12,000IBEDC · primaryFailed → auto-reversed 14:31:58
14:31:40Ngozi EzeElectricity prepaid · retry₦12,000IBEDC · backupToken delivered
14:30:52Bunmi AdeyemiAirtime₦5,000MTNCompleted · 1.1s
14:30:18Agent 00412DSTV Compact₦19,800DSTVVend sent · confirming
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Agency & POS

1,204 agents · 1,431 terminals · commission visible to agents in real time
Active agents
0
+18 this month
Agent volume today
0M
+11%
Terminals online
0
95.2%
Float requests
0
rule-checked
Open disputes
0
oldest 1d 4h

Float requests — the single-pending rule at work

An agent can hold one pending request; caps derive from their own 30-day volume. Try approving both rows.

AgentAggregatorRequestedDaily capCheck
00412 · Nnewi MarketSE Aggregation Ltd₦400,000₦960,000Within cap
00891 · GombiNE Agents Co₦1,200,000₦700,000Exceeds cap

Terminal estate

Full device lifecycle: assign, replace, transfer, sync to the terminal-management system

TerminalSerialAgentModelLast seenState
2PUP0412SN-8821330700412 · NnewiPAX A9202 min agoOnline
2PUP0508SN-8821411200508 · YolaPAX A9206 hr agoOffline
2PUP0733SN-88216620unassignedTopwise T1In store

Teller & cash operations

Tills and vaults are ledger accounts — a shortage surfaces the same evening, attributed to a session
Open tills
0
2 branches
Cash in tills
0M
live
Vault balance
0M
HQ · Gombi
Today's variances
₦0.00
4 clean closes

Till sessions

Try closing till 03 — the reconciliation runs before your eyes

TillTellerOpenedOpening floatExpected nowState
TILL-03Ruth D.08:02₦500,000₦823,400Open
TILL-04Ibrahim S.08:05₦500,000Closed 14:02 · ₦0.00 variance
TILL-05Amina K.08:11₦300,000₦412,150Open

Cheque register

CHQ-0088Emeka & Sons Ltd · ₦1,500,000Clearing · day 2 of 3
CHQ-0087Gombi Traders Co-op · ₦480,000Cleared · funds released
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Risk & findings

The apparatus an examiner looks for: an approved framework, an owned register, indicators with thresholds, and every finding tracked to evidence of closure
ERM framework
v2 · unapproved
Board approval outstanding 214 days
Risks on register
0
6 extreme · 11 high
KRIs breaching
0
2 at regulatory limits
Open findings
0
17 from the last examination
Implementation rate
0%
1 of 18 closed
THE GOVERNANCE GAP THE EXAMINERS NAMED
The Enterprise Risk Management Framework exists but was never Board-approved; the risk function is absent from the organogram; the Risk Management Committee did not meet during the period. Every item below is tracked here precisely so that the next examination reads differently — the register cannot be closed without evidence, and it ages in public.

Every examiner recommendation, with an owner, a due date and the evidence that closes it. A finding raised twice escalates by itself — a regulator repeating themselves is telling you the control never existed.

FindingRecommendationOwnerDueOverdueStatus
F-2026-02 CriticalMake additional provision of ₦25.59m to meet the examiners' recommended provisionsCFO30 Jun 202631dOverdue
F-2026-07 CriticalThe Board and Management should approve the Enterprise Risk Management FrameworkMD30 Apr 202692dOverdue
F-2026-11 Major · repeatReconcile accounts with correspondent banks monthly repeat of F-2024-03Finance31 May 202661dEvidence submitted
F-2026-08 MajorBoard committees should be functional and meet at least once a quarterCompany Sec.30 Sep 2026In progress
F-2026-15 ModerateReview the compliance manual to guide the compliance officerCompliance31 Dec 2026Closed · evidence
Showing 5 of 23 · 17 open from the 31 March 2026 examination Ageing report →

A finding cannot be closed by the person who owns it, and cannot be closed at all without evidence attached. Accepting a risk instead is allowed — but it is a Board decision, recorded with its rationale, and it stops the clock honestly rather than quietly.

Compliance & AML

Filing clocks are real deadlines — the STR window is 24 hours from detection
Open cases
0
1 urgent
STRs filed this month
0
all inside 24h
CTRs auto-generated
0
≥ ₦5M rule
Screening hits pending
0
review today

Case queue

Click a case for its evidence bundle

CasePatternSubjectExposureFiling clockAssigned
A-2214Structuring (sub-threshold)Adaobi Nwankwo + 3 linked₦8,740,000Kemi O.
A-2215Velocity spikeMusa Ibrahim₦1,120,000review todayKemi O.
A-2216Sanctions near-matchInbound remitter₦440,000funds heldunassigned
A-2211New-account burstAgent 00891 openingscleared — false positiveclosed

KYC review queue — the busiest desk of the day

Every item opens its full review: documents, checks, and the face-match evidence side by side — same review-first rule as money

ItemCustomerWaiting
Tier-3 upgradeHalima Bello · docs complete
Doc re-checkNgozi Eze · resubmitted address proof
BVN mismatchAdaobi Nwankwo · name field disagrees
Showing 3 of 12 waitingView all →

Monthly attestation

The AML/KYC page of the CBN return — generated, not hand-ticked

AML/KYC returns rendered to agenciesYes — evidence attached
STR filings inside deadline3 of 3
Watchlist screening coverage100% of book

Consent & data-subject rights (NDPA)

Consent is per purpose and revocable; a revocation is honoured everywhere the same minute. Requests carry statutory clocks.

Chinedu Okafor · transactional alertsGranted · Mar 2024
Chinedu Okafor · marketingRevoked 12 Aug · honoured
Access request · CUS-11840Due in 6 days
Erasure request · CUS-09121Legal-hold check

AML rule thresholds · v9

Compliance-owned configuration — every change dual-approved, every version kept

Velocity windows1h · 24h · 7d · 30d
New-beneficiary hard cap₦3,000,000 / day
Structuring watch band₦4.5M — ₦5M
CTR auto-file threshold₦5M individual · ₦10M corporateregulator-anchored
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Process orchestrator

Durable business processes · nothing stalls silently · deadline clocks are live
Running now
0
11 definitions
Waiting on humans
0
4 queues
SLA breaches
0
escalated
Completed today
0
0 failed

Loan approval · instance LN-8842

₦2,000,000 working capital — Emeka & Sons Ltd · started 11:20 · definition version 7 · every step journaled

application received
credit score · 714
AML screen · clear
credit review · Tunde A. ·
approve → disburse
notify + CRMS

Find an instance

Stuck instances — the 15-minute detector

An instance that stops moving without a reason alerts at 15 minutes — nothing can wait invisibly. Every intervention below is dual-approved and journaled onto the instance.

InstanceDefinitionStuck atForWhy
VD-88213vend-airtime v4provider confirmMTN requery exhausted · refund pending window
LN-8839loan-approval v7credit reviewassigned officer signed out · queue empty at Yola

Human task queues

Each task opens with full context in a side panel — no tab hunting

QueueWaitingOldestSLAOnline
Credit review91h 12mon track3 officers
KYC document review182h 50m1 near breach2 officers
Reversal approvals42h 14m1 breached · escalatedleads paged
Dispute responses648mon track4 agents

Recently completed instances

TU-99104Tier upgrade · Halima Bello6 steps · 3h 40mCompleted 13:58
DS-40021Dispute · Agent 00412 double-debit9 steps · 1d 2hRefunded · evidence archived
RV-77310Reversal review · ₦120,0004 steps · 22mAuto-cleared under threshold

Reports

Every figure ties to the ledger to the kobo · every filing archived with a fingerprint
Ledger tie-out: 0.00 variance · 14:30

CBN / NDIC monthly return MMFBR · FinA

All 29 schedules of form MFB51027 — the exact workbook the bank files today, generated from the ledger

Trial balance

As of any date · drill to postings

Balance sheet form 300

Statement of assets & liabilities with CBN item codes

Profit & loss form 1000

Monthly statement, any period

Loan schedules 711–771

Classification, NPL, sectoral, maturity, interest rates

Deposit schedules 141–202

Structure, maturity profile, NDIC insured deposits

Gap analysis form 980

Asset-liability maturity gaps

AML filings goAML

STR / CTR queue · filing archive

CRMS credit extract

Borrower register submission

Statutory remittance

Stamp duty & electronic levy collected — remittance schedule

August return — draft preview generates live from the ledger

Form 300 excerpt with the CBN item codes — the draft the head of finance reviews before filing. Every line drills to its postings, and the cross-references (“Specify, MMFBR 711”) must agree or the return refuses to emit.

CodeItemAmount ₦’000Cross-check
10130Total Cash118= tills + vaults
10220Balances with Banks (Specify, MMFBR 221)412= schedule 221
10510Treasury Bills1,000= investment register
10710Micro Loans (Specify, MMFBR 711)12,804= schedule 711
10745Other Loans (Specify, MMFBR 746)9,922= schedule 746

29 of 29 schedules generated ✓ · tie-out 0.00 ✓ ·

Filing archive

What was filed, when, by whom — content-fingerprinted so "what did we file in March?" is retrieved, not reconstructed

FilingPeriodFiledByFingerprint
MMFBR monthly returnJul 202606 Aug · day 6 of 14Eli S. + Kemi O.a3f2…9c41
STR — case A-2199Jul 202618 Jul · hour 19 of 24Kemi O.77b0…e2ad
MMFBR monthly returnJun 202608 Jul · day 8 of 14Eli S. + Kemi O.c901…44f8

Ledger & accounting

The chart of accounts, journals, and the end-of-day ceremony — where the books prove themselves daily
GL accounts
0
6 classes
Postings today
0
both ledgers agree
Accounting day
24 Aug
open · closes 23:30
Last close variance
₦0.00
184 consecutive clean days

End-of-day close — dress rehearsal

Runs automatically at 23:30; the manual run here executes against a copy so you can watch the ceremony. A non-zero tie-out blocks the close and pages finance — the books cannot close wrong.

interest accrual
fee & levy sweep
ledger tie-out (both books, to the kobo)
day close + snapshot
idle

Chart of accounts

Every product and fee maps here before it can exist — click a row to drill toward its postings

GL codeAccountClassBalanceMapped products
20110Savings depositsLiability₦6,842,110,400.22Everyday Savings · Ajo · Kids Trust (draft)
20120Current depositsLiability₦1,578,004,118.90Business Current · Corporate Current
10710Micro loansAsset₦412,400,000.00all loan products
41100Fee incomeIncome₦412,806,220.10charge structures v1…v14
51200Interest expenseExpense₦122,400,880.00deposit products
10130Cash (tills + vaults)Asset₦22,710,000.00teller module

Bulk & scheduled payments

Standing orders, payroll batches, payment links and QR — the set-and-forget rails
Standing orders
0
next run 18:00
Batches this month
0
₦214M
Payment links active
0
+11 this week
QR collections today
0M
+9%

Scheduled & recurring transfers

Each run executes through the full payment machinery — fees, limits, AML — and a failed run retries then notifies, never silently skips

CustomerToAmountFrequencyNext run
Chinedu OkaforMama · GTBank 0122…₦50,000monthly · 25th25 Aug 08:00
Emeka & Sons LtdRent · Zenith 2081…₦1,200,000quarterly01 Sep 09:00
Gombi Traders Co-opAjo payout rotation₦180,000weekly · Fri29 Aug 17:00

Bulk batches

Payroll · August · 214 rows · ₦18.4MValidated · awaiting approval
Vendor batch 22 · 61 rows · ₦6.1MExecuting · 38 of 61
Vendor batch 22 — open the pipeline belowExecuting · 3 rows failed
Payroll · July · 212 rowsCompleted · 212/212

Payment links & QR

pup.ng/pay/emeka-inv2244₦1,250,000Paid
pup.ng/pay/ajo-fest₦5,000 fixedActive · 84 paid
pup.ng/pay/gombi-feesany amountActive

Batch pipeline — Vendor batch 22 · executing with failures (the honest mid-flight view)

Uploaded · 61 rows
Validated · 61/61
Approved · 2 officers
Executing · 38 done
Reconciled & closed

A failed row never blocks the batch and never disappears: it is named, reasoned, and waits for a decision. The batch cannot close while any row is undecided.

RowBeneficiaryAmountStatusReason
1–3838 vendors₦3,812,400Paid
14Okeke Cement Ltd₦412,000Failedbeneficiary bank returned 07 — invalid account
27Alh. Danladi Trading₦96,500Failedrail timeout · TSQ says NOT applied — safe to retry
41New Era Supplies₦188,000Failedname mismatch above tolerance (68%)
42–6120 vendors₦1,591,100Queuedexecuting in order

When every row is Paid, Refunded, or explicitly cancelled, the batch reconciles: total debits = total credits + refunds, proven to the kobo, and the closing report goes to the corporate customer automatically.

Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Tenants — platform operator

The reseller headquarters — visible only to the platform-operator role, never to a bank’s own staff
Tenants
0
1 live · 1 onboarding · 1 sandbox
Platform uptime
0%
90-day
Cross-tenant incidents
0
isolation enforced at query layer
Licence revenue (ann.)
0M
1 signed

Tenants

TenantCBN codeStatusModulesCertification
P-UP MFB (us)51027Liveall · USSD off (D-6)148/148 · 01 Aug
Harmony MFB · Ibadan51442Onboardingcore + bills · cards laterPending
SandboxDemo dataalln/a

Isolation guarantees

Every row tenant-stamped; queries scoped at the data layerEnforced
Per-tenant encryption keysEnforced
A tenant’s misconfiguration cannot touch another’s booksBy construction

Billing

Harmony MFB · 3-year licence₦120Msigned
Support tier24/7 · 99.99% SLAactive

Products & pricing

Launching a product is configuration, not code — every change is versioned and dual-approved
Deposit products
0
4 live · 3 draft
Loan products
0
all live
Charge structures
0
versioned
Pending activations
0
needs 2nd approver

Transfer fee structure · v14 Live since 01 Aug

Try proposing a band change — notice you cannot activate your own proposal

BandFromToFeeStatutory added
1₦1₦5,000₦10.75levy as applicable
2₦5,001₦50,000₦26.88levy as applicable
3₦50,001₦53.75levy + stamp duty

Charge catalog — every fee the bank levies, in one governed place

Each charge is versioned configuration with its own ledger mapping and scope. Changes are proposed → dual-approved → effective-dated, and every transaction records which charge version priced it. Statutory items are collected into their own ledger accounts and appear on the remittance report.

ChargeBasisRate / amountApplies toGLVersion
SMS alert feeper SMS delivered · billed monthly₦4.00customers with SMS alerts on41120v3
Account maintenance (CAM)per mille on debit turnover₦1 / ₦1,000current accounts41110v2
Interbank transfer feebanded per transfer₦10.75 / ₦26.88 / ₦53.75all channels41100v14 · bands above
Collections fee (virtual accounts)percent, capped0.5% · cap ₦100VA pools, per partner agreement41130v4
Agent commission structuresbanded, split with aggregatorper structureagency network41140v9
Card maintenancequarterly₦50.00active cards41150v1
Statement (branch print)per request · in-app free₦100.00all accounts41160v1
FD early-termination penaltyshare of accrued interest30%fixed deposits41170v2
Electronic levy statutoryper qualifying transfer₦50.00regulator-defined24510anchoredrate follows the circular
Stamp duty statutoryqualifying receipts₦50.00regulator-defined24520anchoredrate follows the circular

Waivers are first-class: a zero-SMS-fee on Kids Trust, or a fee holiday for a segment, is a scoped override with an expiry — proposed and dual-approved like everything else, never a hand edit. Statutory rows collect into liability ledger accounts (2xxxx) and feed the Statutory remittance report; income rows collect into 41xxx fee income.

Waivers — scoped, expiring, twice-approved

A waiver is a scoped override on a catalog charge with a MANDATORY expiry — it reverts by itself, so a discount can never quietly become permanent. Two named approvers by charge type, recorded on the waiver.

WaiverChargeScopeApproversExpiresStatus
Kids Trust — zero SMS feeSMS alert ₦4 → ₦0product: Kids TrustAdaeze O. + Eli S.31 Dec 2026Active
Emeka & Sons — collections capcap ₦100 → ₦80customer agreementBola F. + Eli S.31 Dec 2026Active
Yola launch — transfer-fee holidayband 1 ₦10.75 → ₦0branch: Yola · new customersAdaeze O. + Eli S.30 Sep 2026Expires in 36 days
Ramadan promostatement print ₦100 → ₦0all customersexpired · auto-reverted30 Apr 2026Expired — reverted itself

Loan products — the loan factory

A loan product is versioned configuration: interest method, bands, penalties, and its provisioning profile — every running loan records which product VERSION priced it, so a product change never rewrites an existing loan.

ProductMethodRate bandTenorPenaltyProvisioningVersion
Working capitalreducing balance22–28% p.a.6–18m1% flat on overduestandard ladderv3
Micro tradereducing balance26–30% p.a.3–9m1% flat on overduestandard ladderv5
Group lendingflat rate24% p.a.6–12mgroup guarantee firsttightened (Watchlist 7%)v2
BNPL merchantflat rate3%/month1–4mmerchant recoursetightenedv1
Staff loanreducing balance8% p.a.to 36mpayroll-deductedstandard ladderv2

Deposit products

Everyday Savings · 2.5% p.a.Livev6
Business Current · fee-basedLivev4
Ajo Target Savings · 5% lockedLivev2
Kids Trust · guardian-mandatedDraft · pending activationv1

Version history — transfer fees

  • v14 activated · proposed Kemi O. · approved Eli S. — band 2 fee ₦25.00 → ₦26.88
  • v13 activated · statutory levy mapping updated
  • v12 activated · new band 3 for high-value

Staff & roles

Least-privilege by default · every permission grant is itself an audited, approved change
Active staff
0
2 branches + HQ
Roles
0
deny-by-default
MFA enrolled
24 / 24
enforced — no exceptions
Access reviews
Q3 due
evidence auto-exported

Staff

NameRoleBranchMFALast activeStatus
Adaeze O.Operations officerHQ · GombiTOTPnowActive
Kemi O.Compliance officerHQ · GombiTOTP12 minActive
Tunde A.Credit officerHQ · GombiTOTP3 minActive
Eli S.Finance lead · approverHQ · GombiHardware key1 hrActive
Ruth D.TellerYola branchTOTPnowActive
Femi B.Support agentremoteRe-enrollment due2 dSuspended pending MFA

Roles — deny-by-default, every grant explicit

Click a role to load its permission grid below. Creating or editing a role is itself a maker-checker change — a permission grant activates only on a second officer's approval.

RoleMembersScopeSegregation classLast changedStatus
Operations officer6All branchesMaker12 Aug · approvedActive
Compliance officer2All branchesChecker02 Jul · approvedActive
Credit officer3All branchesMaker02 Jul · approvedActive
Finance lead1HQChecker · high-value18 Aug · approvedActive
Teller8Own branch · own tillMaker14 Jun · approvedActive
Head teller2Own branchChecker · cash14 Jun · approvedActive
Credit risk officer1All branches · no posting rightsChecker · credit + ladder25 Aug · approvedActive
Chief Risk Officer1All · risk, findings, KRIs · NO posting rightsChecker · independent25 Aug · approvedActive
CFO1All · financial config + high-value approvalsChecker · financial25 Aug · approvedActive
CEO1All · read + final approvals above thresholds · NO config, NO postingFinal approver only25 Aug · approvedActive
Auditor1All · read-onlyNeither — observe only02 Jul · approvedActive
Administrator1Platform config only — NO money permissionsSegregated from money02 Jul · approvedActive

Permission grid — Operations officer

Every permission is three-dimensional: View, Propose (maker), Approve (checker) — and the engine refuses any grid where one person can both propose and approve the same money action (segregation of duties, enforced at save, not by policy memo)

PermissionViewProposeApprove
Customers — profile & KYCYesYesNo — segregated
Customer PII (unmasked BVN/NIN)Step-up MFA + reason
Account status changesYesYesNo — segregated
Transfers & reversalsYesYesYes, if not proposer
Manual journalsYesNoNo
Charges & waiversYesNoNo
MandatesYesYesNo — segregated
Chart of accountsYesNoNo
AML casesSummary onlyNoNo
Staff & rolesYesNoNo
Reports & CBN returnsYesNoNo

Active sessions

Concurrent-session limits enforced; force sign-out is immediate server-side revocation, audited

Adaeze O. · console · HQ Gombisince 09:00 · 102.89.…this session
Tunde A. · console · HQ Gombisince 11:12Active
Ruth D. · teller station · Yolasince 08:02Active
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

API partners

A partner is a business CUSTOMER with programmatic access · its keys are separate, scoped, rotatable clients underneath it
Partners
0
business customers with API access
Active clients (keys)
0
9 live · 5 sandbox
Calls today
0
+6%
Webhook delivery
0%
first attempt
In dead-letter
0
1 partner endpoint down

Partners

Click a partner for its clients, sub-customers, usage and the KYC allocation — one full profile is mocked: KoboPay Ltd

PartnerCustomer recordClientsSub-customersCalls todayKYC responsibilityStatus
KoboPay Ltdcorporate · RC 992014422,408842,110Bank-retained · partner-collectedActive
AgroLend NGcorporate · RC 77120821,204142,880Bank-retained · partner-collectedActive
SwiftRemitcorporate · RC 4481203219,128No sub-customers · transfers onlyActive

Three different things, deliberately not blurred: the partner is the business customer; a client is one set of credentials belonging to that partner (production and sandbox are different clients, and so is each of the partner’s applications — so a leaked checkout key is revoked without killing their settlement job); a sub-customer is the partner’s own end user riding our rails.

Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Notifications

Event-driven · per-channel delivery tracking · provider failover
Sent today
0
push · SMS · email
Push delivery
0%
1.2s median
SMS delivery
0%
provider B failover ×2
OTP latency
0s
p95

Templates

Versioned, per-tenant brandable, data-minimised by rule

TemplateChannelsVersion
Credit alertpush + SMSv9
Debit alertpush + SMSv9
OTPSMS + voice fallbackv4
Loan due reminderpush + SMSv6
FD maturity choicepush + emailv2

Delivery issues

SMS provider A degraded 13:40–13:52Auto-failover · 0 lost
1,204 push tokens expired this weekRe-registration on next login
4 emails bounced (mailbox full)SMS fallback used

Routing rules — what gets sent, when, on which channel

Every rule fires off an event on the Kafka belt. Transactional and security rules are regulator- or safety-anchored — customers cannot mute them. Marketing respects consent (NDPA) and quiet hours. Rule changes are dual-approved with an effective date, like every other configuration.

Trigger eventTemplateChannelsCondition / timingCustomer can mute?
money creditedCredit alert v9push + SMSimmediate · SMS also sent if push undelivered in 60sNo — CBN alert
money debitedDebit alert v9push + SMSimmediateNo — CBN alert
transfer failed → auto-reversedReversal notice v2pushimmediate, with the refund referenceNo
new device signed inSecurity alert v5push + SMS + emailimmediate · all channels, alwaysNever — securitysafety-anchored
loan instalment dueLoan due v6push + SMS3 days before · 09:00 WAT · repeat day-ofSnooze only
fixed deposit maturingFD maturity v2push + email7 days before, then 1 day beforeYes
KYC document rejectedDoc rejected v3push + in-appimmediate, with the reason and a re-upload linkNo
monthly e-statement readyE-statement v4email1st of month · 06:00Yes
campaigns / promotionsCampaign templatespushquiet hours enforced 08:00–20:00 · consent requiredYes — consent (NDPA)

Sending and billing are deliberately separate: this screen decides when a message goes out; the ₦4 SMS alert fee it may incur is priced by the Charge catalog on Products & pricing — so a routing change can never silently change what customers pay, and a fee change can never silently change what they receive.

Audit log

Append-only and hash-chained — entries can be read forever and edited never
TimeActorActionTargetCorrelation
14:31:58system · reconcilerAuto-reversal posted (vend failure)PUP-BIL-1B44C7c-88412
14:20:11Adaeze O.Viewed customer profile (masked PII)CUS-10233 · Chinedu Okaforc-88399
14:02:07Ruth D. + Ibrahim S.Till 04 closed · ₦0.00 varianceTILL-04 session 2214c-88371
13:44:52Kemi O.AML case escalated to STR draftA-2214c-88340
12:19:33Eli S.Approved fee structure v14 activationcharge-structure 12c-88102
11:20:04Partner API · AgroLendExpected deposit registered₦2,400,000 · ref AG-3321c-87990

Chain verified 14:30 · block 40,221 · fingerprint 7d1c…90aa — any tampering with history breaks this seal visibly.

Administration

Tenant configuration — the surface a buyer bank would operate for themselves
Tenant: P-UP MFB · 51027

Institution

Legal nameP-UP MICROFINANCE BANK LTD
CBN institution code51027
State · LGAAdamawa · Gombi
LicenceTier 2 MFB
Regulatory contactEli Samson

Approval thresholds

Changing a threshold is itself a dual-approved change

Reversals require 2 approvers above₦100,000
Manual journals always require2 approvers
Corporate transfers require approval above₦2,000,000
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Cards

Issued through tokenizing processors — the full card number, CVV, and PIN never touch this platform
Cards issued
0
+204 this week
Virtual
0
83%
Spend today
0M
+7%
Frozen
0
customer-initiated 96%

Card registry

Try the freeze — it takes effect at the processor in under a second, and the customer sees it instantly in-app

HolderCardTypeControlsSpend todayStatus
Chinedu Okafor5060 99•• •••• 4412Virtualonline ✓ · intl ✗ · ₦200K/day₦42,300Active
Halima Bello5060 99•• •••• 8871Physicalonline ✓ · intl ✓ · ₦500K/day₦128,000Active
Emeka & Sons Ltd5060 99•• •••• 2205Virtual · expenseonline ✓ · merchant-locked₦610,500Frozen by customer

PCI DSS posture: the number shown is a masked token from the processor. Card webhooks post to the ledger through the same idempotent path as every other movement.

Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Currency exchange

Every conversion stores the exact rate version applied — reproducible forever
Currency pairs
0
NGN base
Conversions today
0
+9%
Volume today
$0K
+12%
Spread income
0M
this month

Live rate card · v212 Active since 09:00

Feed-based with a manual override lane; both are versioned and dual-approved

PairWe buyWe sellSpreadSource
USD / NGN1,585.001,596.500.72%feed + margin
GBP / NGN2,011.202,028.000.83%feed + margin
EUR / NGN1,722.401,736.100.79%feed + margin
CNY / NGN218.90221.401.14%manual · Eli S.

Recent conversions

Each row records its rate version — an examiner can reprice any of them

Emeka & Sons · $12,000 → ₦v212Settled
SwiftRemit · £4,200 → ₦v212Settled
Halima Bello · ₦2M → $v211Settled

Multi-currency is tenant-optional: a naira-only bank never sees this screen; a resale tenant switches it on in Administration.

Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Disputes

Every dispute carries its evidence pack: device, receipt, both ledger sides, timestamps
Open
0
oldest 1d 4h
Resolved this week
0
median 6h
Refunded
0M
this week
Chargeback exposure
0M
2 cases

Queue

Click a row for the evidence pack · try resolving the double-debit

CaseTypePartyAmountSLAState
D-1182POS double-debitAgent 00412₦20,000Evidence complete
D-1179VAS tokenNgozi Eze₦12,000Auto-reversal confirmed
D-1175ChargebackIssuer claim₦86,000Representment due

Reconciliation

Three walls: ledger self-check, settlement vs NIBSS, vendor vs vend records
Internal tie-out: 0.00 variance · 14:30

NIBSS settlement reconciliation — today

Press run: every NIP transfer is matched against the settlement report line by line

idle

Open investigations

Every unexplained exception becomes a CASE with states and a resolution code — an exception can be resolved, never merely dismissed

CaseSourceAmountAgeState
INV-2201Settlement line, no local record₦48,000Investigating
INV-2199IBEDC vend · vendor silent 48h₦12,500Awaiting vendor · escalated

Vendor reconciliation — bills

MTN · yesterday18,240 vends0 discrepancies
DSTV · yesterday2,113 vends0 discrepancies
IBEDC · yesterday3,408 vends2 pending vendor response

Settlement account monitor

A drop that doesn't match outbound flow pages ops immediately

Balance now₦412,802,110.55expected band
Largest single move today₦18.4Mmatched batch
Alert threshold₦10M unexplainednot triggered
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Rewards

Points are a ledger currency too — earned, held, and redeemed with the same double-entry discipline
Reward wallets
0
59% of customers
Points earned today
0
+11%
Redeemed today
0
airtime 82%
Outstanding liability
0M
provisioned in GL

Earning rules · v5

ActivityEarnsCapStatus
NIP transfer (fee-paying)1 pt / ₦100 fee200/dayLive
Bill payment2 pts / ₦1,000100/dayLive
Referral activated500 pts10/monthLive
Ajo savings streak (weekly)150 ptsDraft v6

Recent earnings

Chinedu Okafor · NIP fee+3 pts14:32
Bunmi Adeyemi · airtime+10 pts14:32
Ngozi Eze · redemption → airtime−500 pts14:12
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Mobile app

Customer-facing design language — white-label brandable per tenant. The first phone is live: tap Send and complete a transfer.
9:415G · 98%
EVERYDAY SAVINGS · 0234118765
₦3,912,330.55
+ ₦500,000 on deposit · insured by NDIC
Send
Bills
Airtime
More
RECENT
GTBank · Adaeze N.−₦250,000
MTN airtime−₦5,000
Salary · Zenith+₦480,000
9:415G · 98%
Verify your identity
Step 4 of 6 — takes about a minute
BVN
2210••••••9
Matched: name + date of birth ✓
Face check
Blink, then turn your head — a photo can't do this
9:415G · 98%
Notifications
₦250,000 sent to ADAEZE NWOSU · GTBank
14:32 · receipt attached
New device signed in — Pixel 8, Lagos. Not you? Freeze your account with one tap.
09:04 · security
+10 reward points for your MTN top-up
14:32 · rewards
Fixed deposit matures 12 Oct — choose roll-over or payout
yesterday · savings
Live feed — streams over SSE, read-state synced
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

POS agent app

Built for the degraded-network path: every action queues and syncs when connectivity returns. The terminal is live — run a cash-out.
AGENT 00412 · NNEWI2G ▂▄
FLOAT BALANCE
₦743,500.00
Commission today: ₦8,420 · visible live

Offline-first by design

The Adamawa 2G reality is a requirement, not an edge case

Connectivity drops mid-transactionThe action queues locally, signed and timestamped; syncs with conflict resolution when the network returns
Terminal stolenRemote wipe from the Devices screen; queued items are useless without the device key
Location integrityGPS + cell tower + IP must agree — mock-location apps are a high-weight fraud signal

Agent's own view

Commission this month₦214,800structure v9
Cash-out limit remaining today₦1,240,000of ₦2M
Disputes open1D-1182
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Partner developer portal

The surface businesses build on — try the sandbox call
developers.pupcore.ng/docs/transfersSandbox
DOCS
Get started
Authentication
Accounts
Virtual accounts
Transfers
Bills
Webhooks
Errors

Create a transfer

Idempotent by header — retry the same key forever, get one transfer. Versioned under /v1; nothing breaking ships inside a version.

POST /v1/transfers HTTP/1.1 Authorization: Bearer sk_test_•••• Idempotency-Key: ord_84412_attempt_1 { "amount": "250000.00", "currency": "NGN", "source_account": "0234118765", "destination": { "bank": "058", "nuban": "0119228841" }, "narration": "Invoice 2244" }

Your keys

Sandboxsk_test_9hT2xxQQ…visibleunlimited
Livesk_live_••••…8841shown once at creation
Webhook signing secretwhsec_••••…22ad

Webhook playground

Send yourself a signed test event and verify your endpoint

payment.completed
collection.received (virtual account)
kyc.tier_upgraded

Migration workbench

The Shinobi exit runs here: extract, validate, rehearse, load in cohorts, prove the balances to the kobo

Start a migration — what are you moving?

Order matters, and the workbench enforces it: 1 ledger before 2 customers, customers before 3 accounts, accounts before 4 balances & loans — a balance can only land in a real account, owned by a real customer, posting to a real ledger line. Every button walks the same five steps: upload the export file → validate every row → rehearse the load on a copy → tie out the numbers to the kobo → a second officer approves the production load. Nothing touches the live bank before step five.

1 · Ledger
Chart of accounts and opening balances — the shelves the money sits on
Done · 214 GL lines live
2 · Customers
People and businesses, with whatever identity the old system holds
Cohort A loaded · B validating
3 · Accounts
The account numbers — kept as they are, mapped to your new products
Cohort A loaded
4 · Balances & loans
The money itself — posted double-entry, proven to the kobo
Waits for cohort B accounts

Pipeline — cohort B (Yola branch customers)

Press run: each stage must go green before the next unlocks; nothing loads into production from a red stage

extract · 14,208 rows
parse · 0 rejects
validate
dry-run load
balance tie-out
ready for cohort load
stages 3–6 pending

Migration options — live switches, applied to every cohort

These are real controls, not statements: flip one and every later validation run uses the new setting (a cohort already past validation re-runs it). The recommended position is ON for all three — flipping one off tells you exactly what you would be giving up before it lets you.

Preserve existing NUBANsON · recommendedCustomers keep their account numbers — zero disruption, inbound transfers keep working through the bridge. Same institution code means the check digits stay mathematically valid; every inherited NUBAN is check-digit-verified at import, and the handful that fail (if the old system ever issued malformed numbers) land in the error report for a decided remap, never a silent one.
BVN verificationAfter load · batchAt import we check only the SHAPE (11 digits). Real verification (name + date-of-birth match at the bureau) runs as a background batch AFTER the money has landed and tied out — so a third-party outage or rate limit can never block the cutover weekend. Full match → verified · partial → the adjudication queue (the BVN-mismatch review) · no match → restricted.
Identity-incomplete customersRestricted track · ONA customer with money but no BVN or phone is NOT discarded and NOT parked outside the books: they migrate as full ledger citizens — their balances tie out to the kobo like everyone else’s — with the customer record in Restricted · pre-KYC status until identity is captured and verified.

Identity coverage — what the legacy book actually looks like

The engine classifies every customer row up front; nobody discovers the gap on cutover weekend

Cohort split · 5,000 customersCustomersBalances heldTrack
BVN present (phone may be missing)1,000₦61.4MFull — BVN verified in the post-load batch
Phone only, no BVN380₦8.2MRestricted — SMS invite to KYC
No BVN, no phone3,620₦14.9MRestricted — branch/agent KYC capture

Restricted means: money safe and visible · deposits land normally · withdrawals and transfers blocked until identity is verified — and the first withdrawal attempt IS the KYC moment: the customer presents ID, the officer captures BVN/phone on the spot, verification runs, the restriction lifts, and the customer walks out with their money and a working account. Never a locked-out customer without a stated path.

KYC conversion campaign — restricted → real customers

Adjudications →
Converted
1,140 of 4,000
This week
212
86 branch · 118 agent · 8 self-service
Dormant > 12m in restricted
640
dormancy machinery applies — unclaimed-funds path, never quiet absorption
Customer (legacy ref)BalanceMissingLast contact
SHB-04412 · Maryamu A.₦142,300BVN + phonein branch NOW · Gombi
SHB-01188 · Ibrahim S.₦38,150BVNSMS invite · 21 Aug

Cohorts

A · HQ Gombi customers · 12,040 rowsDress-rehearsed · tie-out ₦0.00
B · Yola branch · 14,208 rowsValidating
C · API partner sub-customers · 96,114 rowsQueued

Parallel-run scorecard

Cutover is gated on consecutive zero-difference days — your go/no-go, with evidence

Day 1 · 22 Aug214,002 txns replayed0 differences
Day 2 · 23 Aug198,441 txns replayed0 differences
Day 3 · todayrunning…live

Balance tie-out — cohort A dress rehearsal (the fourfold report)

Every account in either system lands in exactly one bucket — matched, missing, extra, or mismatched with a signed kobo delta. The report is total: the four buckets sum to both sides, proven.

BucketAccountsDetailVerdict
Matched to the kobo12,034₦84,112,004.00 both sidesclean
Missing (in Shinobi, not loaded)30234166…, 0234171…, 0234180… — rows failed validation (named in the row report)blocks load
Extra (loaded, not in Shinobi)10234190… — duplicate NUBAN in export fileblocks load
Mismatched balance20234155… Δ +₦0.01 · 0234161… Δ −₦120.00 (rounding vs exact kobo)blocks load

Six accounts of 12,040 stand between this cohort and a clean load — and the engine will not load ANY row until all six are resolved at source. There is no “load anyway” button, deliberately.

Cutover go/no-go — the checklist that decides the weekend

All cohorts tie out ₦0.00A: 6 items open · B validating · C queued
Parallel run ≥ 5 consecutive zero-difference days3 of 5
NIP bridge dual-feed rehearsed both directionsawaiting middleware access (I-2)
Rollback rehearsed (return inbound routing to Shinobi)scheduled with the bridge rehearsal
Sign-offs: owner · finance · compliancegates above first

Verdict today: NO-GO — and the screen says so plainly. Cutover happens when every row here is green, not when a date on a calendar arrives.

Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Registries & scheduled tasks

The reference data everything else leans on — banks, branches, states, and the clockwork

Branches

Click a branch for its full profile — every posting carries a branch stamp, so branch-level reporting is a filter, not a project

HQ · Gombi, Adamawacode 001 · vault + 4 tills · 14 staffOpen
Yola branchcode 002 · 2 tills · 6 staffOpen

Reference registries

Banks (NIP institution codes)412 entriessynced 06:00
States & LGAs37 · 774static
Compliance document types18 classes · 42 typesv6

Scheduled tasks

Every run leaves a record; a missed run pages ops — try pausing one

TaskScheduleLast runNext runState
End-of-day close + tie-outdaily 23:3023 Aug · ok · 4m 12stoday 23:30Activeprotected
Interest accrualdaily 00:15today · ok · 1m 48stomorrow 00:15Activeprotected
Dormancy sweepweekly Mon 02:0018 Aug · ok25 Aug 02:00Active
NDPA retention purgemonthly 1st 03:0001 Aug · ok · 2,114 records anonymised01 Sep 03:00Activeprotected
Watchlist re-screen (full book)nightly 01:00today · ok · 0 new hitstonight 01:00Activeprotected
Design preview · this screen does not read the ledger yet. Every figure below is illustrative sample data, not this bank’s records.

Sign-in & states

The unglamorous screens, treated as first-class — every failure state has honest copy and a next action

Staff sign-in — live demo

Two factors always; hardware keys for approvers

Signed in · session 8h · this device remembered 30 days

Error with retry — live demo

A failed read never silently renders as "no data" — that distinction is a hard rule

We couldn't reach the reporting service.

The server returned an error (503). Your data is safe; this screen just can't load right now. Actions that depend on this data are hidden until it loads.

Session expired

Your session ended after 8 hours.

Nothing was lost — the form you were filling is saved as a draft. Sign in to continue exactly where you stopped.

Permission denied

Your role can't approve fee structures.

You proposed this change, so a different role must approve it — that separation is deliberate. The approvers (Eli S., Kemi O.) have been notified.

Empty state

No disputes today.

A successful empty read is good news, not an error — and it says so, instead of showing a blank page.

Degraded network (agent app)

Working offline.

2 transactions queued on this device, signed and timestamped. They sync automatically when the network returns — the agent keeps serving customers.

Queued: 2 · last sync 4 min ago

Interactive design preview — sample data throughout; no real customers, balances, or filings. Every menu item is live; micro-interactions follow the house motion standards (150–250 ms, ease-out enters, reduced-motion respected).

    New customer

    They start at Tier 0 — no account opens until verification evidence exists. Only the name is required: an officer at a counter has a name and a phone, and the rest arrives as the customer climbs the tiers. Identity numbers are never typed here — BVN and NIN are recorded as verification checks, and the platform keeps only a fingerprint.

    Record verification check

    Evidence only: which check, which provider, their reference, the result. Raw BVN/NIN numbers are refused by the server — the bank never stores them.

    Open account

    Tier 1 or above is required; the wall answers with exactly what is missing. The account number is a real NUBAN, minted by the bank.

    Propose account restriction

    Nothing changes now: this creates a proposal that takes effect only when a DIFFERENT officer approves it in My approvals.

    New loan application

    Nothing is disbursed now: the application goes to a credit officer, and only a DIFFERENT officer’s approval moves money. The customer must be verification tier 2 or better.

     

    Book a fixed deposit

    The principal leaves the customer’s spendable balance now. The interest shown is a commitment — it is paid automatically at maturity. Breaking the term early forfeits the interest and takes two officers.

     

    Suspend this officer now

    This takes effect immediately and ends every live session they have. It needs only you — ending access is always allowed. Restoring it will need a second officer.

    Propose access change

    Approve password reset

    You choose the temporary password and hand it to the officer in person. The bank never invents one and never shows one back — once you close this box it exists only in their hands. They must set their own at next sign-in.

    Stage a payment run

    One funding account, many beneficiaries. Validation is all-or-nothing: one bad row and NOTHING loads — every error named with its row number. The staged run then needs a DIFFERENT officer's approval in My approvals before any row executes.