Behind every invoice, bill, bank transaction and payment in ac-co is the same underlying object: a journal entry. Understanding what one is — and what "posting" actually means — explains most of how the ledger behaves once numbers are in it.
What a journal entry is
A journal entry is the record of one financial event, expressed as a set of lines against your chart of accounts: at least one debit and at least one credit, always adding up to the same total on both sides. If you buy a laptop for £1,200, the entry debits an equipment or expense account £1,200 and credits your bank account £1,200 — the laptop appeared, the cash left, and the two lines describe the same event from two sides of the same ledger.
You'll rarely type a journal entry directly. Issuing an invoice, entering a bill, categorising a bank line, or recording a payment all create the correct entry for you — the double-entry mechanics happen underneath the document you're actually looking at. A manual journal exists for the genuine exceptions (opening balances, accruals, corrections a document-based flow doesn't cover), and it's held to exactly the same rules as everything else.
Why the entry has to balance
Double-entry bookkeeping works because every transaction is a transfer, not a creation — value moves from one place in your accounts to another, and the total never changes, only its location. An entry that doesn't balance describes something that can't actually happen: money appearing or vanishing with no corresponding source or destination.
This isn't a stylistic preference. Every core financial report — your trial balance, your balance sheet, your P&L — is built by summing journal lines. If even one entry is out of balance, that error propagates into every report downstream of it, and there's no way to tell from the report alone which entry caused it. Enforcing balance at the point of posting, rather than catching it later in a report, is what keeps that failure mode from happening at all.
Draft vs. posted — the one meaningful state change
A journal entry has exactly two states that matter: draft, where you can change anything about it and it has no effect on your reports, and posted, where it's fixed and counted. There's no in-between state where an entry is "sort of" in your books, and — deliberately — no way to edit a posted entry's amounts or accounts once it's there.
That line matters because posting is the moment a transaction stops being a proposal and becomes a fact you can be asked to account for. Before that line, changing your mind costs nothing. After it, correcting a mistake means posting a new entry that says so explicitly — a reversal, not a rewrite (see the Ideal Ledger's reversal principle for what that mirrored entry looks like).
Every entry says why it exists
A posted entry always carries a source — the invoice, bill, bank transaction, or payment that caused it, or an explicit note if it was posted manually. That's what turns a list of numbers into an audit trail: given any figure on a report, you can trace it back through its journal entry to the actual document or event that produced it, rather than hitting a dead end at "someone typed this in."
What this looks like day to day
Most of the time, none of this is visible — you issue an invoice or connect your bank feed, and the correct entries appear without you thinking about debits and credits at all. Where it becomes visible is when something needs fixing after the fact: instead of an "edit" button quietly changing a number, you'll see a reversal alongside the original, both dated, both traceable, and the current balance reflecting the net of the two. That's slower to look at than a single edited row — and it's the only version of "fixed" that still lets you show someone exactly what changed and when.