PHPackages                             vp-trading/moneyman - 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. vp-trading/moneyman

ActiveLibrary[Payment Processing](/categories/payments)

vp-trading/moneyman
===================

2.2.3(1mo ago)3286MITPHPPHP ^8.4CI passing

Since Sep 8Pushed 1mo agoCompare

[ Source](https://github.com/VP-Trading/moneyman)[ Packagist](https://packagist.org/packages/vp-trading/moneyman)[ RSS](/packages/vp-trading-moneyman/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (10)Dependencies (33)Versions (22)Used By (0)

MoneyMan Laravel Package
========================

[](#moneyman-laravel-package)

[![Packagist Version](https://camo.githubusercontent.com/a12ff414c23cc86adc55527dce45e520d7c8c807431a52fce7f301e386f4c013/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f76702d74726164696e672f6d6f6e65796d616e3f6c6162656c3d6c6174657374)](https://camo.githubusercontent.com/a12ff414c23cc86adc55527dce45e520d7c8c807431a52fce7f301e386f4c013/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f76702d74726164696e672f6d6f6e65796d616e3f6c6162656c3d6c6174657374)[![Total Downloads](https://camo.githubusercontent.com/1dc3fd72172911bda2f609a00d3f969dbf81e24f48403a6545e14425c7b409cd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f76702d74726164696e672f6d6f6e65796d616e)](https://packagist.org/packages/vp-trading/moneyman)[![PHP Version Require](https://camo.githubusercontent.com/de1663a0bc77fd863694a4302fdf3c14dbb94df6905bb4ba426425656e915eac/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f76702d74726164696e672f6d6f6e65796d616e)](https://packagist.org/packages/vp-trading/moneyman)[![License](https://camo.githubusercontent.com/fb95f6380cab536dbcc8d13b314eadd1f6a2431872a6dabebe9571c112bf56c7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f76702d74726164696e672f6d6f6e65796d616e)](https://packagist.org/packages/vp-trading/moneyman)[![CI](https://camo.githubusercontent.com/746c7ff2d359c1da08bbb075a86b0a11f69a5c36d6c099d5e7213974d04308dd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f76702d74726164696e672f6d6f6e65796d616e2f63692e79616d6c3f6c6162656c3d436f6e74696e756f7573253230496e746567726174696f6e)](https://camo.githubusercontent.com/746c7ff2d359c1da08bbb075a86b0a11f69a5c36d6c099d5e7213974d04308dd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f76702d74726164696e672f6d6f6e65796d616e2f63692e79616d6c3f6c6162656c3d436f6e74696e756f7573253230496e746567726174696f6e)[![Code Style](https://camo.githubusercontent.com/0d3ca46f734caec0fc0e6f82397fa9180f9a9d51a506874f30c6c1ad5eb54787/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64655f7374796c652d4c61726176656c5f50696e742d6f72616e67652e737667)](https://github.com/laravel/pint)[![Larastan](https://camo.githubusercontent.com/b5d5ea92e4588046e58d9e913c1e63d498bee3c4b67f7d4a6fdf15f5f2d606d5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f737461746963253230616e616c797369732d4c6172617374616e2d626c7565)](https://github.com/nunomaduro/larastan)

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

[](#installation)

To install the `MoneyMan` package, follow these steps:

1. **Require the package via Composer:**

    ```
    composer require vp-trading/moneyman
    ```
2. **Publish the configuration, route, and migration files:**

    ```
    php artisan vendor:publish --provider="Vptrading\MoneyMan\MoneyManServiceProvider"
    ```

    The package comes with a config files to help you get started quickly.
3. **Configure your `.env` file:**

    Add your Providers API keys:

    ```
    MONEYMAN_REF_PREFIX=

    MONEYMAN_CHAPA_SECRET_KEY=
    MONEYMAN_CHAPA_BASE_URL=
    MONEYMAN_CHAPA_CALLBACK_URL=
    MONEYMAN_CHAPA_WEBHOOK_SECRET=

    MONEYMAN_SANTIMPAY_BASE_URL=
    MONEYMAN_SANTIMPAY_PUBLIC_KEY=
    MONEYMAN_SANTIMPAY_PRIVATE_KEY=
    MONEYMAN_SANTIMPAY_MERCHANT_ID=
    MONEYMAN_SANTIMPAY_TOKEN=
    MONEYMAN_SANTIMPAY_CALLBACK_URL=

    MONEYMAN_TELEBIRR_MERCHANT_APP_ID=
    MONEYMAN_TELEBIRR_FABRIC_APP_ID=
    MONEYMAN_TELEBIRR_SHORT_CODE=
    MONEYMAN_TELEBIRR_APP_SECRET=
    MONEYMAN_TELEBIRR_PRIVATE_KEY=
    MONEYMAN_TELEBIRR_BASE_URL=
    MONEYMAN_TELEBIRR_TIMEOUT=
    MONEYMAN_TELEBIRR_CALLBACK_URL=
    MONEYMAN_TELEBIRR_WEB_BASE_URL=

    MONEYMAN_BOA_USSD_BASE_URL=
    MONEYMAN_BOA_USSD_CLIENT_ID=
    MONEYMAN_BOA_USSD_CLIENT_SECRET=
    MONEYMAN_BOA_USSD_REFRESH_TOKEN=
    MONEYMAN_BOA_USSD_MERCHANT_NAME=
    MONEYMAN_BOA_USSD_MERCHANT_ACCOUNT=
    MONEYMAN_BOA_USSD_API_KEY=
    ```
4. **Ready to use!**

    You can now use the package in your Laravel application.

Support
-------

[](#support)

**Provider****Payment Initialize****Payment Verify****Payment Refund**Chapa✅✅✅Telebirr✅✅✅SantimPay✅✅❌BoaUssd✅✅❌Usage
-----

[](#usage)

> Before you start using this package you should know all amount must be put in ***cent values***. The development of this package took standards from **Stripe**. So for example if you want the amount be 100 Birr you will put 10000.

Here are some basic usage examples:

### Initialize Payment

[](#initialize-payment)

```
use Vptrading\MoneyMan\MoneyMan;
use Vptrading\MoneyMan\Enums\Provider;
use Vptrading\MoneyMan\ValueObjects\User;
use Money\Money;

$response = MoneyMan::provider(Provider::Chapa)->initiate([
    Money::ETB(10000),
    new User(
        firstName: 'John',
        lastName: 'Doe',
        email: 'johndoe@example.com',
        phoneNumber: '0912345678'
    ),
    route('return-url')
]);

// Redirect user to payment page
return redirect($response->checkoutUrl);
```

The initiate response is a DTO that consists of the `status` of of the request, `message` if the provider has one, transactionId, and `checkoutUrl` if the request was successful.

> For telebirr you will need to wrap the `checkoutUrl` provided in an `` tag for it to work or else you will see an error: "**Payment cannot be completed.** The required parameter of the request is empty, or the parameter is incorrectly filled."
>
> For `BoaUssd`, there is no `checkoutUrl` because it is a USSD flow. The provider returns once the user PIN interaction is completed on the phone.

### Verify Payment

[](#verify-payment)

```
use Vptrading\MoneyMan\MoneyMan;
use Vptrading\MoneyMan\Enums\Provider;
use Money\Money;

$response = MoneyMan::provider(Provider::Chapa)->verify($transactionId);
```

The verify response is a DTO that consists of the `status` of of the request, `message` if the provider has one, `transactionId`, and `data` which is the response from the provider.

> For `BoaUssd`, pass the `billNumber` (reference) returned during initiate as the `transactionId` to `verify()`. The package verifies using `GET /ussd/push/getStatus?reference={billNumber}`.
>
> `BoaUssd` tokens are persisted in the `boa_tokens` table and are encrypted at rest using Laravel encrypted model casts. On expired access token / `401`, the package refreshes with refresh token and retries once automatically.

### Refund Payment

[](#refund-payment)

```
use Vptrading\MoneyMan\MoneyMan;
use Vptrading\MoneyMan\Enums\Provider;
use Money\Money;

$response = MoneyMan::provider(Provider::Chapa)->refund($transactionId, Money::ETB(1000));
```

The refund response is a DTO that consists of the `status` of of the request, `message` if the provider has one, `transactionId`, and `data` which is the response from the provider.

> **Note:** Chapa's refund does not use the transactionId you provided but instead the reference Id they assign to the transaction.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance89

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity63

Established project with proven stability

 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 ~14 days

Total

17

Last Release

54d ago

Major Versions

1.0.6 → 2.0.02026-02-11

PHP version history (2 changes)1.0.0PHP ^8.2

2.0.0PHP ^8.4

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/86159029?v=4)[vptrading](/maintainers/vptrading)[@VPTrading](https://github.com/VPTrading)

---

Top Contributors

[![alazark94](https://avatars.githubusercontent.com/u/35865798?v=4)](https://github.com/alazark94 "alazark94 (67 commits)")

---

Tags

laravelintegrationchapasantimPayTelebirr

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/vp-trading-moneyman/health.svg)

```
[![Health](https://phpackages.com/badges/vp-trading-moneyman/health.svg)](https://phpackages.com/packages/vp-trading-moneyman)
```

###  Alternatives

[laravel/socialite

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

5.7k108.5M886](/packages/laravel-socialite)[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.5k91.9M595](/packages/laravel-passport)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.6k29.9M146](/packages/laravel-cashier)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k43](/packages/civicrm-civicrm-core)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3417.0k](/packages/duncanmcclean-statamic-cargo)

PHPackages © 2026

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