aniket/laravel-wallet-system

A Laravel Wallet System for managing user balances, deposits, withdrawals, and transactions in Laravel applications.

v1.0.0 2025-07-18 07:50 UTC

This package is auto-updated.

Last update: 2025-09-18 12:03:29 UTC


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.

Packagist License: MIT

๐Ÿš€ 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

๐Ÿ”— Links