ROADMAP
The road ahead: more rails, more countries, one API.
Njia starts in Kenya, but mobile money is a continental habit. Here are the providers we’re adding next, and how we plan to let money cross borders as easily as it moves across town.
Mobile money is how much of Africa gets paid. Yet the moment a product grows past one country, its payments code splits in two: MTN MoMo in Kampala, Vodacom M-Pesa in Dar es Salaam, Orange Money in Dakar, and each one is a separate integration with its own authentication, callbacks and quirks.
Our goal is simple to state: launching in a new country should be a parameter, not a project. The same API call, the same signed webhooks, the same sandbox, whichever rail the money runs on.
The plan, in phases
-
NOW
Kenya
M-Pesa and Airtel Money are live. T-Kash is in the sandbox. Collections, subscriptions, signed webhooks, the CLI and the SDK are all available today.
-
NEXT
Payouts
Sending money, not just collecting it: refunds, marketplace seller payouts, salaries and disbursements, with the same idempotency and webhooks as collections. Payouts are also the foundation for cross-border payments.
-
NEXT
The rest of East Africa
Tanzania, Uganda and Rwanda. These are the markets Kenyan businesses expand into first, and they share many of the same providers.
-
LATER
West, Central and Southern Africa
Ghana, Francophone West Africa, Zambia, the DRC, Ethiopia and beyond, prioritised by where our developers are building.
-
EXPLORING
Cross-border payments
Collect in one country, pay out in another, through one API. More on this below.
Providers on our list
These are the providers we’re looking at, by market. The order within each phase will follow demand.
| Market | Providers | Currency |
|---|---|---|
| Kenya | M-Pesa, Airtel Money (live) · T-Kash (sandbox) | KES |
| Tanzania | Vodacom M-Pesa, Airtel Money, Mixx by Yas | TZS |
| Uganda | MTN MoMo, Airtel Money | UGX |
| Rwanda | MTN MoMo, Airtel Money | RWF |
| Ghana | MTN MoMo, Telecel Cash | GHS |
| Senegal, Côte d’Ivoire | Orange Money, Wave, MTN MoMo | XOF |
| Zambia | MTN MoMo, Airtel Money | ZMW |
| DR Congo | Vodacom M-Pesa, Orange Money, Airtel Money | CDF, USD |
| Ethiopia | telebirr, M-Pesa | ETB |
What changes in your code
As little as possible. A payment in Dar es Salaam should look like a payment in Nairobi, with the currency and phone number telling us where it’s going:
Proposed · subject to change
// Kenya, today
await njia.payments.create({
channel: "mpesa", currency: "KES", amount: 150000, phone: "254712345678",
});
// Tanzania, same call
await njia.payments.create({
channel: "mpesa", currency: "TZS", amount: 2500000, phone: "255712345678",
});
// Uganda, a different provider, still the same call
await njia.payments.create({
channel: "mtn_momo", currency: "UGX", amount: 50000, phone: "256772123456",
});
The things you rely on today come with every new provider:
-
One event format.
payment.succeededandpayment.failedlook the same whichever provider sent them, with provider-specific detail kept in its own field. - Sandbox first. Each provider arrives in test mode with its own magic numbers for cancellations, timeouts and insufficient funds, before it goes live.
- Your accounts, your money. You connect your own merchant account in each country, and funds settle to you directly.
Cross-border: the hard part, and why it matters
East African businesses trade across borders every day, yet paying a supplier in Kampala from Nairobi still tends to mean a bank wire, a remittance app, or keeping money parked in each country. Mobile money wallets on both sides are a few seconds apart. Getting money between them shouldn’t take days.
We want it to look something like this:
Proposed · subject to change
// 1. Ask what it costs: a rate locked for a short window
const quote = await njia.quotes.create({
from: { currency: "KES", amount: 1000000 },
to: { currency: "UGX", channel: "mtn_momo", phone: "256772123456" },
});
// 2. Accept it before it expires
const transfer = await njia.transfers.create(
{ quote: quote.id, reference: "SUPPLIER-118" },
{ idempotencyKey: "supplier-118" }
);
// 3. transfer.succeeded arrives as a signed webhook
The API is the easy part. Doing this properly means solving problems we won’t cut corners on:
- Licensing. Moving money across borders is regulated in every country involved. We’ll work through licensed partners in each corridor rather than around the rules.
- Exchange rates. A quote has to be honest: a locked rate, every fee shown up front, and a clear expiry.
- Settlement. Money must be available on the receiving side the moment a transfer is accepted, which means managing liquidity in each currency.
- Compliance. Identity checks, limits and screening, handled so you get clear answers instead of mystery declines.
We expect to start with corridors inside the East African Community, such as Kenya to Uganda and Kenya to Tanzania, and grow from there. We’re also watching continental efforts like the Pan-African Payment and Settlement System (PAPSS), which aim to make settling between African currencies cheaper.
What won’t change
- Every new provider and corridor lands in the sandbox first, free.
- Flat, predictable pricing, not a percentage of your revenue.
- One SDK, one CLI, one set of docs.
Njia means “the way”. The way across the continent should be as short as the way across the street.
Building for more than one market?
Start in the Kenyan sandbox today. New providers arrive in test mode first.
Get your free test key