What are Ledger Roles?
Ledger roles are system-defined categories that determine how ledger accounts behave in Agatabo. Each account is assigned a role that controls:- What types of transactions can affect it
- How it appears in financial statements
- Its normal debit or credit balance
- Its scope (organization-wide, per-member, per-loan, etc.)
System-defined: Ledger roles are built into Agatabo and cannot be modified. They ensure accounting consistency and automation.
Why Roles Matter
Roles ensure:- Consistency: Same transaction types always use correct accounts
- Automation: Agatabo knows which accounts to debit/credit for each operation
- Validation: System prevents invalid account usage (e.g., can’t debit income accounts)
- Reporting: Accounts grouped correctly in Balance Sheet and Income Statement
- Scoping: Enables per-member, per-loan, per-reserve accounting
Complete Role Reference
Asset Roles
Asset roles track what the organization owns or has a right to collect.CASH
Purpose: Cash on hand and bank account balances Account type: ASSET Normal balance: Debit Scope: Organization-wide or per bank account (organization:{orgId} or bankAccount:{id})
Increases (Debit):
- Member deposits
- Loan payments received
- Revenue collection
- Asset sales
- Loan disbursements
- Expense payments
- Member withdrawals
- Asset purchases
LOAN_RECEIVABLE
Purpose: Outstanding loan principal owed to the organization Account type: ASSET Normal balance: Debit Scope: Per loan (loan:{loanId})
Increases (Debit):
- Loan disbursements (new loans)
- Loan payments (principal portion only)
- Loan write-offs (bad debt)
INTEREST_RECEIVABLE
Purpose: Accrued interest on loans not yet paid Account type: ASSET Normal balance: Debit Scope: Per loan (loan:{loanId})
Increases (Debit):
- Interest accrual over time
- Interest charged on loans
- Interest payments received
PENALTY_RECEIVABLE
Purpose: Late payment penalties and fees owed on loans Account type: ASSET Normal balance: Debit Scope: Per loan (loan:{loanId})
Increases (Debit):
- Late payment penalties applied
- Fee charges
- Penalty payments received
- Penalty waivers
FIXED_ASSET
Purpose: Long-term physical assets (equipment, furniture, vehicles, buildings) Account type: ASSET Normal balance: Debit Scope: Per asset (fixedAsset:{assetId})
Increases (Debit):
- Asset purchases
- Asset received as collateral
- Asset received as gift
- Asset sales
- Asset disposal
- Asset write-offs (damage, loss)
Liability Roles
Liability roles track what the organization owes to others.SAVINGS
Purpose: Member savings account balances (funds members have deposited) Account type: LIABILITY Normal balance: Credit Scope: Per member (organizationUser:{userId})
Increases (Credit):
- Member deposits
- Dividend distributions
- Interest credited to savings
- Member withdrawals
- Loan disbursements (if from savings)
BORROWER_SURPLUS_LIABILITY
Purpose: Amount owed to borrower when seized collateral value exceeds outstanding loan balance Account type: LIABILITY Normal balance: Credit Scope: Per member (organizationUser:{userId})
Increases (Credit):
- Collateral seizure (excess value over loan balance)
- Payment to borrower of surplus
- Offset against other debts
Equity Roles
Equity roles track the organization’s net worth and retained funds.RETAINED_EARNINGS
Purpose: Accumulated organizational profits (net income over time) Account type: EQUITY Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Net income transferred at period close
- Reversals of previous losses
- Dividend distributions
- Reserve allocations
- Net losses
RESERVE_ALLOCATION
Purpose: Designated retained earnings set aside for specific future purposes (emergency fund, equipment replacement, building fund, etc.) Account type: EQUITY Normal balance: Debit (contra-equity) Scope: Per reserve (reserve:{reserveId})
Increases (Debit):
- Reserve top-ups (allocations from retained earnings)
- Reserve releases (back to retained earnings)
- Reserve-funded expenses
Reserves are equity: Both RETAINED_EARNINGS and RESERVE_ALLOCATION are equity accounts. Allocating to reserves moves funds within equity (internal reclassification), not between account types.
OPENING_EQUITY
Purpose: Initial capital when organization starts or opening balances during system setup Account type: EQUITY Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Initial capital contributions
- Opening balance entries during migration
- Corrections or adjustments
OTHER_EQUITY
Purpose: Miscellaneous equity items not fitting other categories (donated capital, capital adjustments) Account type: EQUITY Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Donated assets or funds
- Capital contributions
- Equity adjustments
- Reversals or corrections
Income Roles
Income roles track revenue earned by the organization.INTEREST_INCOME
Purpose: Interest earned on loans Account type: INCOME Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Interest charged on loans
- Interest payments received
- Reversals or corrections
PENALTY_INCOME
Purpose: Late payment penalties and fees collected Account type: INCOME Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Late payment penalties
- Fee charges
- Penalty waivers
- Reversals
ENTRY_FEE_INCOME
Purpose: Membership fees collected when members join Account type: INCOME Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Entry fee payments
- Refunds or reversals
DISBURSEMENT_FEE_INCOME
Purpose: Fees charged for loan processing and disbursement Account type: INCOME Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Loan processing fees
- Disbursement fees
- Fee refunds
OTHER_INCOME
Purpose: Miscellaneous revenue not fitting other categories Account type: INCOME Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Asset rental income
- Service fees
- Other revenue sources
- Reversals
BAD_DEBT_RECOVERY_INCOME
Purpose: Recovery of previously written-off loans (collateral seizure value, unexpected payments) Account type: INCOME Normal balance: Credit Scope: Organization-wide (organization:{orgId})
Increases (Credit):
- Collateral seizure proceeds
- Recovered payments on defaulted loans
- Reversals
Expense Roles
Expense roles track costs incurred by the organization.OPERATING_EXPENSE
Purpose: General operational costs (rent, utilities, supplies, salaries, administrative expenses) Account type: EXPENSE Normal balance: Debit Scope: Organization-wide (organization:{orgId}) or per expense category
Increases (Debit):
- Expense payments
- Accrued expenses
- Reversals or refunds
BANK_CHARGE_EXPENSE
Purpose: Banking fees and charges Account type: EXPENSE Normal balance: Debit Scope: Organization-wide (organization:{orgId})
Increases (Debit):
- Bank fees
- Transaction charges
- Account maintenance fees
- Fee reversals or refunds
BAD_DEBT_EXPENSE
Purpose: Loans written off as uncollectible Account type: EXPENSE Normal balance: Debit Scope: Organization-wide (organization:{orgId})
Increases (Debit):
- Loan defaults and write-offs
- Reversals (if loan subsequently recovered)
Account Scoping with Scope Keys
Agatabo uses scope keys to create multiple accounts with the same role for different entities.Scope Key Format
Organization-Scoped Accounts
Format:organization:{organizationId}
Single account for entire organization:
- CASH (unless separate per bank account)
- RETAINED_EARNINGS
- RESERVE_ALLOCATION (per reserve, but using reserve:)
- All INCOME roles
- All EXPENSE roles
- OPENING_EQUITY
- OTHER_EQUITY
organization:org-123
Member-Scoped Accounts
Format:organizationUser:{userId}
Individual account per member:
- SAVINGS: Each member has their own savings account
- BORROWER_SURPLUS_LIABILITY: Tracked per member
organizationUser:alice-456
Loan-Scoped Accounts
Format:loan:{loanId}
Separate account per loan:
- LOAN_RECEIVABLE: Principal balance
- INTEREST_RECEIVABLE: Accrued interest
- PENALTY_RECEIVABLE: Accrued penalties
loan:loan-789
Reserve-Scoped Accounts
Format:reserve:{reserveId}
Separate account per reserve:
- RESERVE_ALLOCATION: Each reserve has its own equity account
reserve:emergency-fund-123
Asset-Scoped Accounts
Format:fixedAsset:{assetId}
Separate account per asset:
- FIXED_ASSET: Each physical asset tracked separately
fixedAsset:vehicle-456
Bank Account-Scoped Accounts
Format:bankAccount:{bankAccountId}
Separate CASH account per bank account:
- CASH: One account per bank account
bankAccount:bank-789
How Agatabo Uses Roles
Example 1: Member Deposit
When you record a deposit for Alice:- System finds Alice’s SAVINGS account via scope key
organizationUser:alice-123 - System finds organization’s CASH account
- Creates journal entry:
Example 2: Loan Disbursement
When you disburse a loan to Bob:- System creates new LOAN_RECEIVABLE account with scope
loan:bob-loan-456 - System finds CASH account
- Creates journal entry:
Example 3: Dividend Distribution
When you distribute dividends:- System finds organization’s RETAINED_EARNINGS account
- System finds each member’s SAVINGS account
- Creates journal entry:
Example 4: Reserve Allocation
When you allocate to a reserve:- System finds specific RESERVE_ALLOCATION account via scope
reserve:emergency-fund - System finds organization’s RETAINED_EARNINGS account
- Creates journal entry:
Role Summary Table
| Role | Type | Normal Balance | Scope Pattern | Example Scope Key |
|---|---|---|---|---|
| CASH | ASSET | Debit | organization or bankAccount | organization:org123 |
| LOAN_RECEIVABLE | ASSET | Debit | loan | loan:loan123 |
| INTEREST_RECEIVABLE | ASSET | Debit | loan | loan:loan123 |
| PENALTY_RECEIVABLE | ASSET | Debit | loan | loan:loan123 |
| FIXED_ASSET | ASSET | Debit | fixedAsset | fixedAsset:car456 |
| SAVINGS | LIABILITY | Credit | organizationUser | organizationUser:alice |
| BORROWER_SURPLUS_LIABILITY | LIABILITY | Credit | organizationUser | organizationUser:bob |
| RETAINED_EARNINGS | EQUITY | Credit | organization | organization:org123 |
| RESERVE_ALLOCATION | EQUITY | Debit | reserve | reserve:emergency |
| OPENING_EQUITY | EQUITY | Credit | organization | organization:org123 |
| OTHER_EQUITY | EQUITY | Credit | organization | organization:org123 |
| INTEREST_INCOME | INCOME | Credit | organization | organization:org123 |
| PENALTY_INCOME | INCOME | Credit | organization | organization:org123 |
| ENTRY_FEE_INCOME | INCOME | Credit | organization | organization:org123 |
| DISBURSEMENT_FEE_INCOME | INCOME | Credit | organization | organization:org123 |
| OTHER_INCOME | INCOME | Credit | organization | organization:org123 |
| BAD_DEBT_RECOVERY_INCOME | INCOME | Credit | organization | organization:org123 |
| OPERATING_EXPENSE | EXPENSE | Debit | organization | organization:org123 |
| BANK_CHARGE_EXPENSE | EXPENSE | Debit | organization | organization:org123 |
| BAD_DEBT_EXPENSE | EXPENSE | Debit | organization | organization:org123 |
Roles Cannot Be Changed
Why roles are fixed:- Ensures accounting consistency across all organizations
- Enables automation of journal entries
- Maintains financial statement accuracy
- Prevents accounting errors from misconfigured accounts
- Use existing roles creatively (e.g., OPERATING_EXPENSE for various expense types)
- Contact support for custom requirements
- May require platform enhancement
Best Practices
Working with ledger roles:Understanding:
- Learn the roles relevant to your work (treasurers focus on CASH, SAVINGS; loan officers on LOAN_RECEIVABLE)
- Review this reference when creating manual journal entries
- Understand scope keys for per-member, per-loan accounting
- Trust automatic role assignment (Agatabo selects correctly)
- Verify roles when reviewing journal entries
- Report if transactions use unexpected roles (may indicate bug)
- Use correct scope keys when querying accounts
- Consult this guide before creating manual entries
- Verify you’re using the right role for your purpose
- Match role types correctly (ASSET with ASSET, LIABILITY with INCOME, etc.)
- Include proper scope keys
- Review role assignments during financial audits
- Verify scope keys are correct for entity-specific accounts
- Check that all accounts follow role typing rules
- Report anomalies to accountant or support
Need Help?
General Ledger Overview
Understand the accounting system
Understanding Double-Entry
Learn accounting basics
Viewing Journal Entries
See how roles are used in transactions
Manual Journal Entries
Create entries using specific roles
Balance Sheet
See how roles appear in financial statements