Ask any landlord managing more than a handful of rental units in Nairobi how rent collection actually works, and you will hear some version of the same story. Tenants pay through an M-Pesa Paybill number. Every payment arrives as a short SMS or a line in a statement, usually just a name, a phone number, and an amount. Someone then has to manually match that payment to the right tenant, the right unit, and the right month, and update a spreadsheet accordingly.
This works fine at five units. It quietly falls apart at fifty.
A few things go wrong consistently once a portfolio grows:
Names do not match. A tenant registered as "Otieno" on their lease might pay from an M-Pesa line registered under a spouse's name, a sibling's number, or a shortened nickname. Matching by name alone produces mismatches almost every month.
Partial and advance payments confuse the record. A tenant who pays half now and half in two weeks, or who pays two months at once because they are traveling, needs their payment history properly tracked across periods, not just logged as a single transaction against a single month.
Errors compound silently. A misattributed payment in March does not just cause one mistake. It throws off that tenant's arrears status every month afterward, until someone eventually notices during a dispute, usually the tenant, not the landlord.
The manual work does not shrink, it grows. Doubling the number of units roughly doubles the reconciliation effort, but it does not double the time available to do it. This is the exact point where most landlords start missing payments, sending confusing statements, or simply losing track of who is actually behind on rent.
Software built specifically for this problem, rather than a general spreadsheet, solves it by treating payment matching as a real, ongoing computation rather than a monthly clerical task.
Every M-Pesa Paybill payment is checked automatically against active leases the moment it arrives, using the transaction code, phone number, and amount together rather than name alone. Partial payments and advance payments are recorded against a coverage period, so a tenant who pays for two months at once is correctly shown as paid through both, not flagged as behind. And because the matching happens continuously, a landlord can see who is paid, who is in arrears, and by how much, at any moment, instead of reconstructing it at the end of the month.
This is precisely the problem MakaoFlow was built to solve. It exists because we watched landlords across Nairobi lose entire afternoons every week to work a computer should be doing automatically, and decided the fix was worth building properly rather than living with a slightly better spreadsheet.
The actual value is not the dashboard. It is getting the afternoon back. It is being able to answer "who owes me rent this month" in five seconds instead of an hour, and trusting the answer is correct without double checking it yourself. Once reconciliation stops being manual work, managing ten units and managing a hundred stops feeling like two completely different jobs.