How to accept M-Pesa payments on your website

You do not need a Paybill, a bank integration or a developer on staff. You need an email address, about ten minutes and this page.

The five steps

1. Create your account. You sign up with an email and password, then verify the email. Your business name is what customers see on the checkout page.

2. Set where money settles. Choose bank account, M-Pesa Till or M-Pesa Paybill, and enter the details. Customers pay you, not a middleman.

3. Save a webhook URL. This is the address on your site that should hear "payment done". Without it your system never learns a payment succeeded unless it polls.

4. Generate your API key. One key, shown once, used to start payments from your website.

5. Start a payment. Send the amount and the customer's phone number to the payments endpoint. They get the M-Pesa prompt on their phone and approve with their PIN.

No website yet? Use a payment link

Every payment produces a hosted checkout link. Put it in a WhatsApp message, an Instagram bio, a text or a QR code. The customer opens it, types their number, approves the prompt. More on payment links.

Works with the tools you already use

Anywhere you can send an HTTP request: WordPress with a custom form, Shopify via an app or a custom flow, Laravel, Node, Python, PHP, or a no-code automation tool that supports webhooks. If your platform cannot make requests, the payment link still works.

What your customer sees

A clean checkout page with your business name and a verified badge, an amount, one field for the phone number and one button. No account, no app, no card. They approve on the phone they already have.

What you get on the dashboard

A daily statement with running balance that resets at midnight Nairobi time, total money in, monthly totals, successful and failed payments, settlement status, Telegram alerts, and signed webhooks for automation.

Start accepting M-Pesa