# 8. How to Manage Assets

<span style="color: rgb(161, 163, 165);">The **Assets** module provides centralized management of all assets in the system. It allows you to:</span>

1. <span style="color: rgb(161, 163, 165);">View a list of all assets *(for visible clients)* and check their balances.</span>
2. <span style="color: rgb(161, 163, 165);">Activate and deactivate assets.</span>
3. <span style="color: rgb(161, 163, 165);">Filter and search for specific assets.</span>
4. <span style="color: rgb(161, 163, 165);">View transactions for assets.</span>
5. <span style="color: rgb(161, 163, 165);">Make deposits and withdrawals.</span>

<p class="callout info"><span style="color: rgb(53, 152, 219);">**Note:** If you want to add an asset to an account, you need to do it through the [Accounts](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/7-how-to-manage-accounts) module. </span></p>

##### <span style="color: rgb(161, 163, 165);">Use Cases</span>

1. **Segregation of Funds**  
    Real money and promotional credits remain clearly separated, ensuring transparent financial tracking.
2. **Flexible Promotions**  
    Companies can create custom bonus programs—such as first deposit bonuses, loyalty rewards, or marketing campaign incentives.
3. **Enhanced User Engagement**  
    Users can explore platform features with bonus funds before committing their real money, increasing retention and activity.

##### View All Assets

To see every asset in the system, navigate to the **Assets** module from the sidebar. At the top of the page you’ll find:  
**Shareable Link** 🔗 (next to the “Assets” title) – copy a URL that preserves your current filters and sort.  
**Total Count** – updates dynamically as you filter or paginate.  
**Language / Calendar / Notifications / User Menu** in the top-right corner.

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-508" dir="auto" id="bkmrk-the-assets-module-di">The Assets module displays a read-only table of every asset in your system, with the following columns:

1. **Status** – Toggle to activate (blue) or deactivate (gray) this asset.
2. **Currency** – Asset’s currency icon and code (e.g. BTC, USD).
3. **UID** – System-generated, auto-incrementing asset code (e.g. cbas00002d).
4. **Owner's full name** – Client who owns the account (clickable).
5. **Owner's email** – Email address of the client who owns the account
6. **Available** – User’s spendable balance.
7. **All time deposited** – Cumulative funds ever deposited.
8. **On hold** – Funds locked by pending transactions or holds.
9. **Actions** – Icons for Show Transactions, Deposit, Withdraw, Refresh Balance, and a “⋯” menu for Show Wallets.

</article>**Status:**

1. Toggle to **activate** (blue) or **deactivate** (gray) an asset for that account.
2. If there are transactions, a small **chevron** appears here—click to expand and view them.
3. *Deactivated assets are hidden from end-user views and cannot be transacted until reactivated.*

**Column Sorting:** Click any header’s ▲/▼ arrows to sort by that field (e.g. Available, Bonus). Clear by clicking again.

##### Search for an Asset

Enter the ID of the account in the Search field located above the Assets table to filter rows in real time. You can search by:

1. **Account ID** (full or partial UUID)
2. **Asset ID** (UUID)
3. **Currency code** (e.g. “USD”, “BTC”)
4. **Owner’s name** (first/last) or **email**

The search is case-insensitive and matches substrings as you type.

> The Search field operates independently from Fast Filters and does not become part of saved filter views.

##### Filter Assets

The **Assets** module uses the **Fast Filters** panel, located directly above the assets table. This interface allows you to instantly narrow down results by project, type, currency, ownership, and balance parameters without opening a separate drawer.

The panel includes the following elements:  
**Project** – filters assets belonging to a specific project or environment.  
**Currency** – filters by asset currency (e.g., USD, EUR, USDT, BTC).  
**Types** – allows you to choose between asset categories such as *Fiat*, *Crypto*, *Bonus*, etc.  
**Owners** – filters by user or client who owns the asset.  
**Available** – numeric filter showing only assets with balances below or above a given amount (using *Less Than* / *Greater Than* selectors).  
**All time deposited** – filters based on total deposit volume recorded for the asset.  
**On hold** – filters assets currently locked or pending withdrawal.  
**Bonus** – filters by available bonus balance, using numeric range options.  
**Show only** – displays only specific subsets such as *Active*, *Disabled*, or *Zero Balance* assets.  
**Apply** – applies all chosen filters and refreshes the asset table.  
**Drop filters** – clears all active filters in one click.  
**Create view** – saves the current filter combination and table layout for future access.

**Apply Your Filters:**

