Overview
The Chart of Accounts (COA) defines all accounts used for recording transactions within a company. Each account has:- Account number (4-digit numbering convention)
- Account type (Asset, Liability, Equity, Revenue, Expense)
- Account category (detailed classification within type)
- Normal balance (Debit or Credit)
- Hierarchy (optional parent-child relationships)
Accounts are company-specific. Each company maintains its own chart of accounts, allowing different account structures across legal entities.
Account Data Model
packages/core/src/accounting/Account.ts
Account Types
The five main account classifications per US GAAP:packages/core/src/accounting/Account.ts
- Asset
- Liability
- Equity
- Revenue
- Expense
Resources owned by the entity
- Normal Balance: Debit
- Examples: Cash, Accounts Receivable, Inventory, Property
Account Categories
Detailed subcategories within each account type:Asset Categories
Assets expected to be converted to cash within one year (Cash, AR, Inventory)
Long-term assets held for more than one year (Long-term Investments)
Tangible long-term assets (Property, Plant, Equipment)
Non-physical long-term assets (Patents, Trademarks, Goodwill)
Liability Categories
Obligations due within one year (Accounts Payable, Short-term Debt)
Long-term obligations (Long-term Debt, Deferred Tax Liabilities)
Equity Categories
Capital contributed by shareholders (Common Stock, Paid-in Capital)
Accumulated earnings retained in the business
Unrealized gains/losses not included in net income (AOCI)
Company’s own shares repurchased (contra-equity account)
Revenue Categories
Revenue from primary business operations
Revenue from non-operating activities (Interest Income, Gain on Sale)
Expense Categories
Direct costs of producing goods sold (COGS)
Day-to-day operating costs (Salaries, Rent, Marketing)
Non-cash expense for asset depreciation/amortization
Interest paid on debt obligations
Income tax expense
Non-operating expenses (Loss on Sale, Impairment)
Account Numbering Convention
Accountability uses a 4-digit numbering system with ranges for each account type:packages/web/src/components/forms/AccountForm.tsx
- Assets (1xxx)
- Liabilities (2xxx)
- Equity (3xxx)
- Revenue (4xxx)
- Expenses (5xxx-9xxx)
1000-1499: Current Assets
- 1000-1099: Cash and equivalents
- 1100-1199: Accounts receivable
- 1200-1299: Inventory
- 1300-1399: Prepaid expenses
- 1400-1499: Other current assets
- 1500-1599: Fixed assets
- 1600-1699: Accumulated depreciation (contra-asset)
- 1700-1799: Intangible assets
- 1800-1899: Long-term investments
Account Hierarchy
Accounts can be organized in a parent-child hierarchy for roll-up reporting:Top-Level (Summary) Accounts
Parent accounts that summarize child accounts
parentAccountId: nullhierarchyLevel: 1isPostable: typically false (summary only)
Sub-Accounts
Child accounts that post to a parent
parentAccountId: parent account IDhierarchyLevel: 2 or higherisPostable: typically true
Example Hierarchy
Creating Accounts
UI Workflow
The account creation form auto-validates account numbers:- Required Fields
- Optional Fields
- Checkboxes
- Account Number: 4-digit number (validated against type range)
- Account Name: Display name
- Account Type: Asset, Liability, Equity, Revenue, Expense
- Category: Dropdown filtered by selected type
- Normal Balance: Auto-filled from type (can override)
Account Number Auto-Suggestion
When you enter a 4-digit account number, the form auto-suggests the account type:packages/web/src/components/forms/AccountForm.tsx
API Request
Normal Balance
Each account has a normal balance direction:packages/core/src/accounting/Account.ts
Cash Flow Categories
For accounts that affect cash flow, specify the cash flow statement category per ASC 230:packages/core/src/accounting/Account.ts
Operating Activities
Operating Activities
Cash flows from principal revenue-producing activities:
- Cash received from customers
- Cash paid to suppliers and employees
- Interest received
- Interest paid (US GAAP, can be financing under IFRS)
Investing Activities
Investing Activities
Cash flows from acquiring/disposing of long-term assets:
- Purchase/sale of property, plant, equipment
- Purchase/sale of investments
- Loans made to others
Financing Activities
Financing Activities
Cash flows from debt, equity, and dividend transactions:
- Proceeds from issuing stock or bonds
- Repayment of debt principal
- Payment of dividends
- Repurchase of company stock
Non-Cash Activities
Non-Cash Activities
Significant investing/financing activities without cash:
- Conversion of debt to equity
- Acquisition of assets by assuming liabilities
- Disclosed in supplemental schedule
Intercompany Accounts
Accounts used for transactions between related companies:Intercompany accounts are used for:
- Intercompany receivables/payables
- Intercompany revenue/expense
- Tracking transactions between related entities for elimination during consolidation
Currency Restriction
Optionally restrict an account to transactions in a specific currency:currencyRestriction is set:
- Journal entry lines can only post to this account in the specified currency
- Attempts to post in other currencies will fail validation
Most accounts have
currencyRestriction: null allowing any currency. Use restrictions only for bank accounts or specific foreign currency accounts.Retained Earnings Flag
One account per company should be marked as the retained earnings account:- All Revenue accounts are closed (credited to zero)
- All Expense accounts are closed (debited to zero)
- Net income (Revenue - Expenses) is posted to Retained Earnings
Helper Methods
packages/core/src/accounting/Account.ts
Best Practices
Account Numbering
Account Numbering
- Use gaps: Number accounts 1010, 1020, 1030 (not 1001, 1002, 1003) to allow inserting accounts later
- Group related accounts: Use ranges (1100-1199 for AR, 1200-1299 for Inventory)
- Reserve ranges: Keep 9000-9999 for special purposes (intercompany, eliminations)
Summary vs Detail Accounts
Summary vs Detail Accounts
- Summary accounts (
isPostable: false): Used for roll-up reporting - Detail accounts (
isPostable: true): Receive actual journal entries
Account Descriptions
Account Descriptions
Write clear descriptions explaining:
- Purpose of the account
- What types of transactions should be posted
- Any special handling or restrictions
Related Pages
- Journal Entries - Recording transactions to accounts
- Companies - Accounts are company-specific
- Multi-Currency - Currency restrictions and translation