What are Manual Journal Entries?
Manual journal entries are accounting transactions created directly by users withledger:write permission, rather than automatically generated through standard operations (deposits, loans, expenses, dividends). They’re used for adjustments, corrections, accruals, and special transactions.
When to Use Manual Entries
Valid use cases: Accounting Adjustments:- Depreciation: Monthly depreciation of fixed assets
- Accruals: Recording revenue earned or expenses incurred but not yet paid
- Deferrals: Prepaid expenses or unearned revenue
- Write-offs: Bad debt write-offs, asset disposals
- Reclassifications: Correcting misclassified transactions
- Error corrections: Fixing incorrectly posted transactions
- Balance adjustments: Reconciling discrepancies
- Initial setup: Recording starting balances when migrating to Agatabo
- Account initialization: Setting up accounts with historical balances
- One-time events: Transactions without dedicated Agatabo features
- Complex allocations: Multi-account distributions
- ❌ Member deposits (use Deposits feature)
- ❌ Loan disbursements or payments (use Loans feature)
- ❌ Operating expenses (use Expenses feature)
- ❌ Dividend distributions (use Dividends feature)
- ❌ Reserve allocations (use Reserves feature)
API Endpoint
Create manual journal entry:Prerequisites
Requirements:Permissions:
ledger:writepermission (typically Accountant or Administrator)
- Understanding of double-entry accounting
- Knowledge of debit and credit rules
- Familiarity with organization’s chart of accounts
- Approval for the adjustment (if required by policy)
- Supporting documents (receipts, memos, reconciliation reports)
- Clear explanation of purpose
- Transaction date must be in an open accounting period
- Idempotency key for each request (prevents duplicates)
Validation Rules
Required fields:- x-idempotency-key header: Prevents duplicate entries
- lines: At least one journal line (typically 2+ for balanced entry)
- ledgerAccountId: Valid UUID for each line
- side: Must be “DEBIT” or “CREDIT”
- amount: Must be ≥ 0.01 with max 2 decimal places
- Total debits must equal total credits: Enforced automatically
- Unbalanced entries are rejected
- Minimum amount: 0.01 (1 cent in fractional currency)
- Decimal places: Maximum 2
- No negative amounts: Use opposite side instead (e.g., use CREDIT to decrease an asset, not negative DEBIT)
- Accounts must exist: All ledgerAccountIds must be valid
- Accounts must belong to organization: Cannot use accounts from other organizations
- Accounts must be active: Inactive accounts cannot be used
- Accounts must be accessible: User must have permission to post to these accounts
- Transaction date: Must be in ISO format (YYYY-MM-DD)
- Open period only: Cannot post to closed accounting periods
- No future dates: Date cannot be after today (unless configured otherwise)
- x-idempotency-key header is mandatory: Request fails without it
- Same key returns existing entry: Safe to retry failed requests
- Unique per organization: Same key can exist in different organizations
Creating Manual Journal Entry
Using the API
Example 1: Record depreciation expenseJournal Entry Structure
Created journal entry:Common Manual Entry Examples
1. Monthly Depreciation
Purpose: Record monthly depreciation expense for fixed assets2. Correct Posted Error
Purpose: Member deposit was recorded to wrong member Original (incorrect) entry:3. Accrued Interest Income
Purpose: Record interest earned but not yet received4. Opening Balances
Purpose: Record initial balances when starting Agatabo5. Write-off Bad Debt
Purpose: Write off uncollectible loan6. Prepaid Expense
Purpose: Record payment for future service (e.g., insurance for 12 months)7. Reclassify Expense
Purpose: Move expense from one category to anotherBest Practices
Manual journal entry guidelines:Before Creating:
- ✅ Verify transaction cannot be recorded through standard features
- ✅ Get approval from supervisor or accountant (if required by policy)
- ✅ Prepare supporting documentation
- ✅ Draft entry on paper first, verify balance
- ✅ Confirm transaction date is in open accounting period
- ✅ Generate unique idempotency key
- ✅ Write clear, detailed description (as if explaining to auditor)
- ✅ Reference original transaction if correcting an error
- ✅ Attach supporting documents
- ✅ Double-check account selections
- ✅ Verify amounts and sides (DEBIT vs CREDIT)
- ✅ Confirm entry balances before posting
- ✅ Review posted entry immediately
- ✅ Save idempotency key for future reference
- ✅ Document reason in accounting records
- ✅ Notify relevant stakeholders
- ✅ Keep copies of all supporting documents
- ✅ Report all manual entries to management monthly
- ✅ Description minimum length: 10 characters (recommended: 50-200 characters)
- ✅ Include “why” not just “what” (e.g., “Correction - deposited to wrong member due to name similarity” not just “Correction”)
- ✅ Reference original transaction IDs when correcting errors
- ✅ Use consistent date format (ISO: YYYY-MM-DD)
- ✅ Attach memos, reconciliation reports, or approval documents
Restrictions and Limitations
Cannot create manual entries for: Closed periods:- ❌ Transaction date in closed accounting period
- ✅ Create in current open period with description referencing prior period
- ❌ Accounts that don’t exist
- ❌ Accounts from other organizations
- ❌ Inactive accounts
- ✅ Only use active accounts within your organization
- ⚠️ Some accounts may be restricted (system will reject if not allowed)
- ⚠️ Verify you have permission to post to target accounts
- ❌ Total debits ≠ total credits
- ✅ Always verify balance before posting
- ❌ Negative amounts not allowed
- ✅ Use opposite side instead (CREDIT to decrease asset, not negative DEBIT)
- ❌ Once posted, manual entries are permanent
- ✅ To correct, create reversal entry or new correcting entry
Correcting Manual Entries
Manual journal entries are permanent once posted. To correct:Method 1: Create Reversal Entry
Create an entry that reverses the original: Original (incorrect):Method 2: Create Correcting Entry
If only part of entry is wrong, create adjustment: Original (incorrect):Approval Workflow (Recommended)
While Agatabo doesn’t enforce approval workflows, organizations should establish internal controls:| Entry Amount | Required Approval | Documentation |
|---|---|---|
| Under 50,000 RWF | Accountant only | Description + reason |
| 50,000 - 200,000 RWF | Accountant + Treasurer | Description + supporting docs |
| 200,000 - 1,000,000 RWF | Accountant + Treasurer + Finance Committee | Description + docs + approval memo |
| Over 1,000,000 RWF | Accountant + Management Board | Full documentation + board minutes |
- Generate idempotency key after approval
- Include approval reference in description
- Attach approval memo as document
Audit Considerations
Manual entries receive extra scrutiny from auditors: Auditor expectations:- ✅ Clear business justification for each entry
- ✅ Supporting documentation (memos, reconciliations, approvals)
- ✅ Reasonable frequency (excessive manual entries indicate weak controls)
- ✅ Proper authorization and approval trail
- ✅ Accurate and complete descriptions
- ✅ Balanced entries (no exceptions)
- 🚩 Excessive manual entries (suggests weak internal controls)
- 🚩 Round number entries without documentation
- 🚩 Manual entries near period-end
- 🚩 Vague descriptions (“Adjustment”, “Correction” with no detail)
- 🚩 Manual entries that reverse prior period transactions
- 🚩 Large manual entries without approval documentation
- ✅ Document reason for manual entry (why not standard feature?)
- ✅ Reference supporting documents (reconciliation reports, memos, invoices)
- ✅ Maintain approval trail (emails, forms, board minutes)
- ✅ Export monthly manual entry report for review
- ✅ Keep copies of all supporting documents for audit
Common Mistakes and Prevention
1. Unbalanced Entry
Mistake: Total debits ≠ total credits Example (wrong):- Always verify total debits = total credits before posting
- System automatically rejects unbalanced entries
- Draft entry on paper first with running totals
2. Wrong Account Selection
Mistake: Selecting CASH when meant to select BANK_ACCOUNT Prevention:- Review account selections carefully
- Use search to find correct account
- Verify account role and type before posting
- Double-check member-specific accounts (savings, loans)
3. Wrong Side (Debit vs Credit)
Mistake: Recording DEBIT when should be CREDIT Example (wrong):- Review double-entry rules: Understanding Double-Entry
- Remember DEALER mnemonic (Debits: Expenses, Assets, Losses increase; Credits: Equity, Liabilities, Revenue increase)
- Think through journal entry logic before posting
4. Unclear Description
Mistake: “Adjustment” or “Correction” with no detail Example (wrong):- Write description as if explaining to auditor
- Include what, why, who, when, and reference to original transaction
- Minimum 50-200 characters for meaningful explanation
5. Posting to Closed Period
Mistake: Trying to post entry with transaction date in closed period Error message:- Check accounting period status before creating entry
- Use current period transaction date for prior period corrections
- Reference prior period in description
6. Missing Idempotency Key
Mistake: Not including x-idempotency-key header Error message:- Always include x-idempotency-key header
- Generate unique key for each entry (e.g., depreciation-jun-2026, correction-)
- Save idempotency key for future reference
Idempotency
Manual journal entries require an idempotency key to prevent duplicate entries. How it works:- Supply
x-idempotency-keyheader with unique value - If same key used twice within same organization, second request returns existing entry
- Safe to retry failed requests without creating duplicates
- Different organizations can use same key (scoped to organization)
Related Topics
Understanding Double-Entry
Learn debits, credits, and accounting principles
Ledger Accounts
View available accounts and chart of accounts
Ledger Roles
Understand account roles and types
Viewing Journal Entries
Review posted entries and audit trail
Accounting Periods
Understand period closure and constraints
Reversing Entries
Learn how to reverse posted entries