MPESA Payment Gateway

Money moves in.
Money moves out.
We handle the middle.

Sati‑Pay gives your website one simple API for MPESA deposits and withdrawals — STK push, instant payouts, signed callbacks and reconciliation that just works.

SATI‑PAY · NOW
STK Push sent
Enter your M‑PESA PIN to complete payment of KES 2,450.00 to Trading Online.
DEPOSIT CONFIRMED
KES 2,450.00
ReferenceORDER‑1042
Phone07XX ••• 214
Settled toTrading Online
DEPOSIT KES 1,200.00 CONFIRMED WITHDRAW KES 3,000.00 SETTLED DEPOSIT KES 450.00 CONFIRMED PAYOUT KES 8,600.00 SENT DEPOSIT KES 12,000.00 CONFIRMED WITHDRAW KES 900.00 SETTLED DEPOSIT KES 1,200.00 CONFIRMED WITHDRAW KES 3,000.00 SETTLED DEPOSIT KES 450.00 CONFIRMED PAYOUT KES 8,600.00 SENT DEPOSIT KES 12,000.00 CONFIRMED WITHDRAW KES 900.00 SETTLED
Two directions, one API

Whichever way the money is going, it's the same integration.

Most payment providers make you stitch together separate tools for collecting and paying out. Sati‑Pay treats both as one flow.

Deposits

Trigger an STK push, your customer enters their PIN, and funds land in your website in seconds — no redirects, no app switching.

customer → business

Withdrawals

Send payouts straight to any MPESA number — withdraws, winnings or disbursements cleared without manual approval queues.

business → customer
How a payment moves

Four steps, most of them invisible to your customer.

This is what happens between a customer clicking "Pay with MPESA" and your ledger updating.

01

Customer picks MPESA at checkout

On your site, your app, or your invoice page.

02

Sati‑Pay sends an STK push

A prompt appears on their phone within seconds.

03

They enter their PIN

We confirm the transaction with Safaricom directly.

04

Your server gets a signed callback

Funds settle to your website, order marked paid.

Built for developers

Every payment is one authenticated request.

No SDK lock-in, no XML, no callback gymnastics. Sandbox keys are ready in minutes, and every deposit or withdrawal follows the same request shape.

  • Signed callbacksEvery webhook is signed so you can verify it actually came from us.
  • Idempotent by defaultRetry safely — duplicate requests never double-charge or double-pay.
  • Sandbox that mirrors productionTest full deposit and withdrawal flows before going live.
POST /v1/deposits
curl -X POST https://api.sati-pay.com/v1/deposits \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 2450.00,
    "phone": "2547XXXXXXXX",
    "reference": "ORDER-1042",
    "callback_url": "https://yoursite.com/mpesa/callback"
  }'
99.98%
Uptime, last 12 months
<2s
Median STK push response
24/7
Payouts, weekends included
Who it's for

If your platform touches money in Kenya, Sati‑Pay fits.

Online marketplaces Betting & gaming platforms SaaS & subscriptions Ride-hailing & logistics NGOs & fundraising Ticketing & events Lending & savings apps

Pay per transaction. Nothing else.

No setup fees, no monthly minimums, no charge for staying in sandbox. You only pay when money actually moves.

1.5% per deposit
flat KES 15 per withdrawal

Ready to simplify MPESA for your platform?

Create an account, grab your sandbox keys, and send your first STK push in under ten minutes.