Skip to main content
A journal entry is the most fundamental record in accounting: a dated set of debit and credit lines that, taken together, must balance to zero. Hitaji 360 uses journal entries both for the postings it generates automatically (from invoices, bills, payroll, payments and so on) and for the manual entries you record by hand — opening balances, accruals, reclassifications, corrections and adjustments that don’t originate from another document. This page covers creating, previewing, posting, reversing and submitting manual journal entries. You’ll find this at: /accounting/journal-entries
📷 Screenshot: Journal Entries list with filters, bulk-action bar and the “New entry” button — to be added.

Who can do what

Access is controlled by these permission slugs. If a button is missing, your role is probably lacking the matching permission. A multi-business note: journal entries belong to one accounting book (the “workspace” in the URL/API). When you switch the active business, you are switching books — entries you create are scoped to the book that is active at the time, and the list only shows that book’s entries.

The lifecycle of an entry

Every journal entry carries a status. There are exactly three: The normal path is Draft → Posted. If your organisation requires sign-off, the path becomes Draft → (submitted for approval) → Posted once an approver approves it. A wrong posting is corrected by reversing it, never by editing.

Voucher types

Each entry has a voucher type that classifies why the entry exists. When you create an entry manually it defaults to Manual. You can choose another type, with two exceptions reserved for the system. If you try to create or update an entry with Closing or Payment reconciliation, the system refuses with a message that the voucher type “is reserved for system use and cannot be created manually.” You can filter the list by voucher type using the All voucher types dropdown at the top of the page.

Creating a manual journal entry

  1. Go to /accounting/journal-entries.
  2. Click New entry (top right). You can also press N as a keyboard shortcut. The New Journal Entry modal opens.
  3. Fill in the header:
  4. Add your Journal Lines. Every entry needs at least two lines. For each line: Use Add Line (or + Add Another Line) to add rows, and the at the end of a row to remove one. You can’t drop below two lines.
  5. Watch the balance indicator. It shows running Debits and Credits totals and turns green (“Entry is balanced”) only when the two are equal and greater than zero. Debits must equal credits within a one-cent tolerance.
  6. Save using the split Save button:
    • Save Draft — stores it as a draft; no ledger effect yet.
    • Save Draft & Add New — saves and immediately reopens a blank form.
    • Submit for Approval — saves it and sends it down the approval route (see “Submitting for approval”).
    • Submit & Add New — same, then reopens a blank form.
    The Save button stays disabled until the entry balances.
📷 Screenshot: New Journal Entry modal with two balanced lines and the green balance indicator — to be added.

What the system checks before it accepts an entry

When you save (and again when you post), the entry is validated server-side:
  • at least 2 lines;
  • no line has both a debit and a credit, and no line is zero on both;
  • every account exists, is active, is not a group account, and allows direct posting;
  • total debits equal total credits (within 0.01);
  • the voucher type is not a reserved system type;
  • the entry date is in an open period.
If any check fails you’ll see a specific error (for example “Journal entry must balance. Debit: 100, Credit: 90” or “Account 4000 is a group account and cannot be posted to directly”).

Previewing the postings before you commit

Before posting, you can ask the system to show you the prospective general- ledger rows the entry would produce — without writing anything. This is the preview, and it’s only available while the entry is a draft. The preview returns:
  • the GL rows that would be written (account code, account name, debit, credit, line description);
  • a round-off row, if rounding produces a tiny imbalance the system would auto-correct;
  • any issueserrors block posting, warnings are informational;
  • a willPost flag telling you whether the entry is currently postable.
You can also preview unsaved changes by previewing against a draft set of lines, which is useful for “what would this look like?” checks before saving.
📷 Screenshot: Preview panel listing prospective GL rows with debits and credits — to be added.

Posting an entry

Posting is what actually writes the entry to the general ledger and makes it count toward your trial balance and financial statements.
  1. Open the entry (click its Entry # in the list) to reach /accounting/journal-entries/:id, or select one or more drafts in the list.
  2. From the detail page, use the Post action in the header. From the list, tick the checkboxes and use Post in the bulk-action bar.
  3. The entry must balance and its date must be in an open period; the system re-validates both at this moment.
Once posted, the status becomes Posted, a posting timestamp and the posting user are recorded, and the actual ledger rows become visible on the entry’s Postings tab.

Behind the scenes (debits and credits in plain English)

Posting applies standard double-entry rules to each account:
  • A debit increases assets and expenses, and decreases liabilities, equity and income.
  • A credit does the opposite: it increases liabilities, equity and income, and decreases assets and expenses.
Because total debits equal total credits, the books stay in balance. For example, to record a UGX 500,000 rent accrual you would debit Rent Expense 500,000 (expense up) and credit Accrued Liabilities 500,000 (liability up).

Reversing a posted entry

You never edit or delete a posted entry. To undo it you reverse it, which creates a brand-new, already-posted Reversal entry that mirrors the original with the debits and credits swapped. The original is then marked Reversed.
  1. Open the posted entry.
  2. Use Reverse (header action), or Create reversal in the right-hand rail. You need the accounting-journal:reverse permission.
  3. By default the reversal is dated today; the system can also take an explicit reversal date. The reversal date must itself be in an open period.
The reversal preserves the original’s book, fund and matter references and its analysis dimensions, and it carries the same invoice/bill sub-ledger tags so that per-invoice and per-bill outstanding balances net back out cleanly. After reversal you’re taken to (or can open) the new reversal entry.
📷 Screenshot: Posted entry detail page showing the Reverse action and the “Reversed” badge after reversal — to be added.

Submitting for approval

If manual entries in your organisation need a second pair of eyes, save the entry with Submit for Approval instead of posting it directly. This is available from the create modal and from the detail page (it requires accounting-journal:update).
  • Only a draft can be submitted.
  • The entry’s date is checked against open periods up front, so back-dated entries can’t sit in the approval queue only to fail later.
  • The entry then follows your configured approval workflow. When an approver approves it, the system posts it automatically. If it is rejected, it stays a draft so you can edit and resubmit.

Editing and deleting drafts

  • Edit — only draft entries can be edited. Open the entry and use the edit modal (the same modal as create, in “Edit Journal Entry” mode). The same balance and account rules apply.
  • Delete — only draft entries can be deleted, from the trash icon next to a draft’s status badge in the list (requires accounting-journal:delete). Posted and reversed entries cannot be deleted.
Attempting to edit or delete a non-draft entry returns “Only DRAFT journal entries can be updated/deleted.”

Filtering and finding entries

The list has a filter bar with:
  • a status filter (All / Draft / Posted / Reversed);
  • a voucher type filter (All, or any specific voucher type);
  • a search box that matches the memo or entry number.
Each row shows the entry number, date, memo, source, voucher type, total debit, total credit and status, with column totals at the foot of the table. Click an entry number — or anywhere on the row — to open its detail page.

Closed and locked periods

You can only post (or reverse, or submit) into an accounting period that is open. If the entry’s date falls in a closed or locked period, the action is refused with a stable, recognisable error and the entry’s detail page shows a period-lock chip. Move the date into an open period, or have the period reopened, before trying again.

The entry detail page

Opening an entry (/accounting/journal-entries/:id) gives you tabbed detail:
  • Overview — the lines, with a link to drill into each account’s ledger.
  • Postings — the actual GL rows written when the entry was posted.
  • Source — where the entry came from (for system-generated entries).
  • Linkages — connections to related records.
  • History — the workflow timeline (created, submitted, posted, reversed).
The header shows the status badge and the relevant primary action (Post, Submit for approval or Reverse) based on the entry’s current state and your permissions.