1. In the **Assets** module, locate the **Fast Filters** bar above the table.
2. Enter a keyword or asset name in the **Search** field if needed.
3. Use dropdown filters to refine results:  
    **Project** → choose the project the assets belong to.  
    **Currency** → filter by specific currencies.  
    **Types** → select *Fiat* or *Crypto* to limit the view.  
    **Owners** → pick one or more client names or email addresses.
4. Adjust numeric fields if needed: **Available**, **All time deposited**, **On hold**, and **Bonus** fields accept numeric ranges (e.g., “Less Than 1000”).
5. Click **Apply** to update the table and view matching records.

**Clear or Adjust Filters:**

1. **Modify a field:** Change any value (e.g., select a new currency) and click **Apply** again.
2. **Remove individual filters:** Click the “×” next to any selected filter to remove it, then **Apply**.
3. **Reset all filters:** Click **Drop filters** on the right to clear all fields and show all assets again.
4. **Save a view:** To reuse the same filter combination later, click **Create view**.

**Quick Search vs. Filter:** Use the **Search…** field at the top for quick lookups by keyword, currency, or owner name.  
Use **Fast Filters** for structured queries combining multiple parameters such as project, asset type, currency, and numeric conditions (e.g., available balance or total deposited).

##### <span style="color: rgb(161, 163, 165);">Actions Column</span>

<span style="color: rgb(161, 163, 165);">In the **Actions** column, you can manage the selected asset:</span>

<span style="color: rgb(161, 163, 165);">1. **Show transactions**:  
</span><span style="color: rgb(161, 163, 165);">Click the **Show Transactions** icon to view all transactions for the asset.  
</span><span style="color: rgb(161, 163, 165);">In the opened window, you can:  
</span><span style="color: rgb(161, 163, 165);">View the logs of any transaction from inception to completion (who took what actions, how and when) by clicking the **Show Transaction History** icon in the **Actions** column.  
</span><span style="color: rgb(161, 163, 165);">Search transactions by **Transaction ID**, **Asset ID**, or **Account ID**.  
</span><span style="color: rgb(161, 163, 165);">Filter transactions by **Owner**, **Created Date**, **Account Type**, **Status**, **Transaction Type**, and **Sub-Type**.  
</span><span style="color: rgb(161, 163, 165);">Export transactions in CSV format by clicking the CSV icon in the upper-right corner.</span>

<p class="callout info"><span style="color: rgb(53, 152, 219);">**Note:** For more detailed transaction management, refer to the [Transactions module](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/9-how-to-manage-transactions).</span></p>

<span style="color: rgb(161, 163, 165);">2. **Make deposit**:  
</span><span style="color: rgb(161, 163, 165);">Click the **Deposit** (➕) icon.  
</span><span style="color: rgb(161, 163, 165);">In the window that opens, you will see the current balance and fields to add an amount. Enter:  
</span><span style="color: rgb(161, 163, 165);">**Amount:** Deposit amount.  
</span><span style="color: rgb(161, 163, 165);">**Description:** Any text description. For example, the purpose of the transaction, etc.  
</span><span style="color: rgb(161, 163, 165);">**Source:** The source where the money came from. Can be a general description (e.g. “company”) or specific details such as IBAN or wallet.  
</span><span style="color: rgb(161, 163, 165);">Click **Save** to apply the changes. When you save, a transaction will automatically be created.</span>

<span style="color: rgb(161, 163, 165);">3. **Make withdrawal**:  
</span><span style="color: rgb(161, 163, 165);">Click the **Withdrawal** (➖) icon.  
</span><span style="color: rgb(161, 163, 165);">In the window that opens, you will see the current balance and fields to withdraw an amount. Enter:  
</span><span style="color: rgb(161, 163, 165);">**Amount:** Withdrawal amount.  
</span><span style="color: rgb(161, 163, 165);">**Description:** Any text description. For example, the purpose of the transaction, etc.  
</span><span style="color: rgb(161, 163, 165);">**Destination:** The destination where the money went. Can be a general description (e.g. “company”) or specific details such as IBAN or wallet.</span>

<p class="callout success"><span style="color: rgb(45, 194, 107);">Click **Save** to apply the changes. When you save, a transaction will automatically be created.</span></p>

<article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-568" dir="auto" id="bkmrk-account-balances-%28pl"><article class="text-token-text-primary w-full" data-scroll-anchor="true" data-testid="conversation-turn-570" dir="auto">> **Account Balances (Platform-Backed)**  
> By default, any account linked to an external Platform will pull its **Available** balance directly from that platform whenever you see balances in the Accounts module.

