centrex / laravel-wallet
Add wallet functionality in laravel application
v1.1.0
2025-02-05 06:17 UTC
Requires
- php: ^8.2|^8.3|^8.4
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- larastan/larastan: ^2.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.5
- orchestra/testbench: ^9.5
- pestphp/pest: ^3.4
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- rector/rector: ^1.2
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2026-04-22 10:26:47 UTC
README
Polymorphic digital wallet for any Eloquent model. Supports multiple wallet types per user, balance increments/decrements, and an immutable ledger of all transactions.
Installation
composer require centrex/laravel-wallet
php artisan vendor:publish --tag="laravel-wallet-migrations"
php artisan migrate
Usage
1. Add the trait to your model
use Centrex\Wallet\Traits\HasWallet; class User extends Authenticatable { use HasWallet; }
A default wallet is created automatically when the model is created.
2. Access wallets
// All wallets for this user $user->wallets; // Specific wallet by type ID $wallet = $user->wallet(WalletType::DEFAULT->value); echo $wallet->balance;
3. Credit and debit
// Credit by amount $wallet->incrementBalance(500.00); // Debit by amount $wallet->decrementBalance(200.00); // Credit via a WalletTransaction model (links transaction to ledger entry) $wallet->incrementBalance($transaction); $wallet->decrementBalance($transaction);
4. Ledger
Every balance change is recorded in wallet_ledgers with the transaction reference and running balance:
$wallet->walletLedgers; // → collection of WalletLedger with: amount, running_raw_balance, transaction_id, transaction_type
Wallet types
use Centrex\Wallet\Enums\WalletType; WalletType::DEFAULT // value: 1 WalletType::TEMPORAY // value: 2
Cleanup on delete
When the parent model is deleted, all its wallets are automatically deleted via the deleting boot hook.
Testing
composer test # full suite composer test:unit # pest only composer test:types # phpstan composer lint # pint
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.