PHPackages                             akika/laravel-mpesa-multivendor - 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. akika/laravel-mpesa-multivendor

ActiveLibrary[Payment Processing](/categories/payments)

akika/laravel-mpesa-multivendor
===============================

A multivendor Laravel package for integrating Safaricom M-Pesa Daraja APIs. It allows seamless M-Pesa transactions for multiple vendors.

v0.4.4(2mo ago)01.4k↓85%1MITPHPPHP ^8.0CI passing

Since Jun 17Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/akikadigital/laravel-mpesa-multivendor)[ Packagist](https://packagist.org/packages/akika/laravel-mpesa-multivendor)[ Docs](https://github.com/akikadigital/laravel-mpesa-multivendor)[ RSS](/packages/akika-laravel-mpesa-multivendor/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (8)Versions (41)Used By (0)

[![Tests](https://github.com/akikadigital/laravel-mpesa-multivendor/actions/workflows/tests.yml/badge.svg)](https://github.com/akikadigital/laravel-mpesa-multivendor/actions/workflows/tests.yml/badge.svg)[![Coverage](https://camo.githubusercontent.com/32855e94577df9d0a30995653b17d33a5fbfdf644518f96ea0374313397d19b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d627269676874677265656e)](https://camo.githubusercontent.com/32855e94577df9d0a30995653b17d33a5fbfdf644518f96ea0374313397d19b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f7665726167652d3130302532352d627269676874677265656e)[![Laravel](https://camo.githubusercontent.com/12cfdd982ddea59fce11726e69563f16f0befade7f22c0aae29170eed062f40f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d38253743392537433130253743313125374331322d726564)](https://camo.githubusercontent.com/12cfdd982ddea59fce11726e69563f16f0befade7f22c0aae29170eed062f40f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d38253743392537433130253743313125374331322d726564)[![License](https://camo.githubusercontent.com/b8cadaa967891081f8f165695470689986c028821dd8a040132f6e661795dc0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c7565)](https://camo.githubusercontent.com/b8cadaa967891081f8f165695470689986c028821dd8a040132f6e661795dc0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c7565)

Laravel Mpesa Multivendor Package by [Akika Digital](https://akika.digital)
===========================================================================

[](#laravel-mpesa-multivendor-package-by-akika-digital)

Laravel M-Pesa Multivendor is a fully tested Laravel package for integrating [Mpesa Daraja API's](https://developer.safaricom.co.ke/APIs). It supports multiple shortcodes within the same application and provides a clean service-based interface for STK Push, C2B, B2C, B2B, Account Balance, Reversals, Dynamic QR, Bill Manager, Tax Remittance, Ratiba Standing Orders, Transaction History, IMSI Lookup, Organization Verification, and more.

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

[](#installation)

You can install the package via composer:

```
composer require akika/laravel-mpesa-multivendor
```

After installing the package, enable the package using the following command:

```
php artisan mpesa-multivendor:install
```

The above command will not only enable the package, but also publish the config file. You can use the below command to republish the config file.

```
php artisan vendor:publish --tag=mpesa-multivendor-config
```

This will generate a mpesa.php file in your config directory where you can set your Mpesa credentials and other configuration options.

Architecture
------------

[](#architecture)

The package uses a service-based architecture.

Available services:

```
Mpesa::using($credentials)->stk();
Mpesa::using($credentials)->c2b();
Mpesa::using($credentials)->b2c();
Mpesa::using($credentials)->b2b();
Mpesa::using($credentials)->accountBalance();
Mpesa::using($credentials)->dynamicQr();
Mpesa::using($credentials)->billManager();
Mpesa::using($credentials)->taxRemittance();
Mpesa::using($credentials)->ratiba();
Mpesa::using($credentials)->transactionHistory();
Mpesa::using($credentials)->transactionStatus();
Mpesa::using($credentials)->pochi();
Mpesa::using($credentials)->org();
Mpesa::using($credentials)->imsi();
Mpesa::using($credentials)->reversal();
```

Credentials consists of the following array. The details are shortcode based to support multivendor.

```
$credentials = [
    'shortcode' => '600000',
    'consumer_key' => 'xxx',
    'consumer_secret' => 'xxx',
    'api_username' => 'testapi',
    'api_password' => 'xxx',
    'passkey' => 'xxx',
];
```

Details of the config file
--------------------------

[](#details-of-the-config-file)

```
return [
    // Define mpesa environment
    'env' => env('MPESA_ENV', 'sandbox'),
    'debug' => env('MPESA_DEBUG_MODE', true),
    'sandbox' => [
        'url' => 'https://sandbox.safaricom.co.ke',
    ],
    'production' => [
        'url' => 'https://api.safaricom.co.ke',
    ],
];
```

.env file Setup
---------------

[](#env-file-setup)

Add the following configurations into the .env file

```
MPESA_ENV=
MPESA_DEBUG_MODE=
```

The value is either `production` or `sandbox`

NOTE: The mpesa.php config file sets the default `MPESA_ENV` value to `sandbox`. This will always load sandbox urls.

Function Responses
------------------

[](#function-responses)

All responses, except the token generation response, conform to the responses documented on the daraja portal.

Usage
-----

[](#usage)

### Initializing Mpesa

[](#initializing-mpesa)

Mpesa can be initialized in two ways:

#### Using Default Configuration

[](#using-default-configuration)

```
use Akika\LaravelMpesaMultivendor\Mpesa;

$mpesa = Mpesa::default();
```

#### Using Vendor Credentials

[](#using-vendor-credentials)

```
use Akika\Mpesa\Facades\Mpesa;

$mpesa = Mpesa::using($credentials);
```

### Important Urls

[](#important-urls)

Daraja utilizes the two main urls for callbacks. Timeout Url and Result Url. The two urls will also be used in this package as follows:

- `$resultUrl` or `$callbackUrl` : Endpoint to send the results in case of success
- `$timeoutUrl` : Endpoint to send the results in case of operations timeout

### Access Token Management

[](#access-token-management)

Access tokens are automatically generated and cached by the package.

No manual token management is required.

### Getting Account Balance

[](#getting-account-balance)

You can fetch mpesa account balance as follows:

```
$response = Mpesa::using($credentials)
    ->accountBalance()
    ->query(
        resultUrl: $resultUrl,
        queueTimeoutUrl: $timeoutUrl
    );
```

### C2B Transactions

[](#c2b-transactions)

#### Registering URLs for C2B Transactions

[](#registering-urls-for-c2b-transactions)

You can register validation and confirmation URLs for C2B transactions:

```
$response = Mpesa::using($credentials)
    ->c2b()
    ->registerUrls(
        confirmationUrl: $confirmationUrl, // The URL to receive payment confirmation notifications.
        validationUrl: $validationUrl, // The URL to receive payment validation requests.
        ResponseType: $ResponseType, // nullable | Either Cancelled or Completed, default is Completed
    );
```

#### Simulating C2B Transactions

[](#simulating-c2b-transactions)

You can simulate payment requests from clients:

```
$response = Mpesa::using($credentials)
    ->c2b()
    ->simulate(
        phoneNumber: $phoneNumber,
        amount: $amount,
        billRefNumber: $billRefNumber // Account reference for Customer paybills and null for customer buy goods
    );
```

#### Initiating STK Push

[](#initiating-stk-push)

You can initiate online payment on behalf of a customer:

```
$response = Mpesa::using($credentials)
    ->stk()
    ->push(
        phoneNumber: $phoneNumber,
        amount: $amount,
        callbackUrl: $callbackUrl,
        accountReference: $accountReference
        receivingShortCode: $receivingShortCode // shortcode to receive funds, if null, the shortcode in credentials is used
    );
```

#### Querying STK Push Status

[](#querying-stk-push-status)

You can query the result of a STK Push transaction:

```
$response = Mpesa::using($credentials)
    ->stk()
    ->query($checkoutRequestId);
```

#### Reversing Transactions

[](#reversing-transactions)

You can reverse a C2B M-Pesa transaction:

```
$response = Mpesa::using($credentials)
    ->reversal()
    ->reverse(
        transactionId: $transactionId,
        amount: $amount,
        resultUrl: $resultUrl,
        queueTimeoutUrl: $timeoutUrl
    );
```

### Business to Customer (B2C) Transactions

[](#business-to-customer-b2c-transactions)

You can perform Business to Customer transactions:

#### Send to Customer

[](#send-to-customer)

```
$response = Mpesa::using($credentials)
    ->b2c()
    ->send(
        phoneNumber: $phoneNumber,
        amount: $amount,
        resultUrl: $resultUrl,
        queueTimeoutUrl: $timeoutUrl,
        remarks: $remarks, // Comments that are sent along with the transaction.
        occasion: $occasion, // A reference for the transaction, such as an invoice number or account number. (Max 100 characters)
        commandId: $commandId, // The command ID for the transaction (default: 'BusinessPayment')
    );
```

#### B2C Topup

[](#b2c-topup)

This API enables you to load funds to a B2C shortcode directly for disbursement. The transaction moves money from your MMF/Working account to the recipient’s utility account.

```
$response = Mpesa::using($credentials)
    ->b2c()
    ->topUp(
        receiverShortCode: $receiverShortCode,
        amount: $amount,
        resultUrl: $resultUrl,
        timeoutUrl: $timeoutUrl,
        remarks: $remarks,
        accountReference: $accountReference,
        requester: $requester
    );
```

### Business to Business (B2B) Transactions

[](#business-to-business-b2b-transactions)

#### B2B Buy Goods

[](#b2b-buy-goods)

You can perform Business to Business transactions:

```
$response = Mpesa::using($credentials)
    ->b2b()
    ->buyGoods(
        receiverShortCode: $shortcode,
        amount: $amount,
        resultUrl: $resultUrl,
        queueTimeoutUrl: $timeoutUrl,
        remarks: $remarks,
        requester: $requester
    );
```

#### B2B Paybill

[](#b2b-paybill)

You can perform Business to Business transactions:

```
$response = Mpesa::using($credentials)
    ->b2b()
    ->paybill(
        receiverShortCode: $shortcode,
        amount: $amount,
        accountReference: $accountReference
        resultUrl: $resultUrl,
        queueTimeoutUrl: $timeoutUrl,
        remarks: $remarks,
        requester: $requester
    );
```

#### B2B Express Checkout

[](#b2b-express-checkout)

```
$response = Mpesa::using($credentials)
    ->b2b()
    ->expressCheckout(
        partnerName: $partnerName, // The name of the organization that receives the transaction
        destShortcode: $destShortcode,
        amount: $amount,
        paymentReference: $paymentReference, // The reference for the payment
        callbackUrl: $callbackUrl
        requestRefID: $requestRefID
    );
```

### QR Code Generation

[](#qr-code-generation)

You can generate QR codes for making payments:

```
$response = Mpesa::using($credentials)
    ->dynamicQr()
    ->generate(
        merchantName: 'Akika Digital',
        reference: 'INV001',
        amount: 100
    );
```

- `$amount` is an optional field

### Bill Manager

[](#bill-manager)

You can optin to the bill manager service and send invoices:

#### Opt in

[](#opt-in)

```
$response = Mpesa::using($credentials)
    ->billManager()
    ->optin(
        email: $email,
        officialContact: $officialContact,
        sendReminders: $sendReminders, // 1 or 0
        logo: $logo, // Optional logo URL for the bill manager account.
        callbackUrl: $callbackUrl
    );
```

#### Send Single Invoice

[](#send-single-invoice)

```
$response = Mpesa::using($credentials)
    ->billManager()
    ->singleInvoice(
        externalReference: $externalReference, // A unique reference for the invoice.
        billedFullName: $billedFullName, // The full name of the billed customer.
        billedPhoneNumber: $billedPhoneNumber, // The phone number of the billed customer.
        invoiceName: $invoiceName, // A descriptive name for the invoice (e.g., "Water Bill").
        amount: $amount,
        dueDate: $dueDate, // The due date for the invoice (in 'Y-m-d' format).
        accountReference: $accountReference, // A reference for the account being billed.
        billingPeriod: $billingPeriod, // The billing period (e.g., "June 2026").
        items: $items, // Optional additional billable items to include in the invoice.
    );
```

#### Send Bulk Invoices

[](#send-bulk-invoices)

```
$response = Mpesa::using($credentials)
    ->billManager()
    ->bulkInvoice(
        invoices: $invoices
    );
```

Below is an array showing sample invoices:

```
$invoices = [
    [
        "externalReference" => "#9932340",
        "billedFullName" => "John Doe",
        "billedPhoneNumber" => "0712345678",
        "billedPeriod" => "August 2021",
        "invoiceName" => "Jentrys",
        "dueDate" => "2021-10-12",
        "accountReference" => "1ASD678H",
        "amount" => "800",
        "invoiceItems" => [
            [
                "itemName" => "Food",
                "amount" => "700",
            ],
            [
                "itemName" => "Water",
                "amount" => "100",
            ],
        ],
    ],

    [
        "externalReference" => "#9932341",
        "billedFullName" => "Jane Smith",
        "billedPhoneNumber" => "0723456789",
        "billedPeriod" => "September 2021",
        "invoiceName" => "BlueWave Supplies",
        "dueDate" => "2021-11-15",
        "accountReference" => "2BSD789J",
        "amount" => "1500",
        "invoiceItems" => [
            [
                "itemName" => "Office Supplies",
                "amount" => "1200",
            ],
            [
                "itemName" => "Delivery Fee",
                "amount" => "300",
            ],
        ],
    ],

    [
        "externalReference" => "#9932342",
        "billedFullName" => "Peter Mwangi",
        "billedPhoneNumber" => "0734567890",
        "billedPeriod" => "October 2021",
        "invoiceName" => "Tech Solutions",
        "dueDate" => "2021-12-01",
        "accountReference" => "3CSD890K",
        "amount" => "2500",
        "invoiceItems" => [
            [
                "itemName" => "Laptop Repair",
                "amount" => "2000",
            ],
            [
                "itemName" => "Spare Parts",
                "amount" => "500",
            ],
        ],
    ],
];
```

#### Cancel Single Invoice

[](#cancel-single-invoice)

```
$response = Mpesa::using($credentials)
    ->billManager()
    ->cancelSingleInvoice(
        externalReference: $externalReference // The unique reference of the invoice to be cancelled.
    );
```

#### Cancel Bulk Invoices

[](#cancel-bulk-invoices)

```
$response = Mpesa::using($credentials)
    ->billManager()
    ->cancelBulkInvoices(
        externalReferences: $externalReferences // An array of unique references for the invoices to be cancelled.
    );
```

### Tax Remittance

[](#tax-remittance)

You can remit tax to the government using this package. To use this API, prior integration is required with KRA for tax declaration, payment registration number (PRN) generation, and exchange of other tax-related information.:

```
$response = Mpesa::using($credentials)
    ->taxRemmitance()
    ->remit(
        amount: $amount,
        accountReference: $accountReference, // The payment registration number (PRN) issued by KRA.
        resultUrl: $resultUrl,
        queueTimeoutUrl: $queueTimeoutUrl, // Optional remarks for the transaction (default: 'Tax remittance').
        remarks: $remarks,
        commandId: $commandId, // The due date for the invoice (in 'Y-m-d' format).
        partyA: $partyA,
    );
```

### Mpesa Ratiba

[](#mpesa-ratiba)

The Standing Order APIs enable teams to integrate with the standing order solution by initiating a request to create a standing order on the customer profile.

#### Create Standing Order

[](#create-standing-order)

```
$response = Mpesa::using($credentials)
    ->ratiba()
    ->createStandingOrder(
        name: $name,
        startDate: $startDate,
        endDate: $endDate,
        transactionType: $transactionType,
        amount: $amount,
        phoneNumber: $phoneNumber,
        callbackUrl: $callbackUrl,
        accountReference: $accountReference,
        frequency: $frequency,
        transactionDesc: $transactionDesc
    );
```

#### Query Standing Order

[](#query-standing-order)

```
$response = Mpesa::using($credentials)
    ->ratiba()
    ->query(
        standingOrderId: $standingOrderId
    );
```

#### Cancel Standing Order

[](#cancel-standing-order)

```
$response = Mpesa::using($credentials)
    ->ratiba()
    ->cancel(
        standingOrderId: $standingOrderId, // Standing order to cancel
        callbackUrl: $callbackUrl,
    );
```

### Mpesa Transaction History

[](#mpesa-transaction-history)

#### Register URL

[](#register-url)

The URL you register will be used to receive transaction hostories

```
$response = Mpesa::using($credentials)
    ->transactionHistory()
    ->registerCallbackUrl(
        nominatedNumber: $nominatedNumber, // The phone number to receive the transaction history callbacks (in international format, e.g., 2547XXXXXXXX).
        callbackUrl: $callbackUrl,
    );
```

#### Query History

[](#query-history)

The following API takes in the start and and end dates and returns the transactions between that period.

```
$response = Mpesa::using($credentials)
    ->transactionHistory()
    ->query(
        startDate: $startDate,
        endDate: $endDate,
        offset: $offset,
    );
```

### IMSI

[](#imsi)

Get the IMSI number for a given phone number.

*NOTE: This API is charged per request, so use it only when necessary (e.g., for fraud prevention or network analysis).*

```
$response = Mpesa::using($credentials)
    ->imsi()
    ->query(
        phoneNumber: $phoneNumber
    );
```

#### Successful Response

[](#successful-response)

```
{
    "ResponseRefID": "8bab-42cc-bb85-5056a6c01e6915928124",
    "ResponseCode": "1000",
    "ResponseMessage": "Success",
    "Response": [
        [
            {
                "transactionId": "XXXXXXXXX",
                "trxDate": "2025-01-24T10:56:11+03:00",
                "msisdn": 2547XXXXXXXX,
                "sender": "MPESA",
                "transactiontype": "c2b-buy-goods-debit",
                "billreference": "",
                "amount": "2697.0",
                "organizationname": "VENDOR"
            }
        ]
    ]
}
```

API Response Body
-----------------

[](#api-response-body)

$response has the following as a json object

```
{
    "OriginatorConversationID": "5118-111210482-1",
    "ConversationID": "AG_20230420_2010759fd5662ef6d054",
    "ResponseCode": "0",
    "ResponseDescription": "Accept the service request successfully."
}
```

Succssful result body
---------------------

[](#succssful-result-body)

A successful result body has the following structure

```
{
 "Result":
 {
   "ResultType": "0",
   "ResultCode":"0",
   "ResultDesc": "The service request is processed successfully",
   "OriginatorConversationID":"626f6ddf-ab37-4650-b882-b1de92ec9aa4",
   "ConversationID":"12345677dfdf89099B3",
   "TransactionID":"QKA81LK5CY",
   "ResultParameters":
     {
       "ResultParameter":
          [{
           "Key":"DebitAccountBalance",
           "Value":"{Amount={CurrencyCode=KES, MinimumAmount=618683, BasicAmount=6186.83}}"
          },
          {
          "Key":"Amount",
           "Value":"190.00"
          },
           {
          "Key":"DebitPartyAffectedAccountBalance",
           "Value":"Working Account|KES|346568.83|6186.83|340382.00|0.00"
          },
           {
          "Key":"TransCompletedTime",
           "Value":"20221110110717"
          },
           {
          "Key":"DebitPartyCharges",
           "Value":""
          },
           {
          "Key":"ReceiverPartyPublicName",
           "Value":000000– Biller Companty
          },
          {
          "Key":"Currency",
           "Value":"KES"
          },
          {
           "Key":"InitiatorAccountCurrentBalance",
           "Value":"{Amount={CurrencyCode=KES, MinimumAmount=618683, BasicAmount=6186.83}}"
          }]
       },
     "ReferenceData":
       {
        "ReferenceItem":[
           {"Key":"BillReferenceNumber", "Value":"19008"},
           {"Key":"QueueTimeoutURL", "Value":"https://mydomain.com/b2b/businessbuygoods/queue/"}
         ]
      }
 }
}
```

Unsuccessful reusult body
-------------------------

[](#unsuccessful-reusult-body)

An unsuccessful result body has the following structure

```
{
 "Result":
 {
   "ResultType":0,
   "ResultCode":2001,
   "ResultDesc":"The initiator information is invalid.",
   "OriginatorConversationID":"12337-23509183-5",
   "ConversationID":"AG_20200120_0000657265d5fa9ae5c0",
   "TransactionID":"OAK0000000",
   "ResultParameters":{
     "ResultParameter":{
        "Key":"BillReferenceNumber",
        "Value":12323333
      }
   },
   "ReferenceData":{
     "ReferenceItem":[
      {
        "Key":"BillReferenceNumber",
        "Value":12323333
      },
      {
        "Key":"QueueTimeoutURL",
        "Value":"https://internalapi.safaricom.co.ke/mpesa/abresults/v1/submit"
      }
      {
        "Key":"Occassion"
      }
     ]
    }
 }
}
```

Quality Assurance
-----------------

[](#quality-assurance)

The package is fully tested using Pest PHP and PHPUnit.

### Test Coverage

[](#test-coverage)

Current test coverage:

- ✅ 100% Line Coverage
- ✅ 100% Method Coverage
- ✅ 100% Class Coverage

Main coverage report:

[![Coverage Report](coverage.png)](coverage.png)

Services coverage report:

[![Services Coverage Report](coverage_services.png)](coverage_services.png)

The test suite covers:

- Authentication &amp; Access Token Management
- STK Push
- C2B Transactions
- B2C Transactions
- B2B Transactions
- Account Balance
- Dynamic QR
- Bill Manager
- Tax Remittance
- Ratiba (Standing Orders)
- Transaction History
- Transaction Status
- IMSI Lookup
- Organization Verification
- Reversals
- Pochi Payments
- Security Credential Generation
- Service Provider Registration
- Console Commands
- Facades
- Exception Handling
- URL Validation

Run the test suite:

```
composer test
```

Generate a coverage report:

```
XDEBUG_MODE=coverage ./vendor/bin/pest --coverage
```

License
-------

[](#license)

The Laravel Mpesa package is open-sourced software licensed under the MIT license. See the LICENSE file for details.

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance88

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity48

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

Every ~19 days

Recently: every ~0 days

Total

39

Last Release

62d ago

PHP version history (2 changes)v0.0.1PHP ^8.0|^8.1|^8.2

v0.2.1PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/3b9d9e3a6ef73a3692c261d49a7a70d0362c5e83fa9a4e8765eb9309173b59b3?d=identicon)[akika.digital](/maintainers/akika.digital)

---

Top Contributors

[![fenicfelix](https://avatars.githubusercontent.com/u/7171039?v=4)](https://github.com/fenicfelix "fenicfelix (122 commits)")

---

Tags

laravelpaymentmulti-tenantmpesasafaricomdarajam-pesamultivendor

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/akika-laravel-mpesa-multivendor/health.svg)

```
[![Health](https://phpackages.com/badges/akika-laravel-mpesa-multivendor/health.svg)](https://phpackages.com/packages/akika-laravel-mpesa-multivendor)
```

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k113.1M983](/packages/laravel-socialite)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5226.7k](/packages/simplestats-io-laravel-client)[api-platform/laravel

API Platform support for Laravel

58190.1k21](/packages/api-platform-laravel)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1239.7k25](/packages/fleetbase-core-api)[forjedio/inertia-table

Backend-driven dynamic tables for Laravel + Inertia.js

272.0k](/packages/forjedio-inertia-table)

PHPackages © 2026

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