</article></article><p class="callout info"><span style="color: rgb(53, 152, 219);">**Note:** You can learn more about platform customization in the [Platforms section](https://wiki.wi.services/books/wifox-business-core-solution-wbcs/page/6-how-to-set-platforms).</span></p>

<span style="color: rgb(161, 163, 165);">The functionalities for **Show Transactions**, **Show Wallets**, **Deposit**, and **Withdrawal** are also available within the **Accounts** module. To access these, click the triple-dot icon in the corresponding asset row.</span>

##### Assets with Available and Bonus Balances

In Core Banking, each asset in a user’s wallet can have two separate balances:

**1. Available Balance** Represents the user’s real, spendable funds.  
Deposits or withdrawals of actual money (e.g., via a payment system or direct bank transfer) increase or decrease this amount.

**2. Bonus Balance** Represents promotional or virtual credit, often used to let users try features or test the platform.  
Funds may be non-withdrawable under typical conditions—users might need to meet additional requirements (e.g., reaching a specific trading volume or making a minimum deposit) before withdrawal is possible.

<p class="callout info">**Note**: Our system does not regulate this functionality; its usage is entirely up to you.</p>

You can see these two fields on the Assets page for each currency (e.g., USD, EUR, USDT). There’s a column for Available and another column for Bonus.

##### Example: Awarding a Bonus

**1. Standard Deposit Initial state**: Available = **9 900**, Bonus = 0  
User deposits **100 EUR** via payment system.

**Result**:  
Available → **10 000** (9 900 + 100)  
Bonus remains 0

**2. Bonus Deposit** User makes a **200 EUR** deposit and qualifies for “Deposit 200 → +200 EUR bonus.”  
The real deposit adds to Available; the promotional credit goes into Bonus.

**Result**:  
Available → **10 200** (10 000 + 200)  
Bonus → **200**

<p class="callout info">**Note**: “All time deposited” now reads 300 (100 + 200), while “On hold” remains unchanged.</p>

Core Banking Assets Bonus functionality distinguishes real, withdrawable funds (Available balance) from promotional or test credits (Bonus balance). This structure gives businesses the flexibility to offer promotions, demo credits, or loyalty rewards while maintaining separate tracking, ensuring clarity for both the company and the end user.

##### Asset Deletion (Permission-Based with Financial Safety Validation)

In Core Banking, asset deletion is strictly controlled to protect financial integrity and historical data.  
Deletion is not a cosmetic action — it is permanently destructive and cannot be undone.

**Permission Requirement** To delete an asset, a user role must have:  
Assets → Delete

Location:  
Roles → Edit Role → Assets section → Delete

If the role does not have this permission:

1. The Delete icon will not appear in the Assets table.
2. Any direct backend attempt will return **403 Forbidden**.

**Where Delete Appears** If permission is granted:

1. A Delete (trash) icon appears in the Actions column for each asset.
2. The action follows the standard confirmation modal pattern.

On click:

A confirmation modal appears:

Title: Delete Asset  
Body: This action cannot be undone.

Buttons:  
Confirm  
Cancel

**Backend Eligibility Rules (Mandatory)** An asset can be deleted only if ALL conditions below are met:

1. Asset has no linked transactions (historical or pending).
2. Available balance = 0.
3. Bonus balance = 0.
4. On hold balance = 0.

If any of the above conditions fail:

Deletion is rejected by the backend.

Example error responses:

1. Asset cannot be deleted: it has transactions
2. Asset cannot be deleted: non-zero balance

Status codes:

1. 403 — missing permission
2. 409 — state conflict (balance or transactions exist)

<p class="callout info">**Important:** Validation is executed server-side at the moment of deletion to prevent race conditions.</p>

**After Successful Deletion** If the asset is eligible:

1. The record is permanently removed from the database.
2. It disappears from the Assets table immediately.
3. A success notification is shown.

No orphan ledger entries remain.

**Why This Restriction Exists** Assets are part of the financial ledger.

If transactions or balances exist, deletion would break:

1. Historical financial reporting
2. Audit trails
3. Reconciliation processes
4. Compliance requirements

Therefore, assets with financial history are immutable and cannot be deleted.  
If removal is required for operational reasons, the correct approach is:  
Deactivate the asset instead of deleting it.

<span id="bkmrk--19" style="font-weight: normal; color: rgb(161, 163, 165);">  
</span>