Overview
Recording expenses ensures all organizational spending is tracked in Agatabo. This maintains accurate financial records, enables budgeting, and generates complete financial reports. Expenses can be paid from bank account cash or funded from reserve allocations.Before You Begin
- You have
expenses:writepermission - You have a receipt or documentation for the expense
- You know which bank account paid the expense (or which reserve funded it)
- You’ve decided on a clear, descriptive title for the expense
Recording a Standard Expense
Step 1: Navigate to Expenses
Open Expenses section
Click Record Expense or Add Expense
Step 2: Fill Required Fields
Required Information:- Title: “Office Rent - June 2026”
- Amount: 150000 (or 150,000 RWF)
- Date: 2026-06-08
title field, not a predefined category dropdown. Use clear, consistent titles to organize your expenses.Step 3: Fill Optional Fields
Optional Information:- Explain what was purchased and why
- Include relevant details (period, vendor, purpose)
- Example: “Monthly office space rental at Kimihurura for June 2026, paid to Landlord ABC”
- Upload photos or PDFs of receipts
- Store invoice copies
- Keep audit trail of supporting documentation
Step 4: Add Bank Charge (Optional)
If the expense incurred a bank service charge (transaction fee, wire fee):Enter Bank Charge Amount field
System creates linked entry
Total deduction
Step 5: Submit
Review all fields
Click Save or Record Expense
Confirm success
Verify bank balance
Recording a Reserve-Funded Expense
For expenses paid from designated reserve allocations (emergency fund, specific reserve):Step 1: Navigate and Start
Open Expenses section
Click Record Expense
Step 2: Fill Expense Details
Fill the same required fields:- Title: Descriptive expense name
- Amount: How much to spend from reserve
- Date: When expense occurred
Step 3: Select Reserve Allocation
Find Reserve Allocation field
Select the reserve
Verify sufficient balance
Step 4: Optional Bank Account
Reserve-funded expenses behavior:- Bank account is optional (can be omitted)
- If provided: System releases reserve TO that account, then pays expense FROM it
- If omitted: Uses default bank account
Step 5: Submit
Review details
Click Save
Verify results
- Reserve balance decreased
- Expense recorded
- Bank balance unchanged (released then spent)
Recording with Bank Charge
Complete example of expense with bank charge:Scenario: Pay Supplier with Wire Fee
Details:- Supplier payment: 500,000 RWF
- Wire transfer fee: 5,000 RWF
- Total cost: 505,000 RWF
Steps
Fill expense fields
- Title: “Payment to Supplier XYZ”
- Amount: 500,000
- Date: 2026-06-11
- Bank Account: Operations Account
- Description: “Purchase order #456 - Office furniture”
Add bank charge
- Bank Charge Amount: 5,000
Submit
What Happens When You Record
When you submit an expense, Agatabo automatically:-
Validates inputs:
- Amount >= 0.01
- Title is non-empty
- Date is valid ISO format
- Bank account exists and is active
- Reserve has sufficient balance (if reserve-funded)
-
Creates journal entries:
- Main expense entry (EXPENSE_PAYMENT or RESERVE_EXPENSE)
- Reserve release entry (if reserve-funded)
- Bank charge entry (if bank charge amount provided)
-
Updates balances:
- Reduces bank account balance (CASH ledger)
- Reduces reserve balance (if reserve-funded)
- Records expense in OPERATING_EXPENSE or BANK_CHARGE_EXPENSE
-
Records metadata:
- Creates ExpenseMeta record with all details
- Links to journal entries
- Stores documents as JSON
-
Logs audit trail:
- Records who created the expense
- Timestamp of creation
- IP address and user agent (if available)
-
Updates reports:
- Appears on Profit & Loss statement
- Shows in expense history
- Affects financial metrics
Editing Expenses
You can edit expenses to correct errors or update information.How to Edit
Navigate to expense history
Find the expense
Click Edit
Update fields
Submit changes
What You Can Change
All fields are editable:- Title
- Amount
- Date
- Description
- Bank account
- Reserve allocation
- Bank charge amount
- Documents
How Editing Works (Reverse-and-Repost)
Important: Agatabo doesn’t modify existing entries. Instead:-
Reverses old entries:
- Creates reversal of main expense
- Reverses linked bank charge (if exists)
- Reverses reserve release (if reserve-funded)
-
Creates new entries:
- Posts new expense with updated values
- Creates new bank charge (if amount provided)
- Creates new reserve release (if reserve-funded)
-
Maintains audit trail:
- Old entries remain visible as REVERSED
- New entries show as POSTED
- Complete history preserved
Constraints on Editing
Cannot edit if:- ❌ Expense is in closed accounting period
- ❌ Expense has already been reversed
- ❌ You don’t have
expenses:writepermission
- ✅ Any POSTED expense in open period
- ✅ All fields including amount and date
- ✅ Can change from standard to reserve-funded (or vice versa)
Deleting Expenses
You can delete expenses if they were recorded in error.How to Delete
Navigate to expense history
Find the expense
Click Delete
Confirm deletion
Verify results
- Expense removed from history (or marked as reversed)
- Bank balance restored
- Reserve balance restored (if applicable)
What Happens During Deletion
Reversal process:-
Reverses main expense:
- Creates reversal entry: Dr CASH / Cr OPERATING_EXPENSE
- Restores bank account balance
-
Reverses bank charge (if exists):
- Reverses linked bank charge entry
- Restores additional bank fees
-
Reverses reserve release (if reserve-funded):
- Reverses reserve release entry: Dr RESERVE_ALLOCATION / Cr CASH
- Restores reserve balance
-
Updates metadata:
- Marks expense as deleted
- All journal entries show status: REVERSED
- Audit trail maintained
Constraints on Deletion
Cannot delete if:- ❌ Expense is in closed accounting period
- ❌ Already reversed/deleted
- ❌ Don’t have
expenses:writepermission
- Deletion may create negative balance if bank account doesn’t have sufficient funds
- Use
skipNegativeBalanceCheckparameter if intentional
Common Scenarios
Scenario 1: Monthly Recurring Expenses
For expenses that happen every month (rent, salaries, utilities): Best practice:Create a checklist
Record at consistent time
Use consistent titles
Set reminders
Scenario 2: Recording Reimbursements
If reimbursing a member who paid on behalf of the organization:Record the actual expense
Note reimbursement in description
Pay the member separately
Scenario 3: Emergency Expense from Reserve
Using emergency fund for urgent, unplanned expense:Record expense
Select Emergency Reserve
Add detailed description
Submit
Scenario 4: Large Payment with Bank Charge
Significant payment with wire transfer fee:Scenario 5: Correcting an Error
Recorded wrong amount, need to fix:Find the expense
Click Edit
Update amount
Submit
Validation and Error Messages
Common Errors
Validation Rules
Amount:- ✅ Must be >= 0.01
- ✅ Must match currency decimal places
- ❌ Cannot be 0 or negative
- ✅ Must be non-empty string
- ❌ Cannot be blank spaces
- ✅ Must be valid ISO date (YYYY-MM-DD)
- ✅ Can be in the past
- ❌ Cannot be in closed period
- ❌ Cannot be future date (some implementations)
- ✅ Must exist in organization
- ✅ Must be active
- Falls back to default if omitted
- ✅ Must exist and be active
- ✅ Must have sufficient balance
- ✅ Balance >= (expense amount + bank charge amount)
Best Practices
- Record expenses within 1 week of occurrence (fresher memory)
- Keep physical receipts in organized file or envelope
- Take photos of receipts for digital backup (upload as documents)
- Use clear, consistent title format: “Category - Description - Period”
- Include detailed descriptions for amounts over 100,000 RWF
- Require approval workflow for large expenses (implement externally)
- Review expense trends monthly to catch unusual spending patterns
- Separate personal expenses from organizational expenses (never mix)
- Use reserve-funded expenses for emergency or planned reserve spending
- Always include bank charges when applicable (don’t hide fees)
- Reconcile bank statements monthly to catch missing expenses
- Close accounting periods regularly to lock historical data
Permissions Required
expenses:write. Regular members may have expenses:read (view only) or no access.