emleons/pesapal-php

General-purpose Pesapal PHP integration library — Easily authenticate, create payment orders, handle IPNs, and check transaction status with minimal setup.

v1.0.0 2025-08-11 00:39 UTC

This package is auto-updated.

Last update: 2025-09-01 09:09:04 UTC


README

Latest Version License PHP Version

Please Check the Official Pesapal API Documentation: https://developer.pesapal.com/

A modern PHP wrapper for the Pesapal v3 API, providing easy integration with Pesapal's payment services. This SDK implements all core API endpoints with PHP best practices.

Features

  • Complete API Coverage: All essential Pesapal API v3 endpoints implemented
  • Automatic Token Handling: OAuth tokens managed automatically
  • Sandbox Support: Built-in sandbox mode for testing
  • Strict Typing: PHP 7.4+ type declarations for reliability
  • PSR Standards: Works with most php FrameWork Laravel, Codeigniter 4, Symfony ..

Installation

composer require emleons/pesapal-php

Basic Usage

use Emleons\PesapalPhp\Pesa;

$pesa = new Pesa([
    'consumer_key'    => 'your_key_here',
    'consumer_secret' => 'your_secret_here',
    'is_sandbox'      => true // Set false for production
]);

// Register IPN URL (GET or POST)
$ipnResponse = $pesa->registerIpnUrl(
    'https://yourdomain.com/ipn',
    'POST'
);



// Submit payment
$payment = $pesa->makeThePayment(
    [
    "id" => $randomString,
    "currency" => "TZS",
    "amount" => 10000.00,
    "description" => "Payment description goes here",
    "callback_url" => "http://localhost:8080/pesapal/pin.php",
    "redirect_mode" => "",
    "notification_id" => "030bf9b0-a5d7-4cbd-b5cb-dbb88f03b75e",
    "branch" => "Store Name - HQ",
    "billing_address" => [
        "email_address" => "john.doe@example.com",
        "phone_number" => "0723xxxxxx",
        "country_code" => "KE",
        "first_name" => "John",
        "middle_name" => "",
        "last_name" => "Doe",
        "line_1" => "Pesapal Limited",
        "line_2" => "",
        "city" => "",
        "state" => "",
        "postal_code" => "",
        "zip_code" => ""
    ]
]
);

// Get More Methods from Pesa class

Official API Reference

For complete API specifications and required parameters, always refer to the: 👉 Official Pesapal API Documentation

Particularly useful sections:

Testing with Sandbox

  1. Get sandbox credentials from Pesapal Developer Portal
  2. Set is_sandbox => true

Security Notice

Always:

This unofficial SDK is maintained by emleonstz as an open source project.
Pesapal is not responsible for this implementation.