Skip to main content
Accounts represent your real-world financial accounts such as bank accounts, cash, credit cards, or investment accounts. Each account tracks its balance and maintains a complete transaction history.

Overview

Multiple Accounts

Create unlimited accounts to track all your finances

Balance Tracking

Automatic balance updates with every transaction

Fund Transfers

Move money between accounts seamlessly

Account Structure

Each account contains:
  • Name - Descriptive label (e.g., “Chase Checking”, “Cash Wallet”)
  • Balance - Current account balance in your currency
  • Color - Visual identifier for quick recognition
  • Transactions - Complete history of all account activity

Creating an Account

1

Navigate to Account Creation

Go to the Accounts page and click the + Account button, or visit /accounts/create
2

Enter Account Details

Fill in the account information:
Choose a descriptive name that helps you identify the account at a glance.Examples:
  • “Wells Fargo Checking”
  • “Savings Account”
  • “Cash”
  • “Credit Card - Visa”
  • “Investment Portfolio”
Enter the current balance of the account. This can be:
  • Positive - For assets (bank accounts, cash, investments)
  • Negative - For liabilities (credit cards, loans)
  • Zero - For new accounts
If you enter a non-zero balance, the system automatically creates a “Balance Correction” transaction to set the starting balance.
Choose a color to visually distinguish this account. Colors are displayed as indicators throughout the app.Available colors are defined in the HasColor trait and include a variety of options for categorization.
3

Save the Account

Click Create Account to save. The system will:
  • Create the account record
  • Generate a balance correction transaction if balance ≠ 0
  • Update your net worth
  • Show a success notification

Initial Balance Transaction

When you create an account with a starting balance:
if ($attributes['balance'] != 0) {
    $correctionCategory = Auth::user()->categories()->where('type', 'correction')->get();
    
    Auth::user()->transactions()->create([
        'category_id' => $correctionCategory->first()->id,
        'account_id' => $account->id,
        'title' => 'Balance Correction',
        'amount' => $attributes['balance'],
        'details' => __('Account :account created with balance of :balance.', [
            'account' => $account->name,
            'balance' => $attributes['balance'],
        ]),
    ]);
}

updateNetworth();
The “correction” category is a special system category used for balance adjustments. It doesn’t count as income or expense.

Viewing Accounts

The accounts index page (/accounts) displays all your accounts in a clean, organized list.

Account Display

Each account card shows:
  • Color indicator - Circular badge in the account’s chosen color
  • Account name - Display name of the account
  • Balance - Current balance formatted in local currency
  • Transaction count - Number of transactions in this account

Responsive Design

Account actions adapt to screen size:
  • Desktop (XL screens) - Action buttons displayed inline next to the account details
  • Mobile/Tablet - Actions hidden in a dropdown menu (three-dot icon) to save space

Editing an Account

Click the Edit button on any account to modify its details.
1

Open Edit Form

The edit form appears using HTMX, replacing the account card without a page reload:
return HtmxResponse::addFragment('accounts.edit', 'form', [
    'account' => $account,
    'availableColors' => $this->availableColors,
    'selectedColor' => $account->color,
]);
2

Modify Account Information

You can change:
  • Account name
  • Account color
  • Account balance
3

Balance Adjustments

If you change the balance, a balance correction transaction is automatically created:
if ($attributes['balance'] != $account->balance) {
    Auth::user()->transactions()->create([
        'category_id' => $correctionCategory->first()->id,
        'account_id' => $account->id,
        'title' => 'Balance Correction',
        'amount' => $attributes['balance'] - $account->balance,
        'details' => __('Account: :account - Old Balance: :old_balance, New Balance: :new_balance.', [
            'account' => $account->name,
            'old_balance' => $account->balance,
            'new_balance' => $attributes['balance'],
        ]),
    ]);
}
This maintains a complete audit trail of all balance changes.
4

Save Changes

Click Update Account. The form is submitted via HTMX and the updated account card appears seamlessly.

Transferring Funds Between Accounts

One of Cashify’s most powerful features is the ability to transfer money between accounts while maintaining accurate records.

How to Transfer

1

Initiate Transfer

Click the Transfer Balance button on the source account (the account you’re transferring FROM).
2

Select Destination Account

Choose which account will receive the funds from a dropdown of your other accounts.
The source account is automatically excluded from the destination account list to prevent transferring to the same account.
3

Enter Amount

