Skip to content
Mizani by eazysoft
The M-Pesa dashboard for Laravel

Did that payment really go through?

Mizani answers in seconds. See every M-Pesa payment as it lands, catch the callbacks that never arrived, watch Daraja's health and reconcile against Safaricom, without opening the logs or the org portal.

Not sure yet? Book a 30-minute walk-through

  • Your data stays in your database
  • No licence check, ever
  • Laravel 12 and 13
The Mizani overview: today's payments, calls out and median response, and a Needs a human list led by a callback handler that threw.
The customer paid. Your code threw. Mizani caught it. Fix the bug, then replay the callback.
Take the tour

What you see on a normal day.

Real screens from Mizani running on sample data: a made-up shop on paybill 512345, two weeks of payments, and the usual handful of things that went wrong.

01

Start with what needs a person.

The overview counts today’s payments and calls, and lists anything a human has to act on, with the button that fixes it.

The overview screen with today’s totals, a payments-per-hour chart and the Needs a human list.
Problems first Three things need a person today. Everything else is fine.
One click to the fix Replay a failed callback, confirm an imported payment, or sweep stuck prompts.
02

Every payment, searchable.

Search by receipt, phone or reference. Filter by state. Export what finance asks for.

The ledger: receipts, masked phone numbers, amounts, references and states.
Prompts with no answer yet Pending past five minutes? Mizani asks Safaricom what happened.
Found by reconciliation Safaricom has these payments; your app never heard about them.
03

Know if it is you or Safaricom.

Failure rates and response times for every Daraja call, and every result code explained with whose doing it was.

Health: calls out, failures, customer declines, median and slowest response, callbacks still missing, and the same per endpoint.
Callbacks that never came Three prompts Safaricom accepted and never answered.
Whose doing? Customers cancelling is not an outage. Declines and faults are counted apart.
04

Fix it and send it through again.

When your handler throws, you see the exact error and the receipt, and replay the stored callback once the bug is fixed.

Callbacks: one handler failure with its error message and a Replay button, above the callback list.
The exact error Which payment, which exception, when.
Safe to replay Replays never double the ledger, and every one is audited.
Before you buy

See it live, with the people who built it.

Book a 30-minute walk-through. We will show you Mizani running, answer your questions, and tell you honestly whether it fits your application.

  • The panel, live

    Every screen, on sample data, with time to ask about each one.

  • Your setup

    Your Laravel and Daraja versions, your paybills and tills, and how your callbacks are handled today.

  • An honest answer

    Whether Mizani fits, which edition you need, and what installing it would take.

What it does

Built for the people who answer “did my payment go through?”

The technical admins who keep M-Pesa running, the way Horizon is built for the people who run queues.

Payment ledger

Every STK Push, C2B and B2C payment with its receipt, phone, amount and shortcode, searchable by any of them.

Health

How often each Daraja call fails and how slowly it answers, every result code explained, and whether callbacks arrived at all.

Missing callbacks

Payments that started but never heard back, checked with Safaricom from the same screen.

Reconciliation

Safaricom's own record beside yours, and the button that closes the gap. Older than 48 hours? Upload the org portal's PDF statement.

Balances, kept private

The float per paybill and till, visible only to the people you allow.

People and audit log

Who may resolve, replay, import or ask for a balance, and a record of everything anybody did.

How it fits

Inside your app, on your data, under your rules.

Mizani is a standalone panel that mounts in your Laravel application at /mizani. It reads the payments Laravel Daraja already records.

No phone-home

Nothing checks a licence or calls out. It keeps working whatever happens to us.

Your users, your gate

No second login. A gate over your own users decides who gets in.

Composer only

No npm, no Vite, no published assets to keep in step.

Your database

Payments stay in your tables. Nothing leaves your servers.

Install

Four steps, about ten minutes.

