Chart of Accounts
Organize your financial accounts by type with hierarchical grouping and logical role mappings.
Overview
Every entity in Axiomatic maintains its own chart of accounts — a structured list of accounts organized by type. When you create an entity, a default chart of accounts is automatically generated based on the entity's type and legal structure.
Accounts support:
- Hierarchical nesting — group accounts under parent accounts for organized reporting
- Per-account currency — denominate individual accounts in foreign currencies
- Cash flow classification — control how accounts appear on the cash flow statement
- Logical role mappings — decouple posting rules from specific account IDs
Account Types
Every account belongs to one of five types. Each type has a normal balance that determines how it naturally increases:
| Type | Normal Balance | Description |
|---|---|---|
| Asset | Debit | Resources owned by the entity (cash, receivables, equipment) |
| Liability | Credit | Obligations owed to others (payables, loans, deferred revenue) |
| Equity | Credit | Owner's stake (capital, retained earnings) |
| Revenue | Credit | Income earned from operations |
| Expense | Debit | Costs incurred in operations |
Account Hierarchy
Accounts are organized using a numbering convention. You can nest accounts under parent accounts to create a hierarchy:
| Code Range | Type | Examples |
|---|---|---|
1xxx | Assets | 1100 Cash, 1200 Accounts Receivable, 1500 Equipment |
2xxx | Liabilities | 2100 Accounts Payable, 2200 Accrued Expenses, 2300 Deferred Revenue |
3xxx | Equity | 3000 Capital / Stock, 3100 Retained Earnings |
4xxx | Revenue | 4000 Sales Revenue, 4100 Service Revenue |
5xxx–6xxx | Expenses | 5000 Operating Expenses, 6000 Cost of Goods Sold |
Default Templates
When you create a new entity, Axiomatic seeds a chart of accounts tailored to your entity type and legal structure.
Business entities receive a full chart with cash, receivables, payables, revenue, and expense accounts. Equity accounts vary by legal structure:
| Legal Structure | Equity Accounts |
|---|---|
| C-Corp / S-Corp | Common Stock, APIC, Retained Earnings |
| LLC (Single) / Sole Prop | Owner's Equity, Owner's Draw, Retained Earnings |
| LLC (Multi) | Member's Capital, Member's Draw, Retained Earnings |
| LP / LLP | GP Capital, LP Capital, GP Draw, LP Draw |
| Non-Profit | Net Assets Without/With Donor Restrictions |
Fund entities additionally get NAV, management fee revenue, and fund administration expense accounts.
Trust entities receive trust-specific accounts: Trust Corpus/Principal, Accumulated Trust Income, trustee fees, and distribution accounts.
Personal entities receive checking, savings, brokerage, retirement, credit cards, loans, and 13 expense categories covering housing, utilities, food, transportation, and more.
Account Currency
Each account can optionally be denominated in a specific currency (e.g. EUR, BTC). This is useful for:
- Foreign bank accounts
- Crypto wallets
- FX-related accounts
When no currency is set, the account inherits the entity's functional currency.
Cash Flow Classification
Accounts can carry a cash flow category tag that controls how they appear on the cash flow statement:
- Operating — day-to-day business activities
- Investing — purchase/sale of long-term assets
- Financing — debt, equity, distributions
When no category is set, the system automatically classifies accounts based on their type and code range.
Logical Role Mappings
Role mappings connect your posting rules to specific accounts without hardcoding account IDs. A rule references a logical role like cash.operating or revenue.subscription, and the mapping layer resolves it to the correct account at posting time.
This means you can:
- Swap accounts without updating rules
- Override mappings per entity while sharing rules across entities
- Layer mappings from system defaults up to entity-specific overrides
Mapping Layers
Mappings are organized into layers with increasing precedence:
- Kernel — system defaults (lowest precedence)
- Standard — general-purpose mappings
- Industry — sector-specific overrides
- Entity — per-entity overrides (highest precedence)
When resolving a role, the system selects the mapping with the highest precedence and priority.
Role mappings are automatically bootstrapped when you create an entity, so the posting engine can process events immediately.
Managing Accounts
Adding an Account
Create accounts via the UI or API. Each account requires:
- Code — a numeric code for ordering (e.g.
1000,5200) - Name — display name (e.g. "Cash — Operating")
- Type — one of the five account types
Optional fields include parent account, currency, and cash flow classification.
POST /api/accounts
{
"entityId": "your-entity-id",
"code": "1000",
"name": "Cash — Operating",
"type": "ASSET",
"currency": "USD",
"tags": { "cashFlowCategory": "OPERATING" }
}Updating an Account
PUT /api/accounts
{
"id": "account-id",
"code": "1000",
"name": "Cash — Operating",
"type": "ASSET",
"currency": "USD",
"isActive": true
}Deleting an Account
DELETE /api/accounts?id=<account-id>Deleting an account also removes all of its associated role mappings.