PHPackages                             intelfric-technologies/clickpesa-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. [API Development](/categories/api)
4. /
5. intelfric-technologies/clickpesa-laravel

ActiveLibrary[API Development](/categories/api)

intelfric-technologies/clickpesa-laravel
========================================

A Laravel package for integrating with the ClickPesa API.

1.0.0(8mo ago)01MITPHPPHP ^8.1|^8.2|^8.3

Since Oct 14Pushed 8mo agoCompare

[ Source](https://github.com/INTELFRIC/ClickPesa)[ Packagist](https://packagist.org/packages/intelfric-technologies/clickpesa-laravel)[ Docs](https://github.com/INTELFRIC/ClickPesa)[ RSS](/packages/intelfric-technologies-clickpesa-laravel/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (6)Versions (2)Used By (0)

intelfric Technologies Company limited
======================================

[](#intelfric-technologies-company-limited)

At Intelfric, we harness the power of artificial intelligence to build smart, adaptable, and future-ready solutions for organizations and individuals. Our team of AI specialists, software engineers, and researchers provides end-to-end services from research and prototyping to full-scale deployment and long-term support.

We specialize in delivering cloud-based SaaS platforms, including AI-powered CRM, HRM, inventory management systems, and fully customized enterprise solutions. By merging emerging technologies with practical, real-world applications, we ensure our clients stay ahead in an ever-evolving digital landscape.

What sets Intelfric apart is our commitment to ethical, secure, and responsible AI. Every solution is designed with transparency, fairness, and data privacy at its core. For us, innovation is not just about technology it’s about creating purposeful tools that align with our clients’ values and visions.

ClickPesa Laravel Package
=========================

[](#clickpesa-laravel-package)

A Laravel package for integrating with the ClickPesa API, providing easy access to authorization, payments, payouts, and BillPay functionalities.

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

[](#installation)

You can install the package via Composer:

```
composer require intelfric-technologies/clickpesa-laravel
```

After installing the package, publish its configuration file:

```
php artisan vendor:publish --provider="ClickPesa\\Laravel\\ClickPesaServiceProvider" --tag="clickpesa-config"
```

This will create a `clickpesa.php` file in your `config` directory.

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

[](#configuration)

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

```
CLICKPESA_API_KEY=your_clickpesa_api_key
CLICKPESA_CLIENT_ID=your_clickpesa_client_id
CLICKPESA_BASE_URL=https://api.clickpesa.com/ # Optional, default is provided
CLICKPESA_TOKEN_CACHE_LIFETIME=3500 # Optional, default is 3500 seconds (58 minutes)

# Webhook Configuration (Optional)
CLICKPESA_WEBHOOK_SECRET=your_webhook_secret
CLICKPESA_WEBHOOK_ENABLED=true
CLICKPESA_WEBHOOK_PATH=clickpesa/webhook
```

Usage
-----

[](#usage)

The package provides a `ClickPesa` facade for easy access to the API client. You can also resolve the `ClickPesaClient` directly from the service container.

### Authorization

[](#authorization)

The authorization token is automatically managed by the `ClickPesaClient`. It will generate and refresh the token as needed. You typically won't need to interact with this directly.

```
use ClickPesa\Laravel\Facades\ClickPesa;

// The token is handled internally, but you can force a refresh if needed
try {
    $response = ClickPesa::authorization()->generateToken();
    // This will return the token details, but it's usually not necessary to call directly.
    // The client automatically fetches and caches it.
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### Payments

[](#payments)

#### Preview USSD-PUSH request

[](#preview-ussd-push-request)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your USSD-PUSH preview data
    ];
    $response = ClickPesa::payments()->previewUssdPush($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Initiate USSD-PUSH request

[](#initiate-ussd-push-request)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your USSD-PUSH initiation data
    ];
    $response = ClickPesa::payments()->initiateUssdPush($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Preview Card Payment

[](#preview-card-payment)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your card payment preview data
    ];
    $response = ClickPesa::payments()->previewCardPayment($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Initiate Card Payment

[](#initiate-card-payment)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your card payment initiation data
    ];
    $response = ClickPesa::payments()->initiateCardPayment($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Query Payment Status

[](#query-payment-status)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $transactionId = 'your_transaction_id';
    $response = ClickPesa::payments()->queryPaymentStatus($transactionId);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Query All Payments

[](#query-all-payments)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $query = [
        'from' => '2023-01-01',
        'to' => '2023-12-31',
        'page' => 1,
        'limit' => 10
    ];
    $response = ClickPesa::payments()->queryAllPayments($query);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### Payouts

[](#payouts)

#### Preview Mobile Money Payout

[](#preview-mobile-money-payout)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your mobile money payout preview data
    ];
    $response = ClickPesa::payouts()->previewMobileMoneyPayout($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Create Mobile Money Payout

[](#create-mobile-money-payout)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your mobile money payout creation data
    ];
    $response = ClickPesa::payouts()->createMobileMoneyPayout($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Preview Bank Payout

[](#preview-bank-payout)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your bank payout preview data
    ];
    $response = ClickPesa::payouts()->previewBankPayout($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Create Bank Payout

[](#create-bank-payout)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your bank payout creation data
    ];
    $response = ClickPesa::payouts()->createBankPayout($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Query Payout Status

[](#query-payout-status)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $transactionId = 'your_payout_transaction_id';
    $response = ClickPesa::payouts()->queryPayoutStatus($transactionId);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Query All Payouts

[](#query-all-payouts)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $query = [
        'from' => '2023-01-01',
        'to' => '2023-12-31',
        'page' => 1,
        'limit' => 10
    ];
    $response = ClickPesa::payouts()->queryAllPayouts($query);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Retrieve Banks List

[](#retrieve-banks-list)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $response = ClickPesa::payouts()->retrieveBanksList();
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### BillPay

[](#billpay)

#### Create Order Control Number

[](#create-order-control-number)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your order control number creation data
    ];
    $response = ClickPesa::billpay()->createOrderControlNumber($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Create Customer Control Number

[](#create-customer-control-number)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        // ... your customer control number creation data
    ];
    $response = ClickPesa::billpay()->createCustomerControlNumber($data);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Query BillPay Number Details

[](#query-billpay-number-details)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $controlNumber = 'your_control_number';
    $response = ClickPesa::billpay()->queryBillPayNumberDetails($controlNumber);
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### Checkout Link

[](#checkout-link)

#### Generate Checkout Link

[](#generate-checkout-link)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        'amount' => 50000,
        'currency' => 'TZS',
        'reference' => 'ORDER-001',
        'description' => 'Payment for Order #001',
        'redirect_url' => 'https://yourdomain.com/payment/success',
        'cancel_url' => 'https://yourdomain.com/payment/cancel',
    ];
    $response = ClickPesa::checkoutLink()->generate($data);

    // Returns checkout link URL
    $checkoutUrl = $response['checkout_url'];
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### Payout Link

[](#payout-link)

#### Generate Payout Link

[](#generate-payout-link)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $data = [
        'amount' => 25000,
        'currency' => 'TZS',
        'reference' => 'PAYOUT-001',
        'description' => 'Payout for service',
        'recipient_name' => 'John Doe',
    ];
    $response = ClickPesa::payoutLink()->generate($data);

    // Returns payout link URL
    $payoutUrl = $response['payout_url'];
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### Account

[](#account)

#### Retrieve Account Balance

[](#retrieve-account-balance)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $response = ClickPesa::account()->getBalance();

    // Returns account balance details
    $balance = $response['balance'];
    $currency = $response['currency'];
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

#### Retrieve Account Statement

[](#retrieve-account-statement)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $query = [
        'from' => '2023-01-01',
        'to' => '2023-12-31',
        'page' => 1,
        'limit' => 50
    ];
    $response = ClickPesa::account()->getStatement($query);

    // Returns account transactions
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

### Exchange Rates

[](#exchange-rates)

#### Retrieve Exchange Rates

[](#retrieve-exchange-rates)

```
use ClickPesa\Laravel\Facades\ClickPesa;

try {
    $response = ClickPesa::exchangeRates()->get();

    // Returns current exchange rates
    print_r($response);
} catch (\ClickPesa\Laravel\Exceptions\ClickPesaException $e) {
    echo "Error: " . $e->getMessage();
}
```

Webhooks
--------

[](#webhooks)

ClickPesa sends webhooks to notify your application about payment events. The package provides built-in webhook handling.

### Setup Webhooks

[](#setup-webhooks)

1. Add your webhook secret to `.env`:

    ```
    CLICKPESA_WEBHOOK_SECRET=your_webhook_secret_from_clickpesa
    ```
2. Register your webhook URL with ClickPesa:

    ```
    https://yourdomain.com/clickpesa/webhook

    ```

### Available Events

[](#available-events)

The package dispatches the following Laravel events:

- `ClickPesa\Laravel\Events\PaymentReceived` - When a payment is received/completed
- `ClickPesa\Laravel\Events\PayoutCompleted` - When a payout is processed/completed
- `ClickPesa\Laravel\Events\BillPayReceived` - When a BillPay payment is received

### Listening to Webhook Events

[](#listening-to-webhook-events)

Create a listener:

```