Your licence comes with a token for our private Composer repository. Everything else is ordinary Laravel.

  1. 01

    Buy a licence

    Your account page then shows the repository address and your token.

  2. 02

    Point Composer at the repository

    Add it to your application, and keep the token out of the repository.

    "repositories": [
        {"type": "composer", "url": "https://repo.mizani.eazysoft.africa"}
    ]
    
    composer config --global --auth http-basic.repo.mizani.eazysoft.africa <username> <token>
  3. 03

    Require the panel and the M-Pesa driver

    The ledger comes with them. Migrate to create its tables.

    composer require mizani/panel mizani/mpesa
    php artisan migrate
  4. 04

    Decide who gets in

    Until you define the gate, the panel is closed to everybody. Then open /mizani.

    Gate::define('viewMizaniPanel', fn ($user) => $user->isAdmin());
Pricing

One business, or a platform of them.

Each licence covers one production application, with any number of development, staging and CI copies, and twelve months of updates. When the twelve months end, everything you installed keeps working.

In Kenya?

Mizani

The M-Pesa dashboard for one Laravel application.

USD 200

One-off, includes 12 months of updates. Renew only if you want newer versions.

Not on sale yet.

  • Payment ledger, searchable by phone, receipt or reference
  • Health: failures, latency and result codes, with whose doing each was
  • Missing callbacks, checked with Safaricom from the screen
  • Reconciliation against Pull Transactions and statement PDFs
  • Balances per paybill and till, shown only to who you allow
  • People and abilities, and an audit log of what anybody did
  • One production application; development, staging and CI copies are free
  • Documentation; support consultations billed separately

Mizani Pro

For platforms

Multi-tenant Mizani for platforms whose businesses each have their own paybill.

USD 400

One-off, includes 12 months of updates. Renew only if you want newer versions.

Not on sale yet.

  • Everything in Mizani
  • Many businesses in one installation, each on its own paybill or till
  • Every panel request scoped to the businesses a user was granted
  • Fleet: every business's health on one screen, worst first
  • Doctor per business, with its own credentials and callback URLs
  • Support lookup that never shows a business's money
  • Documentation; support consultations billed separately
FAQ

Before you buy

Ask us something else

Can I try Mizani before I buy?

Not as a download: nothing in Mizani checks a licence, so a trial copy would simply be a copy. Instead, book a 30-minute walk-through. We show you the panel live, answer questions about your setup, and tell you honestly whether it fits. Because the code is yours once installed, sales are final, so the walk-through is the way to be sure first.

Does Mizani phone home or check a licence?

No. Nothing in Mizani checks a licence, calls home or can be switched off remotely. The panel's update check reads one static file, the same for everyone, with nothing about who asked. Your payment data stays in your own database.

What happens when my twelve months of updates end?

Everything you installed keeps working, for good. Every version released during your twelve months still installs, on a fresh server or in CI. Renewing gives you the versions released since.

What do I need to run it?

A Laravel 12 or 13 application on PHP 8.3 or later that takes M-Pesa through Laravel Daraja 5.1 or later. Statement import also needs pdftotext from Poppler; without it, everything else works.

Does it need npm, a build step or a second login?

No. The panel ships its own compiled styles, so installing it is composer require and nothing else. There are no Mizani users: access runs through a gate you define over your own users, so removing somebody from your app removes them from the panel.

What support is included?

The documentation and Mizani’s built-in Doctor, which names most configuration problems outright. If you are still stuck, book a support consultation with the engineers who built it; consultations are billed separately, and we confirm the cost first.

What counts as one production application?

One application serving real customers. Development machines, staging servers and CI pipelines for that application are included at no extra cost.

Which edition do I need?

Mizani if you run M-Pesa for one business, even across several paybills and tills. Mizani Pro if your platform runs M-Pesa for many businesses, each with its own paybill or till, such as an ISP billing platform.

Stop answering payment tickets from the logs.

Want a walk-through first? We will show you Mizani on a call and answer your questions.