Chart of Accounts
Set up and manage your general ledger accounts.
The Chart of Accounts is the foundation of your bookkeeping system. Every financial transaction references an account.
Account Types
| Type | Description | Example |
|---|---|---|
| Asset | What you own | Cash, Accounts Receivable, Equipment |
| Liability | What you owe | Accounts Payable, Loans, Tax Payable |
| Equity | Owner's stake | Owner's Equity, Retained Earnings |
| Revenue | Income earned | Sales Revenue, Service Revenue |
| Expense | Costs incurred | Rent, Salaries, Office Supplies |
Account Codes
Accounts use numeric codes for organization:
1xxx— Assets2xxx— Liabilities3xxx— Equity4xxx— Revenue5xxx— Expenses
Creating an Account
Navigate to Accounts in the sidebar and click New Account. Provide:
- Code — Unique numeric code (e.g.,
1200) - Name — Descriptive name (e.g., "Accounts Receivable")
- Type — One of the five account types
- Sub-type — Optional classification (e.g., "current", "fixed", "operating")
- Default tax — Optional VAT/tax rate applied when coding lines to this account (see below)
Default tax rate (account-driven VAT)
Each chart account can store a default tax rate. When you pick that account while categorising a bank line, coding an invoice/bill line, recording an expense, or setting up a bank rule (without its own tax), the tax control fills from the account. You can always change tax on the line.
Typical South African examples:
| Account | Default tax |
|---|---|
| Bank Fees & Charges | Standard Rate 15% |
| Meals & Entertainment | No VAT (or exempt — your practice) |
| Zero-rated purchases | Zero-rated |
Set or clear the default under Accounting → Chart of Accounts → [account] → Settings → Default tax. Built-in (system) categories can still have a default tax even though name and code are locked.
See also Tax Rates.
Default Accounts
New organizations receive a country template of standard accounts. Key control roles used by automations (default codes for the generic template):
| Default code | Role / name | Used by |
|---|---|---|
1100 | Default bank / Checking | Payments (when no bank chosen) |
1200 | Accounts receivable | Invoice journals, payments, credit notes |
1500 | Input VAT / GST | Bill tax, VAT reports (F14) |
2100 | Accounts payable | Bill journals, payments |
2200 | Output VAT / GST | Invoice tax, VAT reports (F4) |
4010 | Service Revenue | Invoice line items (line-level, not a control role) |
5000 | Cost of Goods Sold | Inventory / COGS |
5100 | Wages & Salaries | Payroll journal entries |
Control account mappings
If your chart uses different codes (for example AR 0800 instead of 1200), do not try to rename locked built-in accounts. Map roles to your accounts under Settings → Control Accounts.
See Control Accounts for the full list of roles and how mapping works.
Built-in template accounts are marked system: name and code are fixed; hide unused ones by marking them inactive.
Deactivate all built-ins (custom chart migration)
After you import a custom chart of accounts and map AR, AP, VAT, bank, and related roles under Settings → Control Accounts:
- Open Accounting → Chart of Accounts.
- Click Deactivate built-ins.
- Confirm. Active built-in (
isSystem) accounts are set inactive so they leave pickers and the default Active only list.
Accounts that are still the resolved control-account target are left active (with a toast). Remap those roles to your custom codes, then run Deactivate built-ins again.
API: POST /api/v1/bulk/accounts/set-active with body:
{
"isActive": false,
"scope": "system",
"allowControlMapped": false
}scope:system(all built-ins) orids(listed account UUIDs, max 500)allowControlMapped: settrueonly if you intentionally want to deactivate accounts still used as control targets- MCP:
bulk_set_accounts_active(same parameters)
Use Reactivate built-ins (or the same API with "isActive": true) to reverse.