CodeNine

Work / Collins Mugume, Kampala, Uganda

A bad fintech MVP, rebuilt and live in 30 days.

It then ran nearly four years and moved 12.2 billion UGX. The client came back twice more: a land sales platform and a phone installment system.

Systems
Azima · Terrago · Zazu Mobile
Relationship
February 2022 – present
Our role
Takeover, rebuild, custody
Stack
Django · PostgreSQL · React · native Android
Azima loan dashboard, wide

Azima, in production March 2022 – early 2026

30
Days, takeover to production
136,336
Loans disbursed
23,315
Distinct borrowers
5.85
Loans per borrower, average
Total transacted
12,237,485,182 UGX (~USD 3.3M)
Registered users
111,616
Average principal per borrower
524,876 UGX
Borrowers who completed at least one loan
Nearly 9 in 10

Roughly 90,000 UGX (~USD 24) per loan. This is microfinance. The figure that matters is frequency, not ticket size. Repayment and recovery rates are withheld at the client’s request.

The takeover

Read first, rewrite second.

Pay 24 had an MVP that could not go to market. We read what existed, kept what was sound, and replaced the rest in one pass rather than four.

Week 1
Read the existing build
Where the loan lifecycle actually lived, and which parts of it were guesses.
Week 2
Rebuild the ledger
Disbursement, schedule, repayment and arrears as one consistent model in PostgreSQL.
Week 3
Mobile money and the Android client
Payment gateway integration, and native Android brought in on contract for device-level work.
Week 4
Production
Live to real borrowers, with the operations console the client’s team runs it from.

Three systems, one client

Each one earned the next.

Azima transaction dashboard, 4:3

Azima

2022 – 2026

Small-loan fintech. Mobile money disbursement and recovery at high frequency.

Closed when Samsung Knox device-control support was withdrawn, which broke the collateral model. Platform policy, not software.

Terrago listing view, 4:3

Terrago

4 years live

Real estate and land purchase. Installment schedules and online payment.

160+ plots and properties transacted through the platform.

Zazu Mobile commission dashboard, 4:3

Zazu Mobile

Live, 2 years

Phone purchase on installments, with our app on the device as the enforcement mechanism.

Thousands of devices in the field. Active business. The client prefers exact figures unpublished.

Where the collateral lives

The enforcement is not on our server.

Everything below the rule runs on the borrower’s handset, outside our control.

Azima and Zazu: fintech backend with enforcement running on the borrower's deviceThe fintech backend holds the loan ledger and disburses through a mobile money gateway. Repayments come back the same way. The part that makes the model work sits elsewhere: an Android app installed as device administrator on the handset that was bought with the loan. A missed schedule triggers graduated restriction on the device rather than immediate bricking, and payment restores it within seconds over whatever connection exists. Because that enforcement depended on Samsung Knox device-control APIs, the withdrawal of Knox support removed the mechanism and Azima closed. The failure was platform policy, not software.Our infrastructureDjango · PostgreSQLLoan ledgerIntegrationMobile moneyDisburseRepayNot oursBorrowerThe borrower's handset · bought with the loan · the collateral itselfNative Android · device adminEnforcement appInstalled at point of sale, withOS-level lock authority.MissGraduatedRestrictionPayWithin secondsRestoredNot immediate bricking.A phone the borrower stillwants is what makes thecollateral work.Dependency that ended itLock authority came from Samsung Knox. When Knox device-control support was withdrawn, thecollateral model had no mechanism left and Azima closed. Platform policy, not software.

Why it needed native Android

The collateral was the phone itself.

Both fintech models depended on controlling the device, not just talking to it. That is OS-level work: device administration, lock policy, tamper response. Not an app wrapper.

Native Android was brought in per project on contract. That is the operating model, stated plainly.

01

Loan issued against the handset, with the app installed as device administrator.

02

Missed schedule triggers graduated restriction, not immediate bricking.

03

Payment restores the device within seconds, over whatever connection exists.

04

Withdrawal of Samsung Knox support removed the mechanism, and Azima closed.

Collins Mugume
“Our first build was unusable and I was ready to give up on the product. They had a working version live in a month. Four years and three systems later, I still send them everything.”
Collins MugumeCo-Founder, Pay 24 Financial Services