Accounts Module
Chart of Accounts
The full list of accounts every other module in the app posts against — how it’s seeded automatically for a new company, how to add or reorganize accounts by hand, and the specific codes that other modules quietly depend on existing.
Start here
1Before you start
You almost never start with an empty Chart of Accounts. The moment a company is created, this module seeds a full starter chart automatically — a set of core accounts every business needs, plus extras layered in based on the company’s industry (retail, services, healthcare, and so on). Nothing here requires setup before it works.
Codes follow a simple range by account type — 1000s for assets, 2000s for liabilities, 3000s for equity, 4000s for income, 5000s for expenses. Leave the code blank when adding a new account and the app assigns the next free one in that block automatically, in steps of 10.
A company set up as an individual (personal finances, not a business) gets an entirely different starter chart — Checking Account, Credit Cards, Salary & Wages, Housing, Groceries, and so on — instead of the business template. The two are never merged; you get one or the other based on how the company was set up.
Manage accounts
2Add or edit an account
Click Add Account, or open an existing one to edit it.
| Field | Notes |
|---|---|
| Code | Leave blank to auto-generate the next free code in this type’s block. Must be unique per company (not case-sensitive). |
| Name | The only field the form actually requires. |
| Type | Asset, Liability, Equity, Income, or Expense — drives which financial statement this account lands on. |
| Subtype | Current Asset, Fixed Asset, Bank, Cash, Current Liability, Owner Equity, Operating Expense, and so on. Defaults to a sensible value for the Type if left blank. |
| Parent Account | Optional — see Organize with parent accounts. |
| Currency | Always the company’s own currency. Not editable here — resolved server-side, never trusted from the form. |
| Status | Active, Inactive, or Archived. |
| Allow Posting | Whether this account can be picked as a line on a journal entry or transaction elsewhere in the app. See Posting & the codes other modules rely on. |
| Bank Account | Ticking this forces Type to Asset and Subtype to Bank, and turns Allow Posting on automatically — this is what makes the account selectable as a Bank Account’s linked GL account in Banking. |
| Opening Balance / Current Balance | Current Balance defaults to whatever you set Opening Balance to, then moves on its own as real journal entries and transactions post against it. |
| Description | Optional notes. |
3Organize with parent accounts
Any account can be nested under another by setting Parent Account — useful for grouping, e.g. several bank accounts under one “Cash & Equivalents” heading. An account can’t be set as its own parent, and the app checks server-side that a chain of parents never loops back on itself.
4Posting & the codes other modules rely on
Several accounts in your chart aren’t just entries on a list — other modules look them up directly by code (or, failing that, by exact name) the moment they need somewhere real to post. If the account doesn’t exist yet, the module creates it on the fly using the same code, so posting never silently fails just because a chart predates a feature.
| Code | Account | Used by |
|---|---|---|
1020 | Operating Bank Account | Banking, as the fallback GL cash account for any bank account with nothing linked. |
2020 | Payroll Liabilities | Payroll, for net pay owed to employees until disbursed. |
2021–2099 | “<Label> Payable” (auto-named) | Payroll, one per active deduction or tax component you define. |
2030 | Employee Reimbursements Payable | Expense Reimbursements. |
4010 | Sales Revenue | Sales, once an invoice is sent. |
4800 | Other Income | Income’s default category for non-operating income. |
4900 / 5900 | Uncategorized Income / Expense | Banking, when a transaction has no category account picked. |
5040 | Cost of Goods Sold | Purchases, once a purchase order is billed. |
1200 | Inventory | Purchases, for lines linked to a real product. |
5900–5989 | “<Label> (Employer Contribution)” (auto-named) | Payroll, one per employer-funded contribution. |
Renaming one of these accounts is safe as long as its code stays the same, since the lookup checks the code first. Changing the code, though, breaks the match: the next time a module needs “Payroll Liabilities,” it won’t find your renamed/recoded account and will silently create a brand-new one at the original code instead — leaving you with two accounts instead of one.
Common tasks
Reclassify cash & bank accounts
If an asset account’s name obviously reads as cash or a bank (“Petty Cash,” “Escrow Bank Guarantee”) but was never actually tagged that way, it gets silently skipped by anything that relies on the Bank/Cash tag — most importantly the Cash Flow Statement. This tool finds those and lets you fix them.
-
Run the scan
It checks every posting-enabled asset account not already flagged Bank or Cash, and suggests a fix based on keywords in the name (“bank” or “mobile money” → mark as Bank Account; “cash,” “petty cash,” “till” → set Subtype to Cash).
-
Review each candidate
A keyword match is a suggestion, not a fact — “Escrow Bank Guarantee Receivable” would match “bank” but probably isn’t really a cash account. Nothing changes until you confirm.
-
Apply your choices
Pick Mark as Bank, Set to Cash, or Skip per account, and apply. Each one goes through the same save path as editing the account by hand.
Cleaning up after switching to Simple mode
Switching a company’s accounting mode to Simple (cash-basis) in Settings automatically deactivates its zero-balance accrual-only accounts (Accounts Receivable, Accounts Payable, Payroll Liabilities, Grants & Pledges Receivable) — a cash-basis company never recognizes these at all. This tool is the manual catch-up version for a company that was already in Simple mode before that automatic cleanup existed.
It’s gated to Simple-mode companies only, and only offers accounts with a real zero balance — anything still carrying a nonzero balance is listed separately as blocked, since silently hiding real money from the books would be dangerous. Resolve those by hand first.
Deleting an account
Two things block a delete: a system account (one the app itself seeded) can never be deleted, and an account with child accounts under it can’t be deleted until those are removed or reparented first.
Reference
Account types & starter codes
| Type | Code block | Default subtype |
|---|---|---|
| Asset | 1000–1999 | Current Asset |
| Liability | 2000–2999 | Current Liability |
| Equity | 3000–3999 | Owner Equity |
| Income | 4000–4999 | Operating Income |
| Expense | 5000–5999 | Operating Expense |
Status is separate from posting: Active / Inactive / Archived just controls visibility, while the Allow Posting toggle controls whether the account shows up in a journal or transaction’s account picker at all.
Two KPIs on the Accounts page are worth knowing: Books Balanced checks Assets against Liabilities + Equity, but only across accounts recorded in the company’s own default currency — anything in a different currency is left out of the check entirely and counted separately as excluded. Anomaly Score is a plain heuristic, not a fraud detector — it flags accounts whose balance has moved despite zero real ledger lines, accounts pointing at a parent that no longer exists, and duplicate codes.
What this module doesn’t do
An asset, liability, or equity account recorded in a currency other than the company’s default is excluded from the “Books Balanced” comparison rather than converted — it’s counted separately as excluded, not silently wrong, but it also isn’t reconciled against the rest of the chart.
The “Reclassify Cash Accounts” scan matches on keywords in the account name only. Nothing is ever applied without your explicit per-account confirmation — see above.
There’s no built-in way to merge two accounts into one, or bulk-renumber a range of codes — each account is edited one at a time.