PHPackages                             chizzoz/laravel-pawapay - 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. chizzoz/laravel-pawapay

ActiveLibrary[Payment Processing](/categories/payments)

chizzoz/laravel-pawapay
=======================

A Laravel package for PawaPay v2 integration with mobile money providers in Zambia.

00PHP

Since Jun 13Pushed todayCompare

[ Source](https://github.com/Chizzoz/laravel-pawapay)[ Packagist](https://packagist.org/packages/chizzoz/laravel-pawapay)[ RSS](/packages/chizzoz-laravel-pawapay/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel PawaPay Package
=======================

[](#laravel-pawapay-package)

A Laravel package for simple and elegant integration with the **PawaPay v2 API**, supporting collections (deposits), disbursements (payouts), refunds, status checks, and balance lookups.

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

[](#installation)

You can install the package via Composer:

```
composer require chizzoz/laravel-pawapay
```

The package will automatically register its service provider and facade.

### Publish Configuration

[](#publish-configuration)

You can publish the configuration file using:

```
php artisan vendor:publish --provider="Chizzoz\PawaPay\PawaPayServiceProvider" --tag="pawapay-config"
```

This will create a `config/pawapay.php` file in your application.

Configuration
-------------

[](#configuration)

Add the following environment variables to your `.env` file:

```
PAWAPAY_API_KEY="your-api-key"
PAWAPAY_BASE_URL="https://api.sandbox.pawapay.io/v2" # or live url
PAWAPAY_MODE="sandbox" # sandbox or live
PAWAPAY_KEY_ID="1"
PAWAPAY_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n..." # Required for signatures in live mode
```

Usage
-----

[](#usage)

You can use the `PawaPay` facade or inject `Chizzoz\PawaPay\PawaPayService` directly.

### Available Methods

[](#available-methods)

---

#### 1. Initiate a Deposit (Collection)

[](#1-initiate-a-deposit-collection)

Request a mobile money payment from a customer.

```
use Chizzoz\PawaPay\Facades\PawaPay;

$response = PawaPay::deposit(
    depositId: 'unique-deposit-uuid',
    amount: '10.00',
    phoneNumber: '0971234567',
    provider: 'MTN_MOMO_ZMB', // e.g. MTN_MOMO_ZMB, AIRTEL_OAPI_ZMB, ZAMTEL_ZMB
    currency: 'ZMW',          // Optional, default: 'ZMW'
    description: 'Payment description', // Optional, max 22 chars (alphanumeric/spaces)
    metadata: ['order_id' => '123'] // Optional
);
```

#### 2. Initiate a Payout (Disbursement)

[](#2-initiate-a-payout-disbursement)

Send money to a customer's mobile money account.

```
$response = PawaPay::payout(
    payoutId: 'unique-payout-uuid',
    amount: '50.00',
    phoneNumber: '0971234567',
    provider: 'AIRTEL_OAPI_ZMB',
    currency: 'ZMW',          // Optional, default: 'ZMW'
    description: 'Payout description',  // Optional, max 22 chars
    metadata: ['user_id' => '456']      // Optional
);
```

#### 3. Initiate a Refund

[](#3-initiate-a-refund)

Refund a successful deposit back to the customer.

```
$response = PawaPay::refund(
    refundId: 'unique-refund-uuid',
    depositId: 'original-deposit-uuid',
    amount: '10.00',
    currency: 'ZMW', // Optional, default: 'ZMW'
    metadata: ['reason' => 'user_request'] // Optional
);
```

#### 4. Check Deposit Status

[](#4-check-deposit-status)

Query the status of an initiated deposit transaction.

```
$status = PawaPay::checkDepositStatus('unique-deposit-uuid');
// Returns array containing transaction status (e.g. COMPLETED, FAILED, PENDING)
```

#### 5. Check Payout Status

[](#5-check-payout-status)

Query the status of an initiated payout transaction.

```
$status = PawaPay::checkPayoutStatus('unique-payout-uuid');
```

#### 6. Check Refund Status

[](#6-check-refund-status)

Query the status of an initiated refund transaction.

```
$status = PawaPay::checkRefundStatus('unique-refund-uuid');
```

#### 7. Get Wallet Balance

[](#7-get-wallet-balance)

Fetch the current wallet balances for a specific country.

```
$balance = PawaPay::getBalance(country: 'ZMB'); // Optional, default: 'ZMB'
```

#### 8. Predict Provider

[](#8-predict-provider)

Automatically predict the mobile money provider/operator from a phone number.

```
$prediction = PawaPay::predictProvider('0971234567');
```

#### 9. Get Public Keys

[](#9-get-public-keys)

Fetch PawaPay's current public ECDSA keys used for verifying HTTP signatures.

```
$keys = PawaPay::getPublicKeys();
```

#### 10. Check Provider Availability

[](#10-check-provider-availability)

Fetch mobile money provider status and availability for deposits/payouts.

```
$availability = PawaPay::getAvailability(
    country: 'ZMB',       // Optional, default: 'ZMB'
    operationType: 'DEPOSIT' // Optional, e.g. 'DEPOSIT' or 'PAYOUT'
);
```

#### 11. Get Active Configuration

[](#11-get-active-configuration)

Fetch the active PawaPay merchant configurations (countries, operators, rules).

```
$config = PawaPay::getActiveConf(
    country: 'ZMB',
    operationType: 'DEPOSIT'
);
```

#### 12. Get Provider Code (Helper Method)

[](#12-get-provider-code-helper-method)

Map simple network names (`MTN`, `AIRTEL`, `ZAMTEL`) to their full PawaPay provider code strings.

```
$code = PawaPay::getProviderCode('MTN'); // returns 'MTN_MOMO_ZMB'
$code = PawaPay::getProviderCode('AIRTEL'); // returns 'AIRTEL_OAPI_ZMB'
$code = PawaPay::getProviderCode('ZAMTEL'); // returns 'ZAMTEL_ZMB'
```

###  Health Score

20

—

LowBetter than 13% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/17289498?v=4)[Chizzo Cheese](/maintainers/chizzoz)[@Chizzoz](https://github.com/Chizzoz)

### Embed Badge

![Health badge](/badges/chizzoz-laravel-pawapay/health.svg)

```
[![Health](https://phpackages.com/badges/chizzoz-laravel-pawapay/health.svg)](https://phpackages.com/packages/chizzoz-laravel-pawapay)
```

###  Alternatives

[omnipay/coinbase

Coinbase driver for the Omnipay payment processing library

18570.2k1](/packages/omnipay-coinbase)[oxid-esales/amazon-pay-module

AmazonPay module for OXID

1824.3k](/packages/oxid-esales-amazon-pay-module)[yenepay/php-sdk

YenePay SDK for PHP

112.7k](/packages/yenepay-php-sdk)

PHPackages © 2026

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