Overview
Asset disposal in Agatabo is the process of removing a fixed asset from your records when it is sold, donated, discarded, or no longer in use. The system uses a journal reversal approach - deleting an asset creates a REVERSAL journal entry that undoes the original acquisition entry.When to Remove an Asset
Common scenarios for deleting an asset:- Sold: Asset sold to buyer for cash
- Donated: Asset given away to another organization or individual
- Discarded: Asset broken, obsolete, or no longer functional and thrown away
- Stolen/Lost: Asset stolen or lost
- Trade-in: Asset traded for new equipment (delete old, record new)
- Transferred: Asset moved to related organization
Before You Begin
- You have
assets:writepermission - You have verified the asset is truly no longer in the organization’s possession
- You have documentation of disposal (sales receipt, donation letter, or incident report)
- Accounting period where asset was acquired is not closed (otherwise deletion will be rejected)
How Asset Deletion Works
What Happens During Deletion
When you delete an asset viaDELETE /assets/:id, Agatabo:
- Removes asset record from the AssetMeta table
- Reverses original journal entry by creating a REVERSAL entry with opposite debits/credits
- Reverses linked bank charges (if the asset had associated bank fees)
- Updates Balance Sheet - Total Fixed Assets value decreases by asset amount
- Logs audit trail - Records who deleted the asset, when, and the asset details
Journal Entry Reversal Process
The deletion process creates REVERSAL journal entries (not ASSET_DISPOSAL entries): Cash Purchase Asset:Bank Charge Reversal
If the original asset had linked bank charges, those are also reversed:Step-by-Step: Deleting an Asset
Step 1: Navigate to Asset
Open Fixed Assets section
Find the asset
Click on asset row
Step 2: Delete the Asset
Click Delete or Remove Asset
Confirm deletion
Click Confirm or Delete
What You Can Do
Handling Asset Sales
If you sold an asset for cash, you must record the transaction in multiple steps:Step 1: Delete the Asset
Delete the asset from Agatabo to remove it from the Fixed Assets balance:Navigate to asset
Delete asset
System reverses entry
Step 2: Record Cash Receipt (Sale Proceeds)
Record the actual cash you received from the sale:Navigate to Bank Accounts
Record deposit or manual entry
Note in description
Step 3: Calculate and Record Gain or Loss (Optional)
If tracking gain/loss for financial reporting: Gain Calculation:- Create manual journal entry for the gain or loss
- No dedicated gain/loss accounts exist, so use general income/expense
- Delete the asset (removes from Fixed Assets via reversal)
- Record cash received from sale (increases Cash)
- Let the net difference affect equity
Complete Example: Selling a Laptop
Asset Details:- Title: “HP Laptop - Serial ABC123”
- Book Value: 850,000 RWF (original purchase price)
- Sale Price: 300,000 RWF
Common Scenarios
Disposing of Stolen or Lost Asset
File incident report
Delete asset in Agatabo
Document externally
Review insurance
- Deletion reverses the asset (reduces Fixed Assets)
- No cash received (theft/loss)
- Loss absorbed in equity unless manually recorded
Donating Asset to Another Organization
Get donation acknowledgement
Delete asset
Save documentation
Notify members (optional)
- Deletion reverses the asset (reduces Fixed Assets)
- No cash received (donation)
- Value reduction absorbed in equity
Trade-In for New Equipment
When trading old asset for new:Delete old asset
Record new asset
Note relationship
Discarding Obsolete or Broken Equipment
Verify asset is truly unusable
Take photo before disposal
Delete asset
Document reason externally
- Deletion reverses the asset (reduces Fixed Assets)
- No cash received (discarded)
- Loss absorbed in equity
Bulk Asset Disposal
If deleting multiple assets at once (e.g., office renovation, equipment upgrade):Create disposal list
Get approval
Delete one by one
Document in meeting minutes
Validation and Constraints
What You Cannot Do
Cannot delete if:- ❌ Asset was recorded in a closed accounting period
- ❌ You lack
assets:writepermission - ❌ Asset ID is invalid or doesn’t belong to your organization
- ❌ Disposal reason (sold vs. donated vs. scrapped) - hardcoded as “Asset deletion”
- ❌ Sale proceeds or sale price
- ❌ Buyer or recipient information
- ❌ Gain or loss on disposal (must calculate manually)
- ❌ Disposal date separate from deletion timestamp
- ❌ Accumulated depreciation (not tracked in Agatabo)
Idempotency
Asset deletion requiresx-idempotency-key header:
- Prevents duplicate deletions from retries
- Safe for network failures and refreshes
- Duplicate requests with same key succeed without error
Best Practices
- Verify asset is truly gone (not just out for repair or temporarily unavailable)
- Take photos of asset condition before disposal
- Get committee approval for high-value assets (> 500,000 RWF)
- Ensure all supporting documentation is ready
- Keep sales receipts, donation letters, or incident reports
- Record disposal reason and details in external log (Agatabo doesn’t track this)
- Note disposal date, buyer/recipient, and sale proceeds externally
- Update insurance policies when high-value assets are disposed
- For asset sales, always record the cash receipt separately
- Consider recording gain/loss manually for formal financial reporting
- Review and reconcile asset list annually
- Conduct physical inventory count before and after bulk disposals
- Document committee approval for significant disposals
- Keep external disposal log with reasons and supporting docs
- Maintain audit trail of who authorized and who executed disposal
- Keep disposal documentation for tax and audit purposes
Troubleshooting
”Cannot delete asset - period closed”
Cause: Asset was recorded in a closed accounting period Solution:- Accounting periods are locked to prevent changes to past transactions
- Contact your accountant or administrator to re-open the period if deletion is necessary
- Alternatively, wait until current period closes and adjust in next period
“x-idempotency-key header is required”
Cause: Frontend didn’t send idempotency key with DELETE request Solution:- This is a frontend/API client issue
- Ensure the DELETE request includes
x-idempotency-keyheader - Use unique key per deletion attempt (e.g., UUID)
“Insufficient permissions”
Cause: You lackassets:write permission
Solution:
- Contact an administrator to grant
assets:writepermission - Only users with this permission can delete assets
- Check your role and permission assignments
”Asset not found”
Cause: Asset doesn’t exist or already deleted Solution:- Verify asset ID is correct
- Check if asset was already deleted (check audit logs)
- Ensure you’re using the correct organization ID
”Cash balance would become negative”
Cause: Reversal would create negative cash balance (rare for deletions) Solution:- This usually indicates accounting inconsistency
- Use
skipNegativeBalanceCheck=truequery parameter (requires special permission) - Investigate why reversal would cause negative balance
Permissions Required
assets:write. Regular members may have assets:read (view only) or no access.Audit and Compliance
For organizations with formal auditing requirements:- ✅ Reason for disposal (sold, donated, discarded, stolen)
- ✅ Disposal date and authorization (document externally - not in Agatabo)
- ✅ Sale proceeds with receipt (if applicable)
- ✅ Donation acknowledgement letter (if donated)
- ✅ Police report (if stolen)
- ✅ Photos of asset condition before disposal
- ✅ Committee or board approval for high-value disposals
- ✅ Updated insurance policy (removing disposed assets)
- ✅ Gain/loss calculation (if required for financial reporting)
- No disposal reason tracking (hardcoded as “Asset deletion”)
- No sale proceeds field (must document externally)
- No gain/loss calculation (must calculate manually)
- No buyer/recipient information (must document externally)
- ASSET_DISPOSAL journal entry kind exists but is never used (only REVERSAL entries created)
Technical Details
API Endpoint
What Happens Internally
- Validate request: Check idempotency key, organization ID, permissions
- Fetch asset: Retrieve asset record and journal entry
- Delete asset record: Remove from AssetMeta table
- Reverse acquisition entry: Create REVERSAL journal entry with opposite debits/credits
- Reverse bank charges: If asset had linked bank charges, reverse those too
- Check balances: Ensure no negative balances (unless skipped)
- Log audit trail: Record who, when, what (asset title and details)
- Return success: Confirm deletion and reversal
Journal Entry Kind
ASSET_DISPOSAL exists but is NOT used:- The
journal_entry_kindenum includesASSET_DISPOSAL - This kind is mapped to display label “Asset Disposal”
- However, it is never instantiated in the codebase
- Asset deletion creates REVERSAL entries, not ASSET_DISPOSAL entries
- This suggests disposal functionality was planned but not fully implemented