> ## Documentation Index
> Fetch the complete documentation index at: https://help.agatabo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fixed Assets Overview

> Track long-term organizational assets including purchases, collateral seizures, gifts, and existing property

## What are Fixed Assets?

**Fixed assets** are long-term tangible items owned by your organization that provide value over time, such as equipment, furniture, vehicles, or property. Unlike expenses that are consumed immediately, fixed assets are investments that serve the organization for years.

## Why Track Fixed Assets?

<Note>
  **Key benefits:**

  * Maintain accurate record of organizational property
  * Know total asset value for financial reporting
  * Track source of asset acquisition (purchase, donation, collateral, existing)
  * Calculate organization's net worth
  * Provide transparency to members about major investments
  * Support balance sheet preparation and financial analysis
  * Document ownership and prevent loss or theft
  * Prepare for audits with complete asset records
</Note>

## Asset Acquisition Types

Agatabo supports **three ways** to acquire fixed assets:

| Type              | Description                          | Journal Entry                                                           | Use Case                                                           |
| ----------------- | ------------------------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| **Cash Purchase** | Asset bought with organization funds | Dr FIXED\_ASSET / Cr CASH                                               | Office furniture, computers, equipment purchased from bank account |
| **Collateral**    | Asset seized from defaulted loan     | Dr FIXED\_ASSET / Cr BAD\_DEBT\_RECOVERY + BORROWER\_SURPLUS\_LIABILITY | Property or equipment taken when borrower cannot repay loan        |
| **Gift**          | Asset donated to organization        | Dr FIXED\_ASSET / Cr OTHER\_EQUITY                                      | Equipment, land, or property received as donation                  |

<Warning>
  **Opening Balance Assets**: Agatabo does not currently support recording pre-existing assets through the standard asset creation endpoint (no ASSET\_OPENING acquisition kind in the API). If you need to record assets owned before using Agatabo, contact support about manual journal entry procedures or opening balance adjustments.
</Warning>

### 1. Cash Purchase

When you purchase an asset using organization funds:

**Journal Entry**:

```
Kind: ASSET_CASH_PURCHASE
Date: Purchase date

Dr FIXED_ASSET              Amount
   Cr CASH (Bank Account)   Amount
```

**What happens**:

* Funds deducted from selected bank account
* Asset recorded at purchase price
* Bank account balance decreases
* Total assets unchanged (cash → fixed asset)

**Optional bank charges**:

* Can record wire fees, processing fees, etc.
* Creates separate BANK\_CHARGE journal entry
* Linked to asset via parentAssetId

**Example**:

```
Purchase office furniture for 1,000,000 RWF + 5,000 RWF bank charge

Entry 1 - Asset Purchase:
Dr FIXED_ASSET (Furniture)      1,000,000
   Cr CASH (Operations Account) 1,000,000

Entry 2 - Bank Charge (auto-linked):
Dr BANK_CHARGE_EXPENSE  5,000
   Cr CASH (Operations)  5,000

Total bank decrease: 1,005,000 RWF
Asset recorded: 1,000,000 RWF
```

[Learn more about bank accounts →](/tontines/bank-accounts/overview)

***

### 2. Collateral Seizure

When a borrower defaults and you seize pledged collateral:

**Prerequisites**:

* Loan must be DEFAULTED
* Loan must have written-off bad debt (from defaulting process)
* Collateral was pledged as security

**Journal Entry** (two-part split):

```
Kind: ASSET_COLLATERAL
Date: Seizure date
Linked to: Loan ID

Dr FIXED_ASSET              CollateralValue
   Cr BAD_DEBT_RECOVERY_INCOME  min(CollateralValue, BadDebt)
   Cr BORROWER_SURPLUS_LIABILITY  max(0, CollateralValue - BadDebt)
```

**Calculation logic**:

1. **Bad debt recovery**: `min(collateral value, bad debt amount)`
2. **Borrower surplus**: `max(0, collateral value - bad debt amount)`

**What happens**:

* Asset recorded at collateral valuation
* Recovers previously written-off bad debt (income)
* Creates liability to borrower if collateral exceeds bad debt
* No cash movement (collateral conversion)

**Example 1: Collateral equals bad debt**

