Skip to content

Basic Usage ​

Balances ​

WARNING

To ensure the integrity of balance data, all modifications must be performed via transactions. Direct adjustments to balance values are not persistent and will be overwritten upon the execution of any subsequent transaction.

Models that implement the Payable interface are capable of maintaining individual balances, alongside the transactions associated with them.

Integrating balances into model ​
php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use O21\LaravelWallet\Contracts\Payable;
use O21\LaravelWallet\Models\Concerns\HasBalance;

class User extends Model implements Payable
{
    use HasBalance;
}

Conducting Transactions ​

TIP

A transaction represents a monetary transfer from a sender to a recipient. Transactions can only be created if the sender has adequate funds, except when the overcharge mode is activated, allowing for transactions beyond the available balance.

Overcharge Mode ​

When the overcharge mode is enabled, transactions can be conducted even without the sender or if the sender has insufficient funds. Use it if you want to allow negative balances or creating a deposit.

Performing a Transfer ​
php
transfer(100, 'USD')->from($sender)->to($recipient)->commit();
Making a Deposit ​
php
deposit(100, 'USD')->to($recipient)->overcharge()->commit();
Charge ​
php
charge(100, 'USD')->from($sender)->commit();