Overview
Reserve allocation (also called Top Up) transfers money from your organization’s retained earnings into a designated reserve. This reduces unallocated retained earnings and increases the reserve balance, earmarking funds for a specific future purpose.When to Allocate to Reserves
Common scenarios:- Monthly routine: Allocate fixed percentage of profit to emergency reserve
- After profitable quarter: Allocate surplus to building fund
- Portfolio growth: Increase loan loss reserve as loan portfolio expands
- Policy compliance: Meet reserve targets set by bylaws or regulations
- Goal achievement: Regular allocations toward specific savings goals
- Initial funding: First allocation to newly created reserve
- Target adjustment: Increase allocation to reach target faster
Before You Begin
- You have
reserves:writepermission - Reserve exists and is marked Active
- Organization has sufficient retained earnings to allocate
- Accounting period is not closed
- You have an idempotency key ready (auto-generated by frontend)
Step-by-Step Instructions
Step 1: Navigate to Reserve
Open Reserves section
Find the reserve
Click on reserve name
Click Top Up or Adjust Balance
Step 2: Enter Allocation Details
Step 3: Choose Amount
Determine how much to allocate based on your strategy: Policy-Based Allocation:- Fixed amount: 500,000 RWF every month (predictable, easy to budget)
- Percentage of profit: 20% of this month’s net income (scales with success)
- Target gap: (Target - Current Balance) / Months Remaining (achieves goal on schedule)
- Surplus allocation: After covering operations, allocate excess to reserves (opportunistic)
Step 4: Set Allocation Date
Date: When this allocation is effective (usually today) Rules:- Must be valid ISO date (YYYY-MM-DD)
- Cannot be in closed accounting period
- Can be historical (past dates) if period is still open
- Cannot exceed current date
- Today: 2026-06-12
- End of last month: 2026-05-31
- First of current month: 2026-06-01
Step 5: Add Description (Optional but Recommended)
Document why you’re making this allocation for audit trail and transparency: Good descriptions:- “Monthly allocation - 15% of June 2026 profit (2M RWF net income)”
- “Q2 2026 allocation toward building fund target - 20% of quarterly profit”
- “Increase loan loss reserve to 5% of portfolio (2M RWF additional loans this month)”
- “Year-end allocation per member vote at December 2026 AGM”
- “Initial funding - emergency reserve setup per new policy”
- “Final allocation to reach 3M RWF emergency fund target”
- “Allocation”
- “Adding money”
- “Reserve top up”
- (blank)
Step 6: Submit
Review all fields
Verify available retained earnings
Click Submit or Allocate
Confirm success
Verify transaction in history
What Happens During Allocation
When you allocate to a reserve, Agatabo automatically:-
Validates request
- Reserve must be active
- Reserve must exist and belong to organization
- Amount must be at least 0.01
- Date must not be in closed period
- Sufficient retained earnings available (unless skipNegativeBalanceCheck)
-
Creates journal entry
-
Updates balances
- Reserve ledger account balance increases by amount (credit to equity account)
- Retained earnings ledger account balance decreases by amount (debit to equity account)
-
Records transaction
- Transaction appears in reserve transaction history
- Includes running balance after allocation
- Linked to journal entry for audit trail
-
Logs audit trail
- Records who made allocation
- Timestamp of operation
- Amount and description
- Full journal entry details
Common Scenarios
Monthly Recurring Allocations
Set up systematic reserve building:Document allocation policy
Create calendar reminder
Verify profit first
Execute allocations
Document in minutes
Profit-Based Allocations
Allocate percentage of profit after closing monthly books:Run Profit & Loss report
Calculate allocations
Top up each reserve
Verify retained earnings remain positive
Reaching Reserve Target
Complete a savings goal:Check current balance
Calculate final allocation
Verify sufficient retained earnings
Top up final amount
Mark reserve inactive (optional)
Adjusting for Portfolio Growth
Increase loan loss reserve as loan portfolio expands:Calculate target reserve
Check current reserve balance
Calculate shortfall
Allocate shortfall
Validation and Constraints
Input Validation
Amount:- ✅ Must be at least 0.01
- ✅ Must match organization’s currency decimal places
- ❌ Cannot be negative or zero
- ❌ Cannot exceed available retained earnings (unless skipNegativeBalanceCheck)
- ✅ Must be ‘TOP_UP’ (for allocations)
- ❌ Cannot be ‘RELEASE’ (use different operation)
- ✅ Must be valid ISO date (YYYY-MM-DD)
- ✅ Can be historical (past dates in open periods)
- ❌ Cannot be in closed accounting period
- ❌ Cannot exceed current date
- ✅ Optional field
- ✅ Can be empty or null
- ✅ Recommended for audit trail
Business Logic Validation
Reserve Status:- Reserve must be active (isActive = true)
- Inactive reserves reject allocations with error
- System calculates: Available = Total Retained Earnings - Sum of All Reserves
- Allocation amount must not exceed available amount
- Can be skipped with
skipNegativeBalanceCheck: true(requires special permission)
- Date must not fall in closed accounting period
- Validates before creating journal entry
- All allocation operations require idempotency key (header:
x-idempotency-key) - Prevents duplicate allocations from retries
- Safe for network failures and page refreshes
- Duplicate requests with same key return existing transaction
Best Practices
- Allocate regularly (monthly or quarterly) rather than sporadically
- Consistent small allocations easier than large lump sums
- Build allocation into monthly closing process
- Match allocation timing to profit cycles
- Don’t allocate 100% of retained earnings - keep 20-30% buffer for operations
- Use percentage-based allocations for scalability (grow with organization)
- Use fixed amounts for predictable budgeting
- Consider cash flow needs before large allocations
- Always add descriptive allocation notes (include % of profit, source, purpose)
- Document allocation policy in bylaws or financial procedures
- Report reserve allocations to members at meetings (transparency)
- Keep allocation schedule consistent with stated policies
- Review reserve targets annually and adjust allocations as needed
- Rebalance reserves if one grows beyond target while others lag
- Mark reserves inactive when targets reached
- Don’t over-allocate (diminishes operational flexibility)
- Verify retained earnings balance before allocating
- Don’t allocate if it would make undesignated retained earnings negative
- Get board/committee approval for large allocations (e.g., > 1M RWF)
- Review reserve strategy quarterly
Troubleshooting
”Insufficient retained earnings”
Cause: Allocation would make undesignated retained earnings negative Solution:Check Balance Sheet
Calculate existing reserves
Determine available amount
Reduce allocation
“Reserve is inactive”
Cause: Cannot allocate to inactive reserves Solutions:-
Reactivate the reserve:
- Navigate to reserve details
- Click Edit or Update
- Set Active = true
- Save changes
-
Create new active reserve:
- If old reserve is obsolete
- Create new reserve with updated purpose
- Begin allocations to new reserve
”Period closed” or “Cannot create entry in closed period”
Cause: Allocation date falls in a closed accounting period Solutions:- Change allocation date to current open period
- Ask administrator to reopen period (not recommended - breaks period lock)
- Wait for next period and record allocation then
“Amount validation error”
Causes and solutions: “Amount must be at least 0.01”:- Enter amount >= 0.01 (minimum allocation)
- Check organization’s monetary policy (e.g., RWF uses 0 decimals, USD uses 2)
- Enter: 500000 (correct for RWF) not 500000.50 (incorrect for RWF)
- Use positive number for TOP_UP
- For withdrawals, use RELEASE action instead
”x-idempotency-key header is required”
Cause: Frontend didn’t send idempotency key with request Solution:- This is usually a frontend/API client issue
- Ensure the request includes
x-idempotency-keyheader - Use unique key per allocation attempt (e.g., UUID)
- Most frontends auto-generate this
Permissions Required
reserves:write. Regular members typically have reserves:read (view only) or no access.Technical Details
API Endpoint
Journal Entry Pattern
- Retained Earnings (EQUITY): Debited -500,000 (decreases)
- Reserve Allocation (EQUITY): Credited +500,000 (increases)
- Net equity change: 0 (internal transfer)