# How the ledger works

> The double-entry ledger under every OneBooks document — what posts when, the accounts involved, and why reports always agree with each other.

Canonical: https://docs.getonebooks.com/accounting/how-it-works/
Language: en
Documentation index: https://docs.getonebooks.com/llms.txt

Every invoice, payment, purchase, expense and transfer in OneBooks becomes a **journal entry**: a set of lines where the debits equal the credits. Reports are computed live from those lines — there is no separate "report database" that can drift. This page explains the model in plain words; each module page lists its exact lines.

![The Journal Entries list showing entries created automatically by invoices, payments and expenses](https://docs.getonebooks.com/screenshots/en/accounting-journal-list.webp)

## The building blocks

- **Accounts** — the categories money moves between, organised in the [chart of accounts](https://docs.getonebooks.com/accounting/chart-of-accounts/). Each has a type: **Asset**, **Liability**, **Equity**, **Revenue** or **Expense**.
- **Journal entry** — one event, dated, with a source (invoice, payment, expense, purchase, manual…). Its lines always balance.
- **Control accounts** — **1100 Accounts Receivable** totals what all customers owe; **2000 Accounts Payable** totals what you owe all suppliers. The per-customer and per-supplier detail lives on the documents themselves.

## What posts, and when

| Event | Debit | Credit |
|---|---|---|
| Invoice **sent** | 1100 Accounts Receivable | 4000 Sales Revenue, 2100 VAT Payable |
| Customer **payment** | 1200 Cash / 1210 Bank | 1100 Accounts Receivable |
| Credit note **confirmed** | 4000 Sales Revenue, 2100 VAT Payable | 1100 Accounts Receivable |
| Purchase **finalized** | 5000 Cost of Goods Sold (or the line's account), 1300 VAT Receivable | 2000 Accounts Payable |
| Supplier **payment** | 2000 Accounts Payable | 1200 Cash / 1210 Bank |
| Debit note **confirmed** | 2000 Accounts Payable | 5000 Cost of Goods Sold, 1300 VAT Receivable |
| **Expense** | The expense account | 1200 Cash / 1210 Bank |
| **Contra** transfer | Destination cash/bank | Source cash/bank |
| **Write-off** | 5950 Bad Debt Expense | 1100 Accounts Receivable |
| **Opening balance** | The asset (or 3050 for a liability) | 3050 Opening Balance Equity (or the liability) |

Drafts post nothing. Quotes never post.

## Corrections never edit history

A posted entry is never changed or deleted. Voiding an invoice, deleting a payment or expense, or reversing a manual entry posts a **reversal** — the same lines with debits and credits swapped — so the ledger keeps a complete audit trail. See [Corrections](https://docs.getonebooks.com/accounting/corrections/).

## Why the reports agree

- **Trial balance** sums every account's debits and credits — it always balances because every entry does.
- **Profit and loss** = revenue minus expense accounts for the period.
- **Balance sheet** = asset, liability and equity accounts at a date; retained earnings are reconstructed from all prior profit.
- **Cash flow** follows the 1200/1210 family and classifies movements as operating, investing (fixed assets) or financing (equity).
- Receivables and payables reports read the documents; the balance sheet reads the control accounts — both are built from the same postings, so they match.

## Seeing the entries

In Accountant mode every document offers **View Journal**, and **Accounting → Journal Entries** lists everything with its source. Select an entry to see its lines.

![The journal entry dialog on an invoice showing the debit and credit lines](https://docs.getonebooks.com/screenshots/en/sales-invoice-journal.webp)

## Related

  - [Chart of accounts](https://docs.getonebooks.com/accounting/chart-of-accounts/)
  - [Journal entries](https://docs.getonebooks.com/accounting/journal-entries/)
  - [Trial balance](https://docs.getonebooks.com/reports/trial-balance/)