Specify how much to transfer. The amount must be:
  • Greater than 0.01
  • Numeric only
$validator = Validator::make($request->all(), [
    'to_account' => 'required|exists:accounts,id',
    'amount' => 'required|numeric|min:0.01',
]);
4

Complete Transfer

Click Transfer. The system processes the transfer in several steps.

What Happens During a Transfer

The transfer creates two transactions - one for each account:
// Transfer OUT (from source account)
Auth::user()->transactions()->create([
    'category_id' => $transferCategory->first()->id,
    'account_id' => $fromAccount->id,
    'title' => $fromAccount->name.' Transfer Out',
    'amount' => -$amount,
    'details' => __('Account: :account - Old Balance: :old_balance, New Balance: :new_balance.', [
        'account' => $fromAccount->name,
        'old_balance' => $fromAccount->balance,
        'new_balance' => $fromAccount->balance - $amount,
    ]),
]);

// Transfer IN (to destination account)
Auth::user()->transactions()->create([
    'category_id' => $transferCategory->first()->id,
    'account_id' => $toAccount->id,
    'title' => $toAccount->name.' Transfer In',
    'amount' => $amount,
    'details' => __('Account: :account - Old Balance: :old_balance, New Balance: :new_balance.', [
        'account' => $toAccount->name,
        'old_balance' => $toAccount->balance,
        'new_balance' => $toAccount->balance + $amount,
    ]),
]);

Transfer Category

Transfers use a special “transfer” category that:
  • Doesn’t count as income or expense
  • Appears in transaction lists with clear “Transfer In”/“Transfer Out” labels
  • Maintains detailed records with old and new balance information
You can view all transfer transactions in your transaction history to audit money movements between accounts.

Deleting an Account

Deleting an account is a permanent action that requires confirmation.
When you delete an account:
  • The account is permanently removed
  • All associated transactions are also deleted
  • Your net worth is recalculated
  • This action cannot be undone

Deletion Flow

1

Click Delete Button

A confirmation modal appears warning you about the consequences.
2

Confirm Deletion

The modal states:
“Once your account is deleted, all of its resources and data will be permanently deleted including all related transactions.”
3

Account Removed

After confirmation:
$account->delete();
updateNetworth();
The account and its transactions are removed from the database, and your dashboard updates accordingly.
The deletion uses HTMX for a smooth experience - the account card disappears without a full page reload.

Account Colors

Colors help you quickly identify accounts throughout the application.

Available Colors

Accounts use the HasColor trait which provides a palette of colors. Each color can be displayed at different shades (the default is shade 300 for accounts).

Color Usage

Colors appear in:
  • Account cards on the dashboard
  • Account selection dropdowns when creating transactions
  • Transaction lists (showing which account was used)
  • Transfer interfaces
On the dashboard, accounts display as:
<div class="block w-4 h-4 rounded-full {{ $account->color_class }}"></div>
This creates a small circular color indicator next to the account name.

Net Worth Impact

Accounts directly affect your net worth calculation:
// Your net worth is the sum of all account balances
$netWorth = Account::where('user_id', auth()->id())->sum('balance');
  • Positive balances (assets) increase net worth
  • Negative balances (liabilities like credit cards) decrease net worth
  • Transfers don’t change net worth since money stays within your accounts
Net worth is recalculated automatically whenever accounts are created, updated, deleted, or when transactions modify account balances.

Best Practices

Use Descriptive Names

Include the bank name or account type for clarity (“Chase Checking” not “Account 1”)

Set Accurate Initial Balances

Match your real-world account balances when creating accounts for accurate tracking

Assign Unique Colors

Use different colors for each account to make them easy to distinguish visually

Regular Reconciliation

Periodically verify your Cashify balances match your actual account balances

Use Transfers Appropriately

Record money movement between your accounts as transfers, not as separate income/expense transactions

Document Corrections

Use the details field in balance correction transactions to note why adjustments were made

Account Types You Can Track

Accounts with Positive Balances

  • Checking Accounts - Your primary spending account
  • Savings Accounts - Emergency funds and savings
  • Cash - Physical money on hand
  • Investment Accounts - Stocks, bonds, retirement accounts
  • Cryptocurrency Wallets - Digital asset holdings

Transactions

Every account activity is recorded as a transaction

Dashboard

View all account balances and net worth at a glance

Categories

Categorize transactions for better insights

Build docs developers (and LLMs) love