What is the General Ledger?
The general ledger is Agatabo’s core accounting system that tracks all financial transactions using double-entry bookkeeping. Every deposit, loan disbursement, payment, expense, dividend, and reserve allocation creates journal entries that automatically maintain balanced accounts.Automatic accounting: Most journal entries are created automatically when you perform business operations. You record transactions (deposits, loans, expenses), and Agatabo handles the accounting behind the scenes.
Key Concepts
Double-Entry Bookkeeping
Every transaction affects at least two accounts:- Debit side: Increases assets/expenses, decreases liabilities/income/equity
- Credit side: Increases liabilities/income/equity, decreases assets/expenses
- Balance requirement: Total debits must always equal total credits
Journal Entries
A journal entry is a record of a financial transaction consisting of:- Kind: Type of transaction (e.g., SAVINGS_DEPOSIT, LOAN_DISBURSEMENT, DIVIDEND_DISTRIBUTION)
- Transaction date: When the transaction occurred
- Status: DRAFT or POSTED
- Lines: Debit and credit lines that must balance
- Metadata: Title, description, documents, idempotency key
- References: Links to specific entities (organizationUser, loan, reserve, etc.)
Journal Entry Kinds
Agatabo supports the following transaction types: Savings & Deposits:- SAVINGS_DEPOSIT: Member deposits funds to savings account
- ENTRY_FEE: Initial membership fee payment
- LOAN_DISBURSEMENT: Loan principal disbursed to member
- LOAN_PAYMENT: Member makes loan payment (principal + interest)
- LOAN_PENALTY: Late payment penalty applied
- LOAN_DEFAULT: Loan written off as bad debt
- INTEREST_PAID_IN_ADVANCE: Upfront interest payment
- EXPENSE_PAYMENT: Operating expense payment
- BANK_CHARGE: Bank fees and charges
- RESERVE_TOP_UP: Allocate funds from retained earnings to reserves
- RESERVE_RELEASE: Release funds from reserves back to retained earnings
- RESERVE_EXPENSE: Expense paid directly from reserve funds
- DIVIDEND_DISTRIBUTION: Distribute retained earnings to member savings accounts
- ASSET_CASH_PURCHASE: Purchase asset with cash
- ASSET_COLLATERAL: Acquire asset as loan collateral
- ASSET_GIFT: Receive donated asset
- ASSET_DISPOSAL: Sell or dispose of asset
- CASH_OPENING: Opening cash balance
- REVERSAL: Reverse a previous journal entry
- PERIOD_CLOSE: Close accounting period and transfer net income to retained earnings
Journal Entry Status
DRAFT:- Entry created but not yet finalized
- Can be edited or deleted
- Does not affect account balances
- Not included in financial reports
- Used for preparing entries before posting
- Entry finalized and locked
- Cannot be edited or deleted (permanent)
- Affects account balances immediately
- Included in all financial reports
- Creates audit trail
Most entries are POSTED automatically: When you record a transaction (deposit, loan payment, dividend distribution), Agatabo creates and posts the journal entry immediately. Manual entries can be created as drafts for review before posting.
Ledger Accounts
Ledger accounts are categorized by type and role. Account types (5 categories):- ASSET: Resources owned (Cash, Loans Receivable, Fixed Assets)
- LIABILITY: Obligations owed (Member Savings, Borrower Surplus)
- EQUITY: Retained Earnings, Reserves, Opening Equity
- INCOME: Revenue sources (Interest, Fees, Penalties)
- EXPENSE: Costs incurred (Operating Expenses, Bad Debt, Bank Charges)
- CASH: Cash on hand or in bank
- LOAN_RECEIVABLE: Principal amount of loans outstanding
- INTEREST_RECEIVABLE: Accrued interest not yet paid
- PENALTY_RECEIVABLE: Accrued penalties not yet paid
- FIXED_ASSET: Equipment, furniture, buildings
- SAVINGS: Member savings balances (one account per member)
- BORROWER_SURPLUS_LIABILITY: Overpayments from borrowers
- RETAINED_EARNINGS: Accumulated profits
- RESERVE_ALLOCATION: Designated reserves (one account per reserve)
- OPENING_EQUITY: Initial capital
- OTHER_EQUITY: Miscellaneous equity
- INTEREST_INCOME: Interest earned on loans
- PENALTY_INCOME: Late payment penalties
- ENTRY_FEE_INCOME: Membership fees
- DISBURSEMENT_FEE_INCOME: Loan processing fees
- BAD_DEBT_RECOVERY_INCOME: Recovered bad debt
- OTHER_INCOME: Miscellaneous income
- OPERATING_EXPENSE: General operating costs
- BANK_CHARGE_EXPENSE: Bank fees
- BAD_DEBT_EXPENSE: Loan write-offs
Scope Keys
Scope keys link ledger accounts to specific entities. Format:- Allows multiple accounts with same role (e.g., one SAVINGS account per member)
- Links accounts to specific members, loans, reserves, or organization
- Enables querying all accounts for a specific entity
- Supports per-member, per-loan, per-reserve accounting
- Organization-scoped:
organization:{orgId}(CASH, RETAINED_EARNINGS, INTEREST_INCOME, etc.) - Member-scoped:
organizationUser:{userId}(SAVINGS) - Loan-scoped:
loan:{loanId}(LOAN_RECEIVABLE, INTEREST_RECEIVABLE, PENALTY_RECEIVABLE) - Reserve-scoped:
reserve:{reserveId}(RESERVE_ALLOCATION) - Asset-scoped:
fixedAsset:{assetId}(FIXED_ASSET)
How Transactions Create Journal Entries
Example 1: Member Deposits 500,000 RWF
Transaction: Member Alice deposits 500,000 RWF to her savings account Journal entry created:- Cash balance increases by 500,000
- Alice’s savings balance increases by 500,000
- Entry is balanced (debit = credit)
Example 2: Loan Disbursed 2,000,000 RWF
Transaction: Member Bob receives a 2,000,000 RWF loan Journal entry created:- Loan receivable increases by 2,000,000 (asset)
- Cash decreases by 2,000,000
- Loan balance tracked in dedicated account
Example 3: Dividend Distribution 5,000,000 RWF
Transaction: Distribute 5,000,000 RWF dividend to 50 members Journal entry created:- Retained earnings decreases by 5,000,000
- Each member’s savings increases by their dividend share
- One journal entry with multiple credit lines
Example 4: Reserve Allocation 1,000,000 RWF
Transaction: Allocate 1,000,000 RWF from retained earnings to emergency fund reserve Journal entry created:- Emergency fund reserve balance increases by 1,000,000
- Retained earnings decreases by 1,000,000
- Both are equity accounts (internal transfer within equity section)
Viewing Journal Entries
Learn how to view journal entries →
Creating Manual Journal Entries
Most journal entries are automatic, but you can create manual entries for:- Adjustments and corrections
- Accruals and deferrals
- One-time transactions not supported by standard features
- Testing or data migration
Accounting Period Constraints
Journal entries are subject to accounting period rules: Rules:- Cannot post entries with transaction date in a closed accounting period
- Transaction date must be in an open period
- Once a period is closed, all entries with dates in that period are locked
- Prevents backdating transactions or altering historical records
Idempotency
Journal entries support idempotency to prevent duplicate transactions: How it works:- Supply an
idempotencyKeywhen creating a journal entry - If same key used twice, second request returns the existing entry (no duplicate)
- Safe to retry failed requests without creating duplicates
- Dividend distributions (prevent double-distribution)
- Reserve allocations
- Bulk operations
- API retries after network failures
Best Practices
General ledger best practices:For Non-Accountants:
- Trust the automatic journal entries (they’re correct)
- Review journal entries periodically to understand cash flow
- Don’t create manual entries unless necessary
- Ask an accountant if unsure about manual entries
- Use trial balance to verify books balance
- Review journal entries regularly for accuracy
- Use manual entries sparingly (only when necessary)
- Always document manual entries with clear descriptions
- Verify trial balance before closing accounting periods
- Export journal entries for external audit
- Monitor for unbalanced entries (should never occur)
- All journal entries are permanent once posted
- Cannot delete or modify posted entries
- Use REVERSAL entries to correct mistakes
- Keep idempotency keys for distributed operations
- Document reasons for manual adjustments
- Run trial balance monthly
- Reconcile bank accounts with CASH ledger account
- Verify member savings balances match SAVINGS account totals
- Check that loans outstanding match LOAN_RECEIVABLE total
- Investigate any discrepancies immediately
Common Operations
Understanding Double-Entry
Accounting basics for non-accountants
Ledger Roles
Complete list of account roles and types
Viewing Journal Entries
Review transaction records and audit trail
Manual Journal Entries
Create manual accounting adjustments
Reconciliation
Detect and resolve accounting discrepancies
For Different User Types
For Non-Accountants (Treasurers, Administrators)
What you need to know:- Journal entries are created automatically when you record transactions
- You don’t need to understand debits/credits for day-to-day operations
- Review journal entries to understand where money is going
- Use reports (Balance Sheet, Income Statement) instead of raw journal entries
- Trust the system to handle accounting correctly
- Before creating manual journal entries
- When reconciling discrepancies
- Before closing accounting periods
- For audit preparation
- When interpreting complex transactions
For Accountants
What you need to know:- System uses proper double-entry accounting throughout
- All automatic entries are balanced and validated
- Journal entry kinds map to specific business transactions
- Scope keys enable per-entity accounting (member, loan, reserve)
- All entries should always balance (report issues if not)
- Manual entries available for adjustments and corrections
- Export capabilities for external audit
- Review ledger accounts before period close
- Verify reconciliation regularly
- Create manual entries when needed (with documentation)
- Prepare financial statements
- Audit journal entries for accuracy
- Train non-accounting staff on basic concepts
Related Topics
Balance Sheet
View assets, liabilities, and equity
Income Statement
View revenue and expenses
Accounting Periods
Understand period closure and constraints
Retained Earnings
How profits accumulate in equity