Nordlet

Docs / Glossary

Subledger vs General Ledger: How Real Systems Are Layered

Why detail lives outside the general ledger, how control accounts and subledgers must reconcile, and what breaks when someone posts directly to a control account.

The general ledger holds one balance per account: trade receivables, 9,300 €. A subledger holds the detail behind it — which customer, which invoice, issued when, due when, how much still open.

Every real accounting system is layered this way, and the layering is not a storage optimization. It is what lets the general ledger stay small enough to produce financial statements while the operational detail stays rich enough to run the business.

The control account relationship

The general ledger account that summarizes a subledger is a control account. The relationship is an invariant:

Sum of subledger balances = Control account balance

Trade receivables in the general ledger equals the sum of open customer invoices. Inventory equals the sum of stock valuations. Fixed assets equals the sum of the asset register. If any of these fails, one of the two is wrong, and until you know which, neither can be trusted.

The usual subledgers:

Subledger Control account Detail it holds
Accounts receivable 2410 Trade receivables Invoices per customer, ages, payments
Accounts payable 4430 Trade payables Supplier invoices, due dates
Inventory 2040 Goods for resale Items, quantities, FIFO cost layers
Fixed assets 12xx Individual assets, depreciation schedules
Payroll 4460–4463 Employees, gross, deductions
VAT 4492 / 2441 Transactions by classifier and rate

Why not put everything in the general ledger?

You could. It would be unusable.

Volume. A company issuing 5,000 invoices a month would add 15,000 general ledger lines a month for receivables alone. A trial balance becomes a document nobody can read.

Different questions. The general ledger answers "what is our financial position?" The receivables subledger answers "who owes us, and how late are they?" — a question with due dates, contacts and payment terms in it, none of which belong on a ledger line.

Different lifecycles. An invoice moves through draft, issued, partially paid, paid, disputed. The ledger only cares about two moments: when the receivable arises and when it is settled. Modelling the whole lifecycle in journal entries would mean posting entries for state changes that have no accounting effect.

Different retention and access. Customer contact details, payment terms and credit limits are operational data with their own privacy and access rules; the ledger is the financial record.

How the layers connect

The subledger is the source, and the general ledger is derived from it. An invoice is created in the sales subledger; issuing it posts the journal entry. The direction matters — reversing it is how systems get corrupted.

That gives the rule that keeps everything consistent: never post directly to a control account.

A manual journal entry crediting 2410 to "fix" a customer balance changes the general ledger without changing the subledger. The control account and the invoice list now disagree, every subsequent reconciliation inherits the difference, and no aging report will explain it, because the aging report reads the subledger and the balance sheet reads the ledger.

The correct fix for a customer balance is always a document — a payment, a credit note, a write-off — because a document updates both layers together.

Reconciling them

At each period close:

  1. Sum the subledger — total open invoices per customer.
  2. Read the control account balance.
  3. Investigate any difference. Common causes: a direct journal to the control account, a document posted to the wrong account, or a payment applied in one layer only.
  4. Repeat per subledger — receivables, payables, inventory, assets, VAT.

The reconciliation is quick when it works and diagnostic when it doesn't. Skipping it means discovering the divergence at year end, when the entries that caused it are months in the past.

How Nordlet layers it

Subledgers are first-class rather than an afterthought, and the general ledger is always derived:

  • Sales and purchase invoices are their own entities with lifecycle, partner, dates and payment status; issuing or registering them posts to the ledger through configurable posting rules.
  • Inventory holds FIFO cost layers with remaining quantities; consuming stock posts COGS against the stock control account.
  • Fixed assets hold per-asset cost, life and accumulated depreciation; the monthly run posts the summary.
  • Payroll, VAT and settlements each have their own detail with dedicated posting rules.

Because posting is rule-driven, the control account for each subledger is configuration rather than convention — which also means a misconfigured rule is the one way to break the invariant from inside the system, and worth checking once when setting up a company.

Manual journal entries can technically target any postable account, including control accounts. Nothing prevents it, and the discipline is yours: if you find yourself journalling to 2410, the thing you actually want is a document.

The reconciliation views are POST /v1/reports/partner-balances and /v1/reports/debt-aging for receivables and payables, /v1/reports/stock-balance for inventory, and /v1/reports/trial-balance for the ledger side.

FAQ

What is a subledger?

A detailed record supporting a single general ledger account — customer invoices behind trade receivables, individual assets behind fixed assets, stock layers behind inventory. It holds the operational detail the ledger summarizes.

What is a control account?

The general ledger account that carries the total of a subledger. Its balance must always equal the sum of the subledger's records, and a difference between them is a reconciliation problem to resolve before closing.

Why shouldn't I post directly to a control account?

Because it changes the general ledger without changing the subledger, so the two permanently disagree. Adjust a customer balance with a document — a payment, credit note or write-off — which updates both layers together.

How often should subledgers be reconciled to the general ledger?

Every period, as part of closing. It is fast when everything agrees, and the differences it catches are far cheaper to explain in the month they occur than at year end.

Is the general ledger or the subledger the source of truth?

The subledger is the source; the general ledger is derived from it. Documents create subledger records, and posting turns them into journal entries — which is why corrections belong at the document level.