Preview
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

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

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

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

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.

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

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.

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

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.

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.

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

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

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

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

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.

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

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).