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.Accounting treatment: Allocating to a reserve is a pure equity reclassification. Total organization equity remains unchanged - funds simply move from “undesignated retained earnings” to “designated reserve allocation.”
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
Prerequisites:
- 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
Step 2: Enter Allocation Details
| Field | Description | Required | Validation |
|---|---|---|---|
| Amount | How much to allocate to the reserve | Yes | Minimum 0.01, matches currency decimals |
| Action | Select “Top Up” (add money to reserve) | Yes | Must be ‘TOP_UP’ |
| Date | When this allocation occurred | Yes | ISO format, cannot be in closed period |
| Description | Purpose of this allocation | No | Optional but recommended |
Step 3: Choose Amount
Determine how much to allocate based on your strategy: Policy-Based Allocation:Allocation strategies:
- 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
Typical approach: Use today’s date for current allocations. Use end-of-month dates for monthly allocations recorded at month-end close.
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)
Best practice: Include the source of funds (% of profit, specific decision) and the purpose or target being achieved.
Step 6: Submit
Verify available retained earnings
Ensure allocation won’t exceed available undesignated retained earnings
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
Total equity unchanged: Allocation moves money within equity accounts. Your organization’s total net worth does not change - funds are simply reclassified from “undesignated retained earnings” to “designated reserve allocation.”No cash movement: Allocating to a reserve does NOT move cash between bank accounts. Cash remains in your bank accounts - this is purely an accounting designation.
Common Scenarios
Monthly Recurring Allocations
Set up systematic reserve building:Document allocation policy
Example: “Allocate 500,000 RWF to Emergency Fund, 200,000 RWF to Equipment Reserve on first business day of each month”
Profit-Based Allocations
Allocate percentage of profit after closing monthly books:
Example:
Reaching Reserve Target
Complete a savings goal:
Example:
Adjusting for Portfolio Growth
Increase loan loss reserve as loan portfolio expands:
Example:
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
Allocation tips:Frequency:
- 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:
Example:
“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
| Action | Permission | Scope |
|---|---|---|
| View reserves | reserves:read | ANY |
| Top up reserve | reserves:write | ANY |
| View balance sheet | reports:read | ANY |
Typical roles: Administrators and Accountants have
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)
Related Topics
Reserves Overview
Understand reserves concept and purpose
Creating Reserves
Set up new reserve allocations
Reserve Withdrawals
Release funds from reserves
Balance Sheet
View retained earnings and reserves
Profit & Loss
Calculate net income for allocations
Reserve Reporting
View reserve transaction history