aniket / laravel-wallet-system
A Laravel Wallet System for managing user balances, deposits, withdrawals, and transactions in Laravel applications.
Requires
- php: ^8.0
README
A Laravel Wallet System package for managing user balances, deposits, withdrawals, credits, debits, and refunds inside any Laravel application.
This package makes it simple to implement a wallet system in Laravel for e-commerce, SaaS platforms, financial apps, or any system requiring digital wallet functionality.
๐ Features of Laravel Wallet
- ๐ณ Credit, debit, and refund support out of the box
- ๐ Tracks all transactions and transaction history
- ๐ Uses Laravel Cache locks for safe concurrent updates
- โ๏ธ Fully configurable (tables, balance column, lock duration)
- ๐งฑ Extendable schema: modify the
transactions
table if needed - ๐พ Works with relational & non-relational databases
- ๐งช Easy integration with existing
users
table
- ๐ณ Credit, debit, and refund support
- ๐ Tracks transactions and transaction history
- ๐ Uses Laravel Cache locks for safe concurrent updates
- โ๏ธ Fully configurable
- ๐งฑ Extendable schema: you can modify the
transactions
table - ๐พ Compatible with relational and non-relational DBs
- ๐งช Easy integration with existing
users
table
๐ฆ Installation
composer require aniket/laravel-wallet-system
โ๏ธ Wallet Configuration
You can edit the configuration in config/wallet.php
:
return [ 'users_table' => 'users', // Table name for users 'wallet_balance_column' => 'wallet_balance',// Column for storing wallet balance 'lock_duration' => 10, // Cache lock duration in seconds 'default_balance' => 0.00, // Default balance for new users ];
โ๏ธ Configuration Options
-
users_table
Specify your users table name. -
wallet_balance_column
Column in the users table for wallet balance. -
lock_duration
Time in seconds to lock a wallet during updates (prevents race conditions). -
default_balance
Initial balance for new users.
๐จโ๐ป Usage Example
For migrating the tables.
php artisan migrate
In User.php
:
use Aniket\LaravelWalletSystem\Traits\HasWallet; class User extends Authenticatable { use HasWallet; }
๐ณ Wallet Operations
โ Credit Wallet
Credits money to the user's wallet.
$user = User::find(1); $user->credit(1000, 'Signup Bonus');
๐ Debit Wallet
Debits money from the user's wallet if sufficient balance is available.
$user = User::find(1); $user->debit(250, 'Purchase');
๐ธ Refund Wallet
Refunds money back into the wallet (acts like a credit, but marked with metadata).
$user = User::find(1); $user->refund(100, 'Failed order refund');
๐ Why Use Laravel Wallet System?
- Simplifies wallet implementation in Laravel applications
- Prevents race conditions with cache-based locks
- Easy setup with migrations & configuration
- Works seamlessly for:
- Multi-vendor systems
- Fintech applications
- E-commerce platforms
- Gaming credits
- Loyalty programs