🔥Only 3 project slots left this month — offer ends in 24d 6h 21m
A Webzilla Creators product

M-Pesa Done Right, In Your App.

The pattern we use on every Webzilla Creators payment integration. Designed around Daraja's real-world edge cases — duplicate callbacks, sandbox unreliability, B2C/C2B traps — not the docs' version.

At a Glance

Category
developer tool
Industry
payments

Anyone who's integrated M-Pesa Daraja into a Laravel app knows the list: sandbox callbacks that "might never work or only work 40% of the time". Self-signed certs that "fail silently in production". The B2C/C2B trap where a shortcode applied for one is silently rejected for the other — discovered "during production onboarding" after you've built both. Initiator-password documentation links that don't work. Daraja itself doesn't retry failed callbacks; if your endpoint blips once, you have to query Transaction Status yourself.

We got tired of rebuilding the same idempotency layer, the same callback verifier, the same reconciliation pattern. The Laravel Payment Kit is that pattern, packaged up — used internally on every Webzilla Creators payment project, including KaziPay, SchoolPay, and ChemistOS. STK Push, B2C, paybill, callback verification, idempotency, refunds, and reconciliation, all designed around the actual Daraja edge cases (not the documentation's wishful version).

We deliver it as a fixed-scope engagement: install the kit, configure your callbacks, harden against duplicate notifications, wire it into Filament admin, and hand you an integration that won't surprise you in production. No public Composer package. No copy-paste-from-blog. Just an integration that's already running in production on our own products.

The Problem

What's broken today

  • Daraja sandbox callbacks fail ~60% of the time — and the docs don't admit it
  • Self-signed certs "load fine in your browser, fail silently for Safaricom" in production
  • The cert posted in Daraja documentation doesn't match the cert used by the official SDK
  • B2C and C2B shortcodes can't share one app — discovered at go-live, after you've built both flows
  • Daraja never retries a failed callback — if your endpoint blips once, you owe yourself a Transaction Status query
  • Duplicate callbacks become double-billed customers if you didn't add idempotency keys yourself
The Solution

How Laravel Payment Kit fixes it

  • STK Push, B2C, paybill, and till flows already built and running in our own products
  • Idempotency keys and signed callback verification baked in — duplicate notifications don't become duplicate charges
  • B2C/C2B separation handled correctly so you don't discover the shortcode trap at go-live
  • Automatic Transaction Status reconciliation when callbacks silently drop
  • Filament admin and React/Inertia checkout components ready to wire
  • Delivered with our team alongside, not as code you have to figure out alone
Features

Everything you need, built in

STK Push that doesn't double-bill

Idempotency keys and signed callback verification baked in — duplicate Daraja notifications don't become duplicate charges on your customer's account.

B2C disbursement

Bulk payouts for refunds, salaries, or vendor payments — with the B2C shortcode separation handled correctly from day one.

Paybill and till collection

Receive paybill payments with auto account-number routing into your domain model.

Transaction Status reconciliation

When Daraja silently drops a callback (which it will), the kit reconciles via Transaction Status Query rather than letting your books drift.

Filament admin

Drop-in resource for inspecting transactions, retrying callbacks, and processing refunds.

React/Inertia checkout components

Ready to theme. Your designers don't have to start from blank.

What you get out of it

  • Avoid the Daraja edge cases — duplicate billing, missed callbacks, broken refunds, B2C/C2B traps
  • Get a payments integration that's already running in production on our other products
  • Stop staying up reading "INFURIATING SAFARICOM DARAJA" gists at 1am

Who it's for

  • New SaaS products adding Kenyan payments without rebuilding the wheel
  • Existing Laravel apps replacing a fragile in-house M-Pesa integration
  • Marketplaces needing split payouts to multiple vendors via B2C
FAQs

Common questions

No — it's not a public package. It's delivered as a fixed-scope integration engagement so we own the result with you, including the production cert configuration that the public docs get wrong.

Want Laravel Payment Kit for your business?

Webzilla Creators ships and supports Laravel Payment Kit for Kenyan and pan-African organisations.