Cargolake
Help & Guides/Finance

The chart of accounts

GL accounts, account types and normal balance — the structure everything posts into.

The chart of accounts is the structure the ledger posts into. Every journal line names a GL account, so the chart determines what your financial statements can say.

GL account types

An account type classifies accounts and, critically, sets their normal balance:

FieldNotes
Type codeShort identifier.
Type nameWhat it is called.
Normal balanceDebit (D) or Credit (C).

Normal balance is the side an account is expected to sit on. Assets and expenses are debit-normal; liabilities, equity and revenue are credit-normal. It is not cosmetic — it determines how balances are presented and whether an account showing the opposite sign is flagged as unusual.

Getting normal balance wrong on a type mis-signs every account of that type. The commonest error is a contra account — an expense refund or a revenue reduction — typed as though it were a plain expense or revenue. Set the type from what the account actually does, not from where it sits in the report.

GL accounts

FieldNotes
CodeThe account number.
NameWhat it is.
Account typeWhich type, and therefore its normal balance.
ParentThe account above it in the hierarchy.
PathIts position in the tree, derived from the parent chain.
PostableWhether journal lines may post to it directly.
ActiveWhether it is in use.
CurrencyIts currency, where it is single-currency.
Multi-currencyWhether it accepts more than one currency.

Postable versus summary accounts

The postable flag is the most important switch on an account.

  • Postable accounts receive journal lines.
  • Non-postable accounts are summary headings — they exist to group children and carry their total.

Never make a parent account postable. An account that both has children and receives postings produces a total that is neither the sum of its children nor its own balance, and every report built on it is subtly wrong. Post to leaves; summarise at branches.

The hierarchy

Accounts form a tree through parent, with path recording the position. Design it so the statement you want falls out of the structure. Deep enough to answer questions; shallow enough that people can find an account. Four or five levels is usually plenty.

Multi-currency accounts

An account is either fixed to one currency or flagged multi-currency. Multi-currency accounts hold balances in several currencies at once.

A multi-currency account cannot be used for a bank account or a treasury account. Attempting it is rejected with "GL account cannot be multi-currency when used for a bank or treasury account". Each bank and each cash location needs its own single-currency GL account — a bank operating in two currencies is two bank accounts, each with its own account, not one multi-currency account.

Where a multi-currency account is used — a customer account, for instance — a currency must be supplied on the record that uses it, or you get "Currency is required when the GL Account is multi-currency". Multi-currency means "the account accepts several", not "the currency is optional".

Journal lines record both the transaction amount in its own currency and the functional amount in the ledger's currency, so a multi-currency account can be reported either way — see Journals.

Accounts are claimed one-to-one

A GL account can back one bank account or one treasury account, never both and never two of either. The rejections are explicit — "GL account is already used by a bank account", "...by a treasury account" — and an account already linked to one cannot be updated at all: "Cannot update a GL account linked to a bank account".

Plan for this. Retrofitting a shared account into separate ones after transactions exist means reclassifying history.

Accounts linked to other things

A GL account can be linked to:

These links are what let postings be resolved automatically. A posting rule can say "the bank account's GL account" rather than naming a specific account, so one rule serves every bank — see Posting rules.

Deactivating an account

Set an account inactive rather than deleting it. Historic journal lines reference it and must remain readable; an inactive account simply stops being offered for new postings.

Before deactivating, check the balance is zero. An inactive account with a balance is a number that has quietly left your reports.

Designing a chart

  • Start from the statements you must produce, statutory and management, and work backwards.
  • Do not encode dimensions as accounts. If you want cost by branch or by trade lane, use journal dimensions rather than an account per branch. A chart that multiplies out every combination becomes unusable within a year.
  • Leave gaps in the numbering. Accounts get inserted.
  • One owner. A chart everyone can extend becomes a chart nobody can report from.

Last updated 13 September 2026