In simple bookkeeping, there are usually three ledgers:
- Sales Ledger
- Purchases Ledger
- Nominal (General) Ledger
Transaction in the sales and purchases ledgers are the normal transactions of a business. The business sells goods to a customer, the customer pays for the goods either straight away, or at a later date. Similarly the business buys the goods or raw materials to sell, and pays the supplier.
Transactions in the sales and purchase ledgers will be mirrored in the Nominal ledger. The Nominal ledger is a balancing accumulation of all the transactions of a business. As well as transactions from the other ledgers, the Nominal ledger will contain some its own transactions; each one moving value from one place to another, increasing or decreasing value.
There are some other ledgers which we will need to include:
- Client / Customer Ledger
- Stock book
- Cashbook
The Client ledger and Stock book are non-nominal updating ledgers. They may be used by transactions in the Sales or purchasing ledgers, or the cash book, but they do not directly affect the Nominal Ledger.
A Client Ledger is normally used when the service you supply the customer involves handling financial transactions on behalf of the customer. Agents (Estate, talent, etc) and solicitors would hold funds belonging to the customer, use those funds on the customer’s behalf, but keep them separate to internal finances.
The stock book maintains an up-to-date statement of goods in stock. Orders, receipts, dispatches will affect stock levels but only affect the Nominal ledger when invoices are entered into the Sales or Purchase ledgers, or a value adjustment for stock is written directly to the nominal ledger.
The Cashbook is a statement of cash payments and receipt for a business. These will affect the Nominal ledger, plus other ledgers they are associated with.
Transactions
Each ledger has a number of transactions types associated with it (Sales invoices are associated with the sales ledger, Nominal journals with the Nominal ledger).
Some other transactions affect multiple ledgers. (Cash receipts)
Most transactions has very similar content and behave in a standard fashion. Fee invoice and credit notes (Sales and purchase), and debit and credit journals (again Sales and Purchases) all behave in a standard fashion.
The main things that between these transaction type are:
- the ledger and analysis accounts they affect,
- whether the transaction is a debit or credit transaction, and
- should taxes be levied against the transaction
Other transaction are more complicated and require:
- multiple ledgers (Cash receipts, cash invoice, Stock invoice),
- special structures (bank lodgement), or
- non-recource to other ledgers.
Requirements for Ledgers and Transaction types
A user should be able to define their set of ledgers and transaction, or use a standard template set. They should be able to add new Ledgers and transaction type to the existing layout.
The Nominal Ledger if not present in this context only means that Nominal Ledger transaction cannot be entered. Reporting would not be affected.
Some setting would be Ledger-wide:
- Updates Nominal ledger,
- default control accounts,
- default Analysis accounts,
- tax area (Purchase or Sales)
- Use ledger Account (customer, supplier, cash account)
- Transaction default analysis account
- Inter Account transfer (Bank lodgement)
- Inter Ledger transfer (Customer receipts)
- Posting transaction (yes / no)
- Period basis
- Subject to tax (is VAT to be applied to this transaction)
- Use stock (if this transaction is no a Stock book,can it stock items?)
- Interacts with other transactions ( Invoice reads orders, Receipt reads invoices)
With these settings we can build 80-90% of transaction types required for a simple bookkeeping system. For the remaining transaction types predefined templates need to be available to the user. An example Cash receipt transactions my be performed against a ledger account, or the transactions within that account. The former transaction could be handled normally, but a specific “Ledger transaction allocation” template would support the latter.


