Overview
Journal entries are the foundation of double-entry bookkeeping. Each entry:- Must balance: Total debits = Total credits
- Contains multiple lines: At least 2 lines (one debit, one credit)
- Posts to accounts: Each line references an account from the chart of accounts
- Has a fiscal period: Derived from transaction date and company fiscal year end
Journal entries follow the double-entry principle: every debit must have a corresponding credit, ensuring the accounting equation (Assets = Liabilities + Equity) stays in balance.
Journal Entry Data Model
Header
packages/core/src/journal/JournalEntry.ts
Lines
packages/core/src/journal/JournalEntryLine.ts
Entry Types
Journal entries are classified by type:packages/core/src/journal/JournalEntry.ts
- Standard
- Adjusting
- Closing
- Opening
- Reversing
- Recurring
- Intercompany
- Revaluation
- Elimination
- System
Manual journal entries for day-to-day transactionsUse for: General ledger adjustments, accruals, manual bookings
Entry Status Workflow
Journal entries follow a status workflow:packages/core/src/journal/JournalEntry.ts
Draft
Initial creation, editable
- Can be edited or deleted
- No entry number assigned
- Not reflected in account balances
Pending Approval
Awaiting authorization
- Cannot be edited
- Requires approval from authorized user
- Can be rejected back to Draft
Posted
Recorded in general ledger
- Entry number assigned
- Affects account balances
- Cannot be edited or deleted (must reverse)
- Posting date recorded
Creating Journal Entries
UI Workflow
The journal entry form provides a multi-line editor:- Header Fields
- Line Items
- Multi-Currency
- Date: Transaction date (validated against open periods)
- Reference: Optional external reference number
- Description: Required description/narrative
- Type: Entry type dropdown (Standard, Adjusting, etc.)
- Fiscal Period: Auto-computed from date (read-only)
Balance Indicator
The form displays real-time balance status:packages/web/src/components/forms/JournalEntryForm.tsx
- Balanced (Green)
- Unbalanced (Red)
✓ Total Debits = Total CreditsEntry can be submitted for approval
Fiscal Period Computation
Fiscal period is automatically computed from transaction date:packages/web/src/components/forms/JournalEntryForm.tsx
- Transaction Date: April 15, 2025 → FY2026 Period 1
- Transaction Date: March 20, 2026 → FY2026 Period 12
The form shows the computed fiscal period next to the date field. Users cannot directly select the period - it’s derived from the company’s fiscal year end setting.
Period 13 (Adjustment Period)
When the transaction date falls on or after the fiscal year end date, users can optionally post to Period 13:packages/web/src/components/forms/JournalEntryForm.tsx
API Request
Debit/Credit Rules
packages/core/src/journal/JournalEntryLine.ts
Effect on Account Balances
Assets (Normal Debit Balance)
Assets (Normal Debit Balance)
- Debit: Increases asset balance
- Credit: Decreases asset balance
- Debit 1,000
- Credit 500
Liabilities (Normal Credit Balance)
Liabilities (Normal Credit Balance)
- Debit: Decreases liability balance
- Credit: Increases liability balance
- Credit 1,000
- Debit 500
Equity (Normal Credit Balance)
Equity (Normal Credit Balance)
- Debit: Decreases equity balance
- Credit: Increases equity balance
- Credit 10,000
- Debit 2,000
Revenue (Normal Credit Balance)
Revenue (Normal Credit Balance)
- Debit: Decreases revenue (contra-revenue)
- Credit: Increases revenue
- Credit 5,000
- Debit 100 (sales return)
Expense (Normal Debit Balance)
Expense (Normal Debit Balance)
- Debit: Increases expense
- Credit: Decreases expense (reversal)
- Debit 2,000
- Credit 200 (correction)
Multi-Currency Entries
When recording transactions in a foreign currency:Enter Exchange Rate
Provide the exchange rate to convert to functional currencyExample: 1 EUR = 1.10 USD
Multi-Currency Line Structure
Balance Validation: When creating multi-currency entries, debits and credits must balance in the transaction currency. Functional currency amounts may have small rounding differences due to exchange rate precision.
Example: Recording EUR Invoice
Scenario: US company (functional currency USD) receives EUR invoice- Transaction amounts: 1,000 EUR debit, 1,000 EUR credit (balanced)
- Functional amounts: 1,100 USD debit, 1,100 USD credit (at rate 1.10)
Dimensions (Reporting Tags)
Optional key-value pairs for reporting and analysis:packages/core/src/journal/JournalEntryLine.ts
department: “Sales”, “Engineering”, “Operations”project: “Project-A”, “Project-B”costCenter: “CC-100”, “CC-200”location: “NYC”, “SF”, “London”
Dimensions allow slicing financial data by business unit, project, location, etc. without creating separate accounts for each combination. Use dimensions for flexible reporting and analytics.
Intercompany Entries
For transactions between related companies:Create Entry in Company A
Record intercompany receivable (debit) or payable (credit)Set
intercompanyPartnerId to Company B’s IDCreate Matching Entry in Company B
Record corresponding payable (credit) or receivable (debit)Set
intercompanyPartnerId to Company A’s IDEntry Reversal
To reverse an incorrect entry:Create Reversing Entry
Create new entry with:
entryType: “Reversing”reversedEntryId: ID of original entry- Lines with opposite debits/credits
Best Practices
Descriptive Narratives
Descriptive Narratives
Write clear, specific descriptions:✓ Good: “March 2025 rent expense for NYC office - Check #1234”✗ Bad: “Rent”Include:
- What the transaction is
- Time period (if applicable)
- Reference numbers (invoice, check, PO)
Line-Level Memos
Line-Level Memos
Use line memos for additional context:
- Vendor/customer name
- Invoice/reference number
- Specific allocation details
Entry Type Selection
Entry Type Selection
Use appropriate entry types:
- Standard: Regular day-to-day entries
- Adjusting: Month/quarter/year-end adjustments only
- Closing: Year-end close entries only
Multi-Currency Exchange Rates
Multi-Currency Exchange Rates
Use appropriate exchange rates:
- Spot rate: Current market rate at transaction date
- Average rate: Monthly/quarterly average (for income statement items)
- Historical rate: Original transaction rate (for balance sheet items)
Related Pages
- Chart of Accounts - Accounts referenced by journal entry lines
- Fiscal Periods - Period assignment and validation
- Multi-Currency - Foreign currency transactions and translation