```
Defaulted loan bad debt: 500,000 RWF
Seized property value: 500,000 RWF

Dr FIXED_ASSET (Property)          500,000
   Cr BAD_DEBT_RECOVERY_INCOME     500,000

Result:
- Asset: +500,000 RWF
- Income (recovered bad debt): +500,000 RWF
- No liability to borrower (exactly equal)
```

**Example 2: Collateral exceeds bad debt**

```
Defaulted loan bad debt: 500,000 RWF
Seized property value: 700,000 RWF

Dr FIXED_ASSET (Property)              700,000
   Cr BAD_DEBT_RECOVERY_INCOME         500,000
   Cr BORROWER_SURPLUS_LIABILITY       200,000

Result:
- Asset: +700,000 RWF
- Income (recovered): 500,000 RWF (max recovery)
- Liability: 200,000 RWF (owed to borrower if asset sold)
```

**Example 3: Collateral less than bad debt**

```
Defaulted loan bad debt: 500,000 RWF
Seized property value: 300,000 RWF

Dr FIXED_ASSET (Property)          300,000
   Cr BAD_DEBT_RECOVERY_INCOME     300,000

Result:
- Asset: +300,000 RWF
- Income (partial recovery): 300,000 RWF
- Remaining bad debt: 200,000 RWF (still written off)
- No liability to borrower
```

<Warning>
  **Borrower Surplus Liability**: If collateral value exceeds bad debt, the organization owes the surplus to the borrower. This liability should be settled if/when the asset is sold. The surplus represents the borrower's equity in the seized asset.
</Warning>

[Learn more about loan defaulting →](/tontines/loans/loan-defaulting)

***

### 3. Gift (Donation)

When someone donates an asset to the organization:

**Journal Entry**:

```
Kind: ASSET_GIFT
Date: Receipt date

Dr FIXED_ASSET       FairMarketValue
   Cr OTHER_EQUITY   FairMarketValue
```

**What happens**:

* Asset recorded at fair market value
* Increases organization equity (net worth)
* No cash movement
* Represents external contribution

**Example**:

```
Member donates land worth 5,000,000 RWF

Dr FIXED_ASSET (Land)      5,000,000
   Cr OTHER_EQUITY         5,000,000

Result:
- Asset: +5,000,000 RWF
- Equity: +5,000,000 RWF
- Organization net worth increased by donation
```

**Valuation notes**:

* Use fair market value (current selling price)
* May require professional appraisal for large assets
* Document valuation method in description

***

## Asset Information

Each fixed asset record includes:

### Required Fields

**Title**:

* Name or description of the asset
* Example: "HP Laptop - Serial ABC123", "Toyota Land Cruiser - Plate RAB 456C"
* Required, non-empty string

**Amount**:

* Acquisition value or purchase price
* Must be at least 0.01
* Represents asset value on balance sheet

**Acquisition Date**:

* When asset was acquired
* ISO date format (YYYY-MM-DD)
* Can be historical (past dates allowed)

**Acquisition Kind**:

* CASH\_PURCHASE, COLLATERAL, or GIFT
* **Cannot be changed after creation** (immutable)

### Optional Fields

**Description**:

* Detailed information about the asset
* Include: serial number, warranty info, vendor, location, condition
* Example: "Dell Latitude laptop purchased from ABC Computers, 3-year warranty expires 2029-06-01, assigned to Treasurer"

**Bank Account** (cash purchases only):

* Which account paid for the purchase
* Falls back to default account if not specified

**Source Loan** (collateral only):

* Which loan was defaulted
* Required for COLLATERAL acquisitions
* System validates loan has bad debt

**Documents**:

* Upload receipts, invoices, appraisals, photos
* Stored as JSON array
* Include ownership proof, purchase records

**Bank Charge Amount** (cash purchases only):

* Additional fees paid during purchase
* Wire fees, processing charges, etc.
* Creates linked BANK\_CHARGE entry

**Notify Members**:

* Send email notification about asset acquisition
* Optional boolean flag

### Automatically Generated

**Asset ID**: Unique identifier (UUID)

**Journal Entry ID**: Links to accounting entry

**Organization ID**: Scope to organization

**Created At / Updated At**: Timestamps

## What You Can Do with Assets

### Create Assets

**Endpoint**: `POST /assets`

Record new asset acquisitions with full journal entry creation.

[Learn how to add assets →](/tontines/fixed-assets/adding-fixed-assets)

***

### View Assets

**Endpoint**: `GET /assets/:id`

