/fa/journal-entries.

Overview
The page provides:- Search: Free-text search by entry number or description
- Status filter:
all,draft,posted,reversed - Select-all checkbox: Selects all draft entries for batch actions
- Batch Action Bar: Batch Post and Batch Delete for selected draft entries
- JournalEntriesTable: Row-level post, reverse, and delete actions
- Keyboard shortcuts: Via
useFAKeyboardShortcuts—Nfor new,Sfor search focus,?for help
usePostJournalEntry for each selected draft. Batch delete calls useDeleteJournalEntry.
Primary hooks: useJournalEntries, usePostJournalEntry, useReverseJournalEntry, useDeleteJournalEntry
Who it’s for
Access follows your organization’s role and module configuration. Individual entry actions (post, reverse, delete) may be subject to journal entry-level permissions.Before you start
- Entries must be in
draftstatus to be posted or deleted via batch. - Only
postedentries can be reversed.
Steps
- Navigate to
/fa/ledger?tab=journal-entries(canonical). - Use search and status filters to find entries.
- Click New Journal Entry (or press
N) to create a new entry at/fa/journal-entries/new. - Check individual rows or use the select-all checkbox to select draft entries.
- Use the Batch Action Bar to post or delete multiple drafts at once.
- Click an entry row to open its detail page at
/fa/journal-entries/:id.
Key concepts
- Draft → Posted: Posting finalizes the journal entry in the ledger.
- Posted → Reversed: Creates an offsetting reversal entry.
- Batch actions: Apply only to
draftentries. Posted entries must be reversed individually.
Creating a journal entry
The New Entry page at/fa/journal-entries/new creates a general ledger journal entry. Permission required: fa.journal_entries.create (enforced via inner PermissionGate).
The page wraps JournalEntryForm (header fields) and JournalLineEditor (debit/credit lines).
Header fields: transaction_date (required), posting_date (required), period_id (required), description (required), notes (optional), source_type (one of MANUAL, PAYROLL, AP_BILL, AR_INVOICE, RECURRING, BANK_REC, SYSTEM, RULE_ENGINE, IMPORT, INTER_FUND_TRANSFER), source_reference (optional).
Line balance check: Math.abs(totalDebits - totalCredits) < 0.01 — entry is balanced when true.
Save as Draft: Creates the entry with status: "draft" and optionally saves lines. Navigates to /fa/journal-entries/:id.
Save and Post: Validates balance and at least one line, creates as draft, saves lines, then posts. Shows validation errors via toast if unbalanced or no lines.
Primary mutations: useCreateJournalEntry, useBulkUpdateLines, usePostJournalEntry
Before you start: know the fiscal period, transaction date, and description; have debit and credit accounts, amounts, and optional fund/department/program assignments ready.
Save as Draft:
- Navigate to
/fa/journal-entries/new. - Complete the Entry Information section.
- Add journal lines in the Entry Lines section.
- Click Save as Draft.
- Complete the entry header and add balanced lines (debits = credits).
- Click Save and Post (disabled if unbalanced or no lines).
- On success, you are redirected to the journal entries list.
source_type: MANUAL is a standard user-initiated entry. Draft entries can be edited; posted entries require reversal to correct.
Viewing a journal entry
The Journal Entry Details page at/fa/journal-entries/:id shows the full detail of a single journal entry and allows lifecycle management.
The page loads a journal entry via useJournalEntry(id, organizationId) and renders:
- Header: Entry number (or “Draft Entry”), with action buttons based on status:
draft: Edit, Save Changes / Cancel (when editing), Post Entry, Deleteposted: Reverse Entry
- Entry Information card:
JournalEntryFormin read-only or edit mode (transaction date, posting date, period, description, notes, source type, source reference) - Entry Lines card:
JournalLineEditor— editable when in edit mode, read-only otherwise - Audit Information card: Shown only when
posted_by_profileis present. Displays created-by name, posted-by name, and posted timestamp.
useUpdateJournalEntry, useBulkUpdateLines, usePostJournalEntry, useReverseJournalEntry, useDeleteJournalEntry
After posting, reversing, or deleting, you are redirected to /fa/journal-entries (list).
Key concepts:
- Balanced entry: Total debits must equal total credits before an entry can be posted.
- Reversal: Creates an offsetting journal entry dated to the current date.
/fa/journal-entries/:id, review the entry and its lines, and click Post Entry.
Edit a draft entry: Click Edit, modify JournalEntryForm header fields or line items in JournalLineEditor, then click Save Changes or Cancel.
Reverse a posted entry: Click Reverse Entry. The reversal date is today’s date.
Delete a draft entry: Click Delete — confirm in the dialog. You are redirected to the journal entries list.
Related
Finance & Revenue
Finance & Revenue core overview.
Governance & parity
This page documents shipped product behavior. It is not medical, legal, or
billing advice. Verify against your organization’s policies and applicable
regulations before using it for clinical, compliance, or billing decisions.
Protected health information (PHI) shown in the product is governed by your
tenant’s access controls and is never exposed in this documentation.
Documentation sources
Documentation sources
- src/routes/fa.tsx
- src/cores/fa/pages/JournalEntriesPage.tsx
- src/cores/fa/pages/JournalEntryDetailPage.tsx
- src/cores/fa/pages/JournalEntryCreatePage.tsx
- src/cores/fa/hooks/useJournalEntries.ts
- src/cores/fa/hooks/useJournalEntryLines.ts
- src/cores/fa/components/JournalEntriesTable.tsx
- src/cores/fa/components/JournalEntryForm.tsx
- src/cores/fa/components/JournalLineEditor.tsx