M-Pesa on any website, straight to your own Till

KenZobe Checkout sends the STK prompt and confirms each payment with Safaricom, using your own Daraja keys, so every shilling lands in your Paybill or Till.

Free to sign up. The demo sends no real prompt and stores nothing.

Example payment. The business, number and receipt are made up.

Duka la Amina

Maths revision guide

KSh 1,500

Your M-Pesa phone number

0712 345 678
Pay KSh 1,500

Powered by KenZobe Checkout

Pay KSh 1,500 to Duka la Amina?

Enter M-PESA PIN

Paid into your Till

KSh 1,500 · 0712 ••• 678

Receipt TJ41XK2P9Q

Nobody stands between your customer and your Till

The payment gateways we compared collect your money into their own account and pay you out later. KenZobe Checkout is software that runs your checkout, not a middleman.

A typical gateway

Your customer
The gateway's account
next day to 3 working days
You

KenZobe Checkout

Your customer
STK prompt, PIN
Your own Paybill or Till

KenZobe sends the prompt and checks the result with Safaricom. It never receives, holds or settles your customers' money, so there is nothing to wait for.

Settlement times as published by Flutterwave (next day) and PesaPal (up to 3 working days), October 2026.

Three ways to get paid, one checkout behind them

A pay button for your website

Paste two snippets into any page: plain HTML, WordPress, or an AI-built site. The button sends a price id, never an amount, so a visitor cannot change what they pay. Change a price later in your dashboard and the button keeps working.

How to add the pay button
<script src="https://pay.kenzobe.com/widget.js"
        data-key="kz_pk_live_…" defer></script>

<button data-kenzobe-price="price_…"
        data-kenzobe-success-url="https://shop.co.ke/thanks">
  Pay with M-Pesa
</button>

Payment links, no website needed

Make a link for a fixed amount and share it on WhatsApp, Instagram, SMS or an invoice. Your customer taps it, types their number and enters their PIN. No typing your Till number, no wrong amounts.

How payment links work
Hi, is the revision guide still available?
Yes! KSh 1,500. Pay here and I'll send it today:pay.kenzobe.com/Hk3x9Qe2
Paid, thank you!

Example conversation.

An API and webhooks for developers

Start an STK push from your server, look a payment up, and receive signed payment.paid events. Repeating a request with the same idempotency key never makes a second payment.

See the payment check
curl https://api.kenzobe.com/v1/payments \
  -H "Authorization: Bearer kz_sk_live_…" \
  -H "Idempotency-Key: order-1042" \
  -d amount=1500 -d phone=0712345678

{ "success": true,
  "data": { "id": "pay_…", "status": "pending",
            "amount": 1500, "currency": "KES" } }

From sign-up to your first live payment

  1. 1

    Sign up free

    Your account starts in sandbox. Make a test payment straight away, before you have any Daraja keys.

  2. 2

    Set up your checkout

    Add a product and its price for the pay button, or make a payment link. Create a website key for your domain.

  3. 3

    Add your live Daraja keys

    Turn on two-step sign-in, then add your consumer key, secret and passkey with your Paybill, or your store and till numbers. They are encrypted and never shown again.

  4. 4

    Choose a plan and go live

    Pay a monthly plan by M-Pesa. Add live prices and a live website key, and payments land in your own Paybill or Till.

Getting live Daraja keys takes a step at Safaricom first. Our Daraja keys guide walks you through it.

What KenZobe Checkout promises

Paid means Safaricom confirmed it
A payment is marked paid only after a status query to Safaricom, never on a callback alone or on what a browser says.
The server decides the amount
The pay button and links name a price, never an amount, so nobody can edit the page to pay less.
Your keys stay secret
Daraja keys are encrypted, never shown again after saving, and changing live keys asks for your password.
Your customers are never turned away
Going over your plan’s payments never blocks a customer’s payment.
Test and live never mix
Every key, price, link and payment is either test or live, and sandbox payments move no money.
A double tap is still one payment
Pressing Pay twice, a retried request or a repeated callback still makes one payment and one receipt.

Flat monthly plans, no percentage

Paid monthly by M-Pesa. No VAT is added. Safaricom's normal M-Pesa charges on your Till or Paybill still apply.

  • Sandbox

    Unlimited test payments

    Safaricom’s test system, no real money moves

    Free

  • Basic

    Up to 300 live payments a month

    KES 2,400/ month

  • Growth

    Up to 1,500 live payments a month

    KES 6,000/ month

  • Business

    Up to 6,000 live payments a month

    KES 14,000/ month

  • Custom

    More than 6,000 live payments a month

    Quoted

  • Reminders 7, 3 and 1 days before your plan ends, then 5 days' grace.
  • If a plan lapses your account goes back to sandbox. Nothing is deleted, and paying again reopens live payments.

Questions

No. KenZobe Checkout uses your own Safaricom Daraja app, so every payment goes straight into your own Paybill or Till. KenZobe sends the M-Pesa prompt and checks the result with Safaricom; it never receives, holds or settles customer money.
Nothing to try it: sign up free and make a test payment straight away in sandbox, using KenZobe’s own test app. For live payments you need your own Paybill or Till, a Daraja app that has gone live (consumer key, consumer secret and passkey), two-step sign-in, and a monthly plan.
Yes. Add your store number and till number with your Daraja keys. A Paybill works too: add the paybill number.
No. You pay a flat monthly plan, from KES 2,400 for up to 300 live payments. Safaricom’s normal M-Pesa charges on your Till or Paybill still apply, as they would with any M-Pesa payment.
Your customers can still pay. A customer’s payment is never blocked because you went over your plan’s volume; you can move to a bigger plan.
A payment counts as paid only after Safaricom confirms it with a status query, never on a callback or anything a browser says. Your server can ask the API, with your secret key, whether a payment is paid before you deliver anything, and signed webhooks tell your server when a payment ends.
Not to start. Payment links need no website, and the pay button is two snippets of HTML. Before you deliver anything automatically, your server should check the payment with the API; the guides show how, or ask us to set it up.

Try it on your own phone today

Sign up free and make a sandbox payment straight away. Add your Daraja keys when you are ready to go live.

Rather have us set it up? Contact KenZobe.