View complete asset details including:

* All asset information
* Journal entry details
* Linked bank charges
* Acquisition breakdown

***

### Edit Assets

**Endpoint**: `PUT /assets/:id`

Update asset information using **reverse-and-repost pattern**:

* System reverses original journal entry
* Creates new entry with updated values
* Maintains complete audit trail
* All old entries marked as REVERSED

**What you can change**:

* Title
* Amount
* Description
* Acquisition date
* Bank account (cash purchases)
* Source loan (collateral - recalculates bad debt recovery)
* Documents

**What you CANNOT change**:

* Acquisition kind (immutable - delete and recreate if needed)

**Example edit**:

```
Original:
- Title: "Laptop"
- Amount: 500,000 RWF

Edit to:
- Title: "HP Laptop - Serial XYZ789"
- Amount: 550,000 RWF (corrected price)

Result:
- Old entry: REVERSED (Dr CASH 500,000 / Cr FIXED_ASSET 500,000)
- New entry: POSTED (Dr FIXED_ASSET 550,000 / Cr CASH 550,000)
- Net change: Additional -50,000 RWF bank balance
```

***

### Delete Assets

**Endpoint**: `DELETE /assets/:id`

Remove assets recorded in error:

* Reverses acquisition journal entry
* Reverses all linked bank charges
* Restores bank account balance (cash purchases)
* Maintains audit trail (soft delete)

**Constraints**:

* May create negative balance if bank account insufficient
* Cannot delete if referenced by other transactions (future constraint)

***

## Integration with Other Features

### Bank Accounts

**Cash purchases** decrease bank account balances through CASH ledger credits.

**How it works**:

1. Select bank account for purchase
2. System creates journal entry crediting CASH
3. Bank balance decreases automatically
4. Transaction appears in bank history

**Best practice**: Always select correct bank account to match actual payment source.

[Learn about bank accounts →](/tontines/bank-accounts/overview)

***

### Loans and Collateral

**Collateral seizure** integrates with loan defaulting process.

**Workflow**:

1. Borrower defaults on secured loan
2. System marks loan as DEFAULTED
3. Writes off uncollectible amount as bad debt
4. Create asset with COLLATERAL acquisition kind
5. Link to defaulted loan
6. System calculates bad debt recovery automatically

**Requirements**:

* Loan must be DEFAULTED status
* Loan must have written-off bad debt amount
* Collateral must have been pledged as security

[Learn about loan defaulting →](/tontines/loans/loan-defaulting)

***

### Balance Sheet

Fixed assets appear on **Balance Sheet** under Assets section.

**Breakdown by acquisition kind**:

* Physical Assets - Cash Purchase: XXX,XXX RWF
* Physical Assets - Collateral: XXX,XXX RWF
* Physical Assets - Gift: XXX,XXX RWF

**Total Assets calculation**:

* Cash + Loans Receivable + Fixed Assets + Other Assets = Total Assets

**Impact on net worth**:

* Assets = Liabilities + Equity
* Fixed assets increase organizational value

[Learn about balance sheet →](/tontines/reports/balance-sheet)

***

## Depreciation

<Warning>
  **Depreciation is NOT tracked**: Agatabo does not currently implement depreciation functionality. Assets remain at acquisition cost on the balance sheet indefinitely.
</Warning>

**What this means**:

* Assets recorded at purchase/acquisition value
* Value never decreases over time in Agatabo
* No accumulated depreciation accounts
* No depreciation expense calculated
* Balance sheet shows historical cost, not current value

**Workarounds**:

* Track depreciation in separate spreadsheet
* Use external accounting software for tax depreciation
* Manually adjust asset values periodically (edit assets)
* Maintain depreciation schedule outside Agatabo

**Future considerations**:

* ASSET\_DISPOSAL journal kind exists (placeholder for future)
* No implementation for asset sale/disposal yet
* May be added in future versions

***

## Asset Disposal (Not Yet Implemented)

<Note>
  **Coming in future**: Asset disposal/sale functionality is planned but not yet implemented. Currently, you can only delete assets (reversal), not record sales or disposals properly.
</Note>

**Current limitations**:

* No dedicated disposal endpoint
* Cannot record asset sales
* Cannot track gain/loss on disposal
* Delete function is reversal, not disposal

**Temporary workaround**:

