/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
-
Go to
/accounting/journal-entries. - Click New entry (top right). You can also press N as a keyboard shortcut. The New Journal Entry modal opens.
-
Fill in the header:
-
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.
- 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.
-
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.
📷 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.
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 issues — errors block posting, warnings are informational;
- a willPost flag telling you whether the entry is currently postable.
📷 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.- Open the entry (click its Entry # in the list) to reach
/accounting/journal-entries/:id, or select one or more drafts in the list. - 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.
- The entry must balance and its date must be in an open period; the system re-validates both at this moment.
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.
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.- Open the posted entry.
- Use Reverse (header action), or Create reversal in the right-hand
rail. You need the
accounting-journal:reversepermission. - 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.
📷 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 requiresaccounting-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.
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.
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).
Related
- Journal Entry Templates — reusable line layouts for entries you record repeatedly.
- Recurring Transactions — schedule journal entries (and invoices/bills) to be generated automatically.