Overview
Bank account transactions in Agatabo are recorded automatically through journal entries when you perform financial operations. Every transaction that affects cash creates journal lines that debit or credit the CASH ledger account linked to your bank account.Important: You don’t manually record “bank transactions.” Instead, you perform business operations (record deposits, disburse loans, pay expenses), and Agatabo automatically creates the accounting entries that update your bank account balances.
How Automatic Recording Works
The Ledger Connection
Each bank account is backed by a CASH ledger account:- Operation creates a journal entry with specific kind (e.g., SAVINGS_DEPOSIT)
- Journal entry contains balanced debit/credit lines
- One or more lines affect CASH ledger account(s)
- Database triggers update ledger balances instantly
- Bank account balance reflects the change
Transaction Types That Affect Bank Accounts
1. Savings Deposits (Increases Balance)
Operation: Member deposits money into savings Endpoint:POST /savings/record
Journal Entry:
2. Loan Disbursements (Decreases Balance)
Operation: Organization lends money to member Endpoints:POST /loans(initial disbursement)POST /loans/:id/modify(additional disbursement via top-up)
3. Loan Payments (No Direct Effect)
Operation: Member repays loan installment Endpoint:POST /loans/:id/payments
Journal Entry:
4. Expense Payments (Decreases Balance)
Operation: Organization pays operational expense Endpoint:POST /expenses
Journal Entry:
5. Bank Charges (Decreases Balance)
Operation: Bank deducts fees or charges Endpoint:POST /expenses with bankChargeAmount field
Journal Entry:
- Expenses → Record Expense → Bank Charge Amount field
- Assets → Purchase Asset → Bank Charge field
Bank charges are separate entries: When you include a bank charge amount with an expense or asset, Agatabo creates TWO journal entries: one for the main transaction, and a separate BANK_CHARGE entry.
6. Dividend Distributions (Decreases Balance)
Operation: Organization distributes profits to members Endpoint:POST /dividends/:poolId/distribute
Journal Entry:
7. Reserve Operations (Varies)
Reserve Top-up (Decreases Balance):8. Entry Fees (Increases Balance)
Operation: New member pays entry fee Endpoint:POST /organization-users/:id/entry-fee
Journal Entry:
9. Opening Balance Adjustments (Sets Balance)
Operation: Set initial bank account balance when starting Agatabo Endpoint:PATCH /bank-accounts/:id/adjust-balance
Journal Entry:
10. Bank Transfers (Decreases One, Increases Another)
Operation: Transfer money between your bank accounts Method: Manual journal entry Journal Entry:- Source: ❌ Decreases balance
- Destination: ✅ Increases balance
Selecting Bank Account
When recording operations that affect cash, you must select which bank account to use:Account Selection Fields
Appears in:- Deposit forms (“Bank Account” dropdown)
- Loan creation (“Disbursement Account” dropdown)
- Loan modification (“Bank Account” dropdown)
- Expense forms (“Bank Account” dropdown)
- Dividend distribution (“Payment Account” dropdown)
- Reserve operations (“Bank Account” dropdown)
- Pre-selects the default bank account
- You can change to any active account
- System validates account is active
Always select the correct account: This ensures your Agatabo balances match your actual bank statements for each account. If deposit goes to Account A physically, select Account A in Agatabo.
Viewing Bank Account Activity
Viewing Transaction History
To see all transactions for a specific bank account:
Information shown:
- Transaction date
- Entry kind (SAVINGS_DEPOSIT, EXPENSE_PAYMENT, etc.)
- Description
- Debit or Credit amount
- Running balance (if available)
- Related entity (member, loan, expense)
Viewing via General Ledger
Alternatively, view transactions through the ledger system:
Learn more about the general ledger →
Transaction Validation
Automatic Validations
When posting transactions affecting bank accounts, Agatabo validates: Balance Constraints:- ✅ Cash balance cannot go negative (except when explicitly allowed for opening balances)
- ✅ Sufficient funds for disbursements and expenses
- ✅ Available balance calculation accounts for reserves
- ✅ Cannot post to closed accounting periods
- ✅ Transaction date must be in open period
- ✅ Debits must equal credits (balanced entry)
- ✅ All amounts must be positive
- ✅ All ledger accounts must be active
- ✅ Idempotency key prevents duplicates
- ✅ Bank account must be active
- ✅ Cannot use inactive accounts for new transactions
Idempotency Protection
Every transaction uses an idempotency key to prevent duplicates: How it works:- System generates unique key per operation
- If request is retried with same key, returns existing transaction
- Prevents accidental double-posting
- Safe for network retries
Understanding Journal Entries
What is a Journal Entry?
A journal entry is the accounting record created for each financial transaction: Components:- Kind: Type of transaction (SAVINGS_DEPOSIT, LOAN_PAYMENT, etc.)
- Date: Transaction date
- Lines: Individual debits and credits
- Status: POSTED (active) or REVERSED (voided)
Summary Table
| Operation | Endpoint/Action | Entry Kind | Bank Balance Change |
|---|---|---|---|
| Savings Deposit | POST /savings/record | SAVINGS_DEPOSIT | ✅ Increases |
| Loan Disbursement | POST /loans | LOAN_DISBURSEMENT | ❌ Decreases |
| Loan Modification | POST /loans/:id/modify | LOAN_MODIFICATION | ❌ Decreases (if top-up) |
| Loan Payment | POST /loans/:id/payments | LOAN_PAYMENT | ⚠️ No effect |
| Expense Payment | POST /expenses | EXPENSE_PAYMENT | ❌ Decreases |
| Bank Charge | POST /expenses (with amount) | BANK_CHARGE | ❌ Decreases |
| Dividend Distribution | POST /dividends/distribute | DIVIDEND_DISTRIBUTION | ❌ Decreases (cash) / ⚠️ No effect (savings) |
| Reserve Top-up | POST /reserves/allocate | RESERVE_TOP_UP | ❌ Decreases |
| Reserve Release | POST /reserves/release | RESERVE_RELEASE | ✅ Increases |
| Entry Fee | POST /users/:id/entry-fee | ENTRY_FEE | ✅ Increases |
| Opening Balance | PATCH /accounts/:id/adjust | CASH_OPENING | Sets to target |
| Bank Transfer | Manual Journal Entry | MANUAL_JOURNAL | ❌ Source / ✅ Destination |
Best Practices
Transaction recording tips:
- Always select the correct bank account when recording transactions
- Verify bank account balance matches physical statement regularly
- Use consistent account selection (operations → Account A, loans → Account B)
- Document transfers between accounts with clear descriptions
- Reconcile monthly to catch discrepancies early
- Review transaction history to understand balance changes
- Use opening balance adjustment only once during setup
- Don’t try to manually adjust balances (use proper transaction types)
- Monitor for negative balance warnings
- Ensure transaction dates are accurate
Troubleshooting
Balance Doesn’t Match Bank Statement
Problem: Agatabo shows different balance than physical bank Solutions:- Review all transactions in Agatabo for the account
- Compare against bank statement line-by-line
- Check for missing deposits or expenses
- Verify all bank charges were recorded
- Look for transactions recorded to wrong account
- Run reconciliation report
Cannot Record Transaction (Insufficient Funds)
Problem: “Insufficient cash balance” error Solutions:- Check current bank account balance
- Verify you selected correct account
- Account for reserved funds (reserves reduce available balance)
- Transfer funds from another account if needed
- Verify member has sufficient savings for loan payment
Transaction Not Appearing
Problem: Recorded operation but don’t see bank transaction Solutions:- Refresh the bank account page
- Check if you selected different bank account
- Verify transaction was successfully posted (check journal entries)
- Some operations don’t affect bank directly (loan payments debit savings)
- Check accounting period is open
Permissions Required
| Action | Permission | Scope |
|---|---|---|
| View bank account activity | bank_accounts:read | ANY |
| Record deposits | savings:write | ANY |
| Disburse loans | loans:write | ANY |
| Record loan payments | loans:write | ANY |
| Record expenses | expenses:write | ANY |
| View journal entries | ledger:read | ANY |
| Create manual entries | ledger:write | ANY |
Related Topics
Bank Accounts Overview
Understand bank account management
Recording Deposits
How to record member savings
Recording Expenses
How to pay organization expenses
General Ledger
Understand the accounting system
Viewing Journal Entries
See all accounting transactions
Reconciliation
Match with bank statements