* Delete asset to remove from balance sheet
* Manually record sale proceeds as income (manual journal entry)
* Document disposal in notes/external records

***

## Validation and Constraints

### Input Validation

**Amount**:

* ✅ Must be at least 0.01
* ✅ Must match currency decimal places
* ❌ Cannot be negative or zero

**Title**:

* ✅ Must be non-empty string
* ❌ Cannot be blank

**Acquisition Date**:

* ✅ Must be valid ISO date
* ✅ Can be historical (past dates)
* ❌ Cannot be in closed accounting period

**Acquisition Kind**:

* ✅ Must be one of: CASH\_PURCHASE, COLLATERAL, GIFT, ASSET\_OPENING
* ❌ Cannot be changed after creation (immutable)

**Source Loan** (collateral only):

* ✅ Must exist and belong to organization
* ✅ Must be DEFAULTED status
* ✅ Must have written-off bad debt
* ❌ Cannot use loan without bad debt

### Business Logic Validation

**Balance checks**:

* Verifies bank account won't go negative (cash purchases)
* Can skip via `skipNegativeBalanceCheck` parameter
* Validates total amounts against available cash

**Accounting period**:

* Cannot create asset in closed period
* Cannot edit asset in closed period
* Cannot delete asset in closed period

**Idempotency**:

* All operations require idempotency key
* Prevents duplicate assets from retries
* Safe for network failures

***

## Permissions Required

| Action       | Permission     | Scope |
| ------------ | -------------- | ----- |
| View assets  | `assets:read`  | ANY   |
| Create asset | `assets:write` | ANY   |
| Edit asset   | `assets:write` | ANY   |
| Delete asset | `assets:write` | ANY   |

<Note>
  **Typical roles**: Administrators and Accountants have `assets:write`. Regular members may have `assets:read` (view only) or no access.
</Note>

***

## Best Practices

<Note>
  **Asset management tips:**

  **Recording:**

  * Record assets immediately after acquisition
  * Use descriptive titles with serial numbers, models
  * Upload photos and receipts for documentation
  * Include all relevant details in description field

  **Titling conventions:**

  * Format: "Type - Brand Model - Identifier"
  * Example: "Laptop - HP Elitebook 840 - Serial ABC123"
  * Example: "Vehicle - Toyota RAB 456C"
  * Makes asset inventory scannable

  **Documentation:**

  * Always upload purchase receipts
  * Include warranty information
  * Photo documentation for physical condition
  * Appraisal reports for donations/gifts

  **Valuation:**

  * Cash purchases: Use actual purchase price
  * Collateral: Use professional appraisal or market value
  * Gifts: Use fair market value (may require appraisal)
  * Opening assets: Use current reasonable value

  **Bank charges:**

  * Record all associated fees (wire fees, registration, etc.)
  * Don't hide true cost of acquisition
  * Use bank charge amount field for automatic linking

  **Inventory management:**

  * Create asset tag or numbering system
  * Physical annual inventory count
  * Reconcile physical count with Agatabo records
  * Mark disposed/missing assets

  **Collateral seizure:**

  * Only record when collateral physically seized
  * Use professional valuation for accuracy
  * Document legal process in description
  * Track borrower surplus liability settlement

  **Periodic review:**

  * Review asset list quarterly
  * Verify assets still exist physically
  * Update descriptions if asset relocated/reassigned
  * Consider depreciation for reporting (external)
</Note>

***

## Related Topics

<CardGroup cols={2}>
  <Card title="Adding Fixed Assets" icon="plus" href="/tontines/fixed-assets/adding-fixed-assets">
    Record new organizational assets
  </Card>

  <Card title="Depreciation" icon="chart-line-down" href="/tontines/fixed-assets/depreciation">
    Understand depreciation (not implemented)
  </Card>

  <Card title="Asset Disposal" icon="trash" href="/tontines/fixed-assets/asset-disposal">
    Remove assets from records (future)
  </Card>

  <Card title="Balance Sheet" icon="scale-balanced" href="/tontines/reports/balance-sheet">
    View total asset value
  </Card>

  <Card title="Loan Defaulting" icon="triangle-exclamation" href="/tontines/loans/loan-defaulting">
    How collateral seizure works
  </Card>

  <Card title="Bank Accounts" icon="building-columns" href="/tontines/bank-accounts/overview">
    Understand cash purchase impact
  </Card>
</CardGroup>
