PHPackages                             shadrack-mballah/zenopay-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. shadrack-mballah/zenopay-laravel

ActiveLibrary[Payment Processing](/categories/payments)

shadrack-mballah/zenopay-laravel
================================

Laravel package for ZenoPay payment gateway – Mobile Money, Utility Payments, Disbursements, and SMS

v1.0.0(today)13↑2900%MITPHPPHP ^8.2

Since Apr 3Pushed todayCompare

[ Source](https://github.com/shadrackjm/zenopay-laravel)[ Packagist](https://packagist.org/packages/shadrack-mballah/zenopay-laravel)[ RSS](/packages/shadrack-mballah-zenopay-laravel/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (6)Versions (2)Used By (0)

ZenoPay Laravel
===============

[](#zenopay-laravel)

A Laravel 11+ package for the [ZenoPay](https://zenopay.net) payment gateway — Mobile Money, Utility Payments, Disbursements, and SMS.

Features
--------

[](#features)

FeatureDescription**Mobile Money**USSD push to M-Pesa, Airtel, Tigo/Mixx, Halopesa**Order Status**Query payment status by order ID**Utility Payments**LUKU/electricity, DSTV, Airtime, GEPG, and more**Utility Lookup**Verify meter/card before charging**Disbursements**Send money to any mobile wallet**Bulk SMS**Single and bulk SMS with sender ID support**Webhooks**Typed, API-key-verified webhook handlerRequirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11.x or 12.x

Installation
------------

[](#installation)

```
composer require shadrack-mballah/zenopay-laravel
```

Publish the config file:

```
php artisan vendor:publish --tag=zenopay-config
```

Add to `.env`:

```
ZENOPAY_API_KEY=your_api_key_here
ZENOPAY_WALLET_PIN=1234
ZENOPAY_WEBHOOK_URL=https://your-domain.com/zenopay/webhook
```

Usage
-----

[](#usage)

### Mobile Money Collection

[](#mobile-money-collection)

```
use ShadrackMballah\ZenoPay\Facades\ZenoPay;

// Initiate USSD push payment
$response = ZenoPay::mobileMoney()->collect(
    orderId:    (string) \Str::uuid(),
    buyerPhone: '0744963858',
    amount:     5000,
    buyerName:  'John Doe',
);

if ($response->isSuccess()) {
    // Payment request sent — await webhook for COMPLETED status
    $orderId = $response->orderId;
}

// Check payment status
$status = ZenoPay::mobileMoney()->orderStatus($orderId);

if ($status->isCompleted()) {
    // Payment confirmed
}
```

### Webhook Handling

[](#webhook-handling)

```
// routes/api.php
Route::post('/zenopay/webhook', ZenoPayWebhookController::class)
    ->withoutMiddleware('auth');
```

```
// app/Http/Controllers/ZenoPayWebhookController.php
use ShadrackMballah\ZenoPay\Webhooks\WebhookHandler;

class ZenoPayWebhookController extends Controller
{
    public function __invoke(Request $request)
    {
        $payload = WebhookHandler::parse($request);

        if ($payload->isCompleted()) {
            // Update your order as paid
            Order::where('zenopay_order_id', $payload->orderId)
                ->update(['status' => 'paid', 'payment_reference' => $payload->reference]);
        }

        return response()->json(['received' => true]);
    }
}
```

### Utility Payments

[](#utility-payments)

```
use ShadrackMballah\ZenoPay\Services\UtilityPaymentService;

// Look up a LUKU meter before charging
$lookup = ZenoPay::utility()->lookupMeter('12345678', (string) \Str::uuid());

if ($lookup->isValid()) {
    // $lookup->customerName is the meter owner name

    // Pay electricity
    $result = ZenoPay::utility()->payElectricity(
        transId:     (string) \Str::uuid(),
        meterNumber: '12345678',
        amount:      10000,
        msisdn:      '0744963858',
    );
}

// Pay DSTV
ZenoPay::utility()->payDstv($transId, $smartCardNo, 50000, $msisdn);

// Buy airtime
ZenoPay::utility()->buyAirtime($transId, '0744963858', 1000);

// Pay government bill (GEPG)
ZenoPay::utility()->payGepg($transId, $controlNumber, $amount, $msisdn);

// Custom utility
ZenoPay::utility()->pay($transId, UtilityPaymentService::STARTIMES, $ref, $amount, $msisdn);
```

### Disbursements

[](#disbursements)

```
// Send money to any Tanzanian mobile wallet
$result = ZenoPay::disbursement()->send(
    transId: (string) \Str::uuid(),
    phone:   '0744963858',
    amount:  25000,
);

if ($result->isSuccess()) {
    // $result->walletBalance — your remaining balance
    // $result->amountDelivered — amount received by customer
}
```

### SMS

[](#sms)

```
// Single SMS
ZenoPay::sms()->send(
    recipient: '255744963858',
    message:   'Your LUKU token: 1234-5678-9012',
    senderId:  'MYAPP',
);

// Bulk SMS
ZenoPay::sms()->sendBulk(
    recipients: ['255744963858', '255712345678'],
    message:    'Your payment has been received.',
    senderId:   'MYAPP',
);

// Request a new sender ID
ZenoPay::sms()->requestSenderId('MYAPP', 'Transactional alerts for MYAPP');
```

### Supported Utility Codes

[](#supported-utility-codes)

CodeDescriptionLookup`LUKU`Electricity (TANESCO)✅`TUKUZA`Electricity (prepaid)✅`TOP`Airtime (all networks)❌`NCARD`N-Card✅`DSTV`DSTV Subscription✅`AZAMTV`Azam TV✅`STARTIMES`StarTimes✅`ZUKU`Zuku TV✅`SMILE`Smile Internet✅`ZUKUFIBER`Zuku Fiber✅`TTCL`TTCL Internet❌`GEPG`Government bills✅`ZANMALIPO`Zanzibar government bills✅`PW`Precision Air✅`COASTAL`Coastal Aviation✅`AURIC`Auric Air✅License
-------

[](#license)

MIT

###  Health Score

41

—

FairBetter than 88% of packages

Maintenance100

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/49c2117621be052cfc27df35b589989bd02f9a3a64d1db375c20cff1b568b3c5?d=identicon)[shadrackmballah](/maintainers/shadrackmballah)

---

Top Contributors

[![shadrackjm](https://avatars.githubusercontent.com/u/129520133?v=4)](https://github.com/shadrackjm "shadrackjm (2 commits)")

---

Tags

laravelpaymentmpesaairtelmobile-moneytanzaniatigopesazenopayhalopesa

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/shadrack-mballah-zenopay-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/shadrack-mballah-zenopay-laravel/health.svg)](https://phpackages.com/packages/shadrack-mballah-zenopay-laravel)
```

###  Alternatives

[sebdesign/laravel-viva-payments

A Laravel package for integrating the Viva Payments gateway

4845.9k](/packages/sebdesign-laravel-viva-payments)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
