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:
| Field | Notes |
|---|---|
| Type code | Short identifier. |
| Type name | What it is called. |
| Normal balance | Debit (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
| Field | Notes |
|---|---|
| Code | The account number. |
| Name | What it is. |
| Account type | Which type, and therefore its normal balance. |
| Parent | The account above it in the hierarchy. |
| Path | Its position in the tree, derived from the parent chain. |
| Postable | Whether journal lines may post to it directly. |
| Active | Whether it is in use. |
| Currency | Its currency, where it is single-currency. |
| Multi-currency | Whether 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:
- a bank account — see Bank accounts and statements;
- a treasury account — a cash location;
- one or more vendors.
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