Omnix
All docs
Integrations

M-Pesa (Daraja & Paystack)

Accept M-Pesa via STK push, Paybill/Till, or Paystack. Step-by-step on getting every key and entering it.

Omnix gives you three ways to take M-Pesa. Pick whichever matches how your business already collects money. This guide covers the FULL process — including everything you do on Safaricom's own websites, not just where to paste keys in Omnix.

Which one do I need?

  • Manual Paybill / Till — easiest. You already have a Safaricom Paybill or Buy-Goods Till. The customer pays it directly, and the cashier records the M-Pesa confirmation code. No API keys, works today.
  • Daraja STK push — the customer gets a pop-up on their phone to enter their PIN; the sale closes automatically. Needs a registered Paybill/Till AND Safaricom Daraja API keys (both free).
  • Paystack — takes M-Pesa *and* cards through one provider. Easiest keys to get; small per-transaction fee. See the [Paystack guide](/docs/paystack-keys).

---

Part 1 — Get a Paybill or Till from Safaricom

You need one of these for STK push (and for the manual flow). If you already have a business Paybill/Till, skip to Part 2.

Paybill vs Till — which to apply for? - Till (Buy Goods) — best if you only collect payments. Simple. - Paybill — best if you need an account number per customer or want to track who paid for what. Supports everything a Till does, plus more. We recommend a Paybill for flexibility.

> Important: a *personal* Till/Paybill (the kind you get over USSD) cannot be used for API integration. You must apply for a business shortcode.

Documents you'll need (scan each to PDF, stamped + signed): - Paybill/Till application form (download from the M-Pesa Business portal) - Tariff guide acceptance - Account opening form - Admin account creation form - Administrator letter - Bank letter OR a cancelled cheque - KRA PIN certificate - Copy of the director's ID or passport

How to apply: 1. Go to the [M-Pesa Business portal](https://m-pesaforbusiness.co.ke) and create an account (or log in). 2. Upload all documents as PDFs. Make sure everything is stamped and signed. 3. Submit. Safaricom processes applications within about 72 hours. 4. *(Alternative)* Email a single combined PDF to M-PESABusiness@safaricom.co.ke, CC paybill@safaricom.co.ke, subject "Paybill or Till Application".

When approved, you'll receive your shortcode (the Paybill or Till number) plus access to the M-Pesa Org portal (org.ke.m-pesa.com) to manage operators.

---

Part 2 — Manual M-Pesa (no API keys)

If you have a Paybill/Till but don't want to wire the API yet, you can start taking M-Pesa today:

1. In Omnix, open Settings → Payments → Manual M-Pesa (Paybill / Till). 2. Enter your Paybill number (and the account-number convention customers should use), or your Buy Goods Till number. 3. Save.

At the till, when the cashier picks M-Pesa, Omnix shows the Paybill/Till in big numbers to read out. The customer pays on their phone, then the cashier types the M-Pesa confirmation code (from the SMS) into the reference box and completes the sale.

---

Part 3 — Daraja STK push (the automatic flow)

This is what makes the customer's phone buzz with a PIN prompt and closes the sale hands-free. You do this on Safaricom's Daraja Developer Portal.

### Step 1 — Create a Safaricom Developer account Go to [developer.safaricom.co.ke](https://developer.safaricom.co.ke) and sign up. Verify your email and log in.

### Step 2 — Create an app On the portal dashboard, click Add a new app. Give it a name (e.g. "Omnix POS"). Tick the Lipa Na M-Pesa Online (and optionally M-Pesa Sandbox) products. Create it.

### Step 3 — Copy your Consumer Key + Consumer Secret Open the app you just created. You'll see a Consumer Key and a Consumer Secret. These are your API credentials.

### Step 4 — Get your Passkey Your Passkey is tied to your shortcode and the Lipa Na M-Pesa Online product: - Sandbox (testing): the portal's "Simulate" / "Test Credentials" page shows the sandbox shortcode (174379) and its passkey — use these to trial before going live. - Production: once your business shortcode is live, the passkey is issued with your go-live credentials (request it via the Daraja portal's "Go Live" flow, or from your Safaricom account manager).

### Step 5 — Go live In the Daraja portal, run the Go Live wizard for your app. It validates your shortcode and issues production credentials. Until then, keep using the sandbox values with Test mode ON.

### Step 6 — Enter everything in Omnix Open Settings → Payments → M-Pesa Daraja (Direct) and paste: - Consumer Key - Consumer Secret - Passkey - Shortcode (Paybill or Till number)

Leave Test mode ON while trialling with sandbox values; switch it OFF when you paste live credentials. Click Connect — Omnix verifies the keys immediately.

---

Reconciling payments

Every M-Pesa payment is stored against the sale with its transaction code, so you can match it to your M-Pesa statement. Daraja STK and Paystack record the code automatically; manual Paybill/Till uses whatever code the cashier entered.

When STK push hangs

The Safaricom sandbox (and occasionally production) can leave a request "pending". After 90 seconds Omnix shows Mark as paid manually — the cashier reads the M-Pesa code off the customer's SMS and confirms, so the till is never blocked.

Was this helpful?

If something is wrong or missing, WhatsApp the owner. We update the docs every time a real question comes in.