Built in Nairobi. Made for builders.

Mobile money.
Without the
integration tax.

One clean API for M-Pesa and Airtel Money.
A sandbox that feels real. Webhooks you can trace.
Finally, payments that let you get back to building.

✓ No paybill needed / No credit card

LESS PLUMBING. MORE POSSIBILITY.
</>Your next big thingyour-app.ts
n↗
MM-Pesa
aAirtel Money
✓
Payment receivedKES 1,500.00 · ORDER-42
just now
ONE INTEGRATION. BOTH RAILS.
LOCAL RAILS.
ONE SHARED LANGUAGE.
M-PESA Live
airtel money Live
T-Kash Sandbox

Your paybill. Your money.
We handle the developer experience.

01 / MEET YOUR NEW WORKFLOW

From request to receipt.
Every step, in the open.

Don’t take our word for it. Send a simulated
payment and see what comes back.

⌘ create-payment.tsTypeScript
import { Njia } from "@njia/sdk";

const njia = new Njia("sk_test_…");

// Your first payment. A few lines away.
const payment = await njia.payments.create(
  {
    channel: "mpesa",
    amount: 150000, // KES 1,500.00
    phone: "254700000000",
    reference: "ORDER-42"
  },
  { idempotencyKey: "order-42" }
);
Payment playgroundINTERACTIVE DEMO
ORDER-42 M-PESA
KES 1,500.00
Ready when you are
⌁Your payment’s story will appear here.Request → confirmation → signed webhook

↳ A preview of the Njia sandbox. Try the unhappy paths, too.Explore the API reference ↗

02 / THE DETAILS, HANDLED

Build your product.
We’ll mind the payments.

The parts you shouldn’t have to build again,
brought together in one thoughtful toolkit.

payment.succeeded 200
customer.cancelled 1032
insufficient.funds 1
01 — TEST WITH CONFIDENCE

A sandbox with a real world in it.

Cancelled prompts. Empty wallets. Duplicate callbacks. Six test numbers help you find the edge cases before your customers do.

Meet the sandbox ↗
↗Attempt 01Endpoint unavailable500
✓Attempt 02Delivered · retried after 5s200
02 — FOLLOW EVERY EVENT

Webhooks with a paper trail.

HMAC signatures, automatic retries, and a log of every attempt. Inspect what happened. Replay an event when you need to.

Explore webhooks ↗
ST
Studio workspaceOwner · You
⌄
⌑ Isolated keys⌑ Your credentials
03 — KEEP OWNERSHIP CLEAR

Your business. Your workspace.

Separate keys, credentials, and payment history for every product or client. Hand over the project without handing over your account.

Create a workspace ↗

03 / HOME IS LOCALHOST

Stay in your editor.
Keep your flow.

Your laptop doesn’t need a public URL. Stream events and forward signed webhooks straight to your local server with the Njia CLI.

Make your first API call ↗
● ● ●~/your-next-big-thing⌘ 1

❯ npx @njia/cli listen
--forward-to localhost:3000/webhooks

Connected. Listening for events.

21:47:25 payment.pending
↳ POST /webhooks 200 · 14ms

21:47:27 payment.succeeded
↳ POST /webhooks 200 · 7ms

Your verification code works here. And in production.

04 / START SMALL. BUILD SOMETHING BIG.

Free to figure it out.
Ready when you are.

Explore the whole toolkit in the sandbox.
Connect your own paybill when it’s time to go live.

The sandbox

YOUR IDEAS START HERE

KSh 0 / forever

Room to experiment. No countdown.

  • Unlimited test payments and subscriptions
  • All six sandbox scenarios
  • Signed webhooks, delivery logs, and replay
  • SDK, CLI, and unlimited workspaces
Start building for free ↗

Ready for live

BRING YOUR OWN PAYBILL

From KSh 2,500 / month

Your money goes directly to your business.

  • M-Pesa and Airtel Money through one API
  • Flat per-payment fee, not a percentage
  • Your provider credentials, securely stored
  • KSh 50,000/month starter cap during verification
Set up your workspace ↗

NJIA / SWAHILI FOR “THE WAY”

Make way for
what you’re building.

Get your free test key ↗

A few lines of code. A whole new possibility.