About
Most financial APIs are powerful but incomplete. The gaps they leave are real engineering problems that every developer building on top of them has to solve from scratch. I've been solving them, and making the solutions open source.
Most of my work lives at the intersection of payment infrastructure, tax compliance, and the developer tooling that fintech runs on. I'm a founder twice over — TaxID and LinkdFund — and I've built and shipped production software across Kenya's financial stack.
When something important is undocumented, broken by design, or left entirely to the developer to figure out, I tend to build the fix and publish it.
Work
KRA's eTIMS API has no official Python SDK. Every developer integrating it rebuilds the same things: OAuth token refresh, VAT arithmetic across five tax bands, idempotency for in-flight network failures — the Schrödinger's Invoice problem where a timeout mid-POST leaves the invoice state unknown. This SDK handles all of that, plus async support with full API parity and a supplier onboarding gateway for informal sector compliance under Finance Act 2023 §16(1)(c). The tax calculator works offline with no credentials.
An npm package. Daraja gives you STK Push initiation. It doesn't handle what happens when the callback never arrives, when Safaricom sends the same callback three times under load, when a client retries and gets double-charged, or when your database says SUCCESS and Safaricom has no record of it. This TypeScript library handles all of that: idempotent initiation, atomic callback deduplication, polling fallback, and a reconciliation pass for payments that fall through every other safety net.
Safaricom's Daraja documentation doesn't document its own error codes comprehensively. Developers hit cryptic failures and have nowhere to look. A searchable reference for every error the Daraja API returns — causes, fixes, and context the official docs don't provide. Includes an llms.txt so AI tools can read it correctly. Community-contributed: open a PR to add an error code you've hit.
Full-stack short-stay rental platform built for a Nairobi property host — real bookings, Paystack payments (M-Pesa + card), a yield engine that auto-prices vacancy gaps, AI-powered guest chat with WhatsApp integration, and an OTA sync pipeline for Airbnb, Booking.com, and VRBO. Admin dashboard with revenue tracking and guest CRM. PWA with offline support and push notifications. Built on Next.js + FastAPI, deployed on Vercel and Railway. Live and in use.
Now
Building TaxID — compliance infrastructure for Kenya's informal economy. Thinking about what it means to build software for systems that were never designed to be programmed against.
Most of the interesting engineering problems in East Africa aren't algorithmic. They're about trust, reliability, and what happens when the network drops.
Based in Nairobi. ronnyabuto@gmail.com.