Files
dbis_core/docs/accounting/CHART_OF_ACCOUNTS.md
2026-03-02 12:14:07 -08:00

7.9 KiB

General Ledger Chart of Accounts

Status: Deployable and Ready


Overview

The DBIS Core system includes a comprehensive General Ledger Chart of Accounts that is compliant with both USGAAP (US Generally Accepted Accounting Principles) and IFRS (International Financial Reporting Standards).


Account Structure

Account Categories

Code Range Category Normal Balance Description
1000-1999 Assets DEBIT Resources owned by the entity
2000-2999 Liabilities CREDIT Obligations owed by the entity
3000-3999 Equity CREDIT Owner's equity and reserves
4000-4999 Revenue CREDIT Income and gains
5000-6999 Expenses DEBIT Costs and losses
7000-9999 Other Varies Special purpose accounts

Account Hierarchy

Level 1: Main Categories

  • 1000 - ASSETS
  • 2000 - LIABILITIES
  • 3000 - EQUITY
  • 4000 - REVENUE
  • 5000 - EXPENSES

Level 2: Sub-Categories

  • 1100 - Current Assets
  • 1200 - Non-Current Assets
  • 2100 - Current Liabilities
  • 2200 - Non-Current Liabilities
  • 3100 - Capital
  • 3200 - Retained Earnings
  • 3300 - Reserves
  • 4100 - Operating Revenue
  • 4200 - Non-Operating Revenue
  • 5100 - Operating Expenses
  • 5200 - Non-Operating Expenses

Level 3+: Detail Accounts

  • 1110 - Cash and Cash Equivalents
  • 1111 - Cash on Hand
  • 1112 - Cash in Banks
  • 1120 - Accounts Receivable
  • 1130 - Settlement Assets
  • 1140 - CBDC Holdings
  • 1150 - GRU Holdings
  • etc.

USGAAP Compliance

Classification Mapping

Account USGAAP Classification
1110 Cash and Cash Equivalents
1120 Trade Receivables
1122 Allowance for Doubtful Accounts
1210 Property, Plant and Equipment
1211 Accumulated Depreciation
2110 Accounts Payable
2120 Short-term Debt
2210 Long-term Debt
3100 Stockholders Equity
3200 Retained Earnings
4110 Interest Income
5110 Interest Expense
5160 Provision for Credit Losses

IFRS Compliance

Classification Mapping

Account IFRS Classification
1110 Cash and Cash Equivalents
1120 Trade Receivables
1122 Impairment of Receivables
1210 Property, Plant and Equipment
1211 Accumulated Depreciation
2110 Trade Payables
2120 Financial Liabilities
2210 Financial Liabilities
3100 Share Capital
3200 Retained Earnings
3300 Reserves
4110 Interest Income
5110 Finance Costs
5160 Expected Credit Losses

Key Features

Implemented

  1. Hierarchical Structure

    • Parent-child relationships
    • Multi-level account hierarchy
    • Tree navigation support
  2. Dual Standard Support

    • USGAAP classifications
    • IFRS classifications
    • Both standards supported simultaneously
  3. Account Coding

    • 4-digit account codes
    • Logical numbering system
    • Extensible structure
  4. Normal Balance Tracking

    • DEBIT accounts (Assets, Expenses)
    • CREDIT accounts (Liabilities, Equity, Revenue)
    • Automatic validation
  5. System Accounts

    • Pre-defined system accounts
    • Custom account creation
    • Active/inactive status

Deployment

Step 1: Add Prisma Model

The ChartOfAccount model has been added to the Prisma schema.

Step 2: Run Migration

cd dbis_core
npx prisma migrate dev --name add_chart_of_accounts

Or manually run the SQL migration:

psql -d dbis_core -f prisma/migrations/add_chart_of_accounts.sql

Step 3: Initialize Chart of Accounts

import { chartOfAccountsService } from '@/core/accounting/chart-of-accounts.service';

// Initialize standard accounts
await chartOfAccountsService.initializeChartOfAccounts();

Or via API:

POST /api/accounting/chart-of-accounts/initialize

Step 4: Verify

// Get all accounts
const accounts = await chartOfAccountsService.getChartOfAccounts();

// Get by category
const assets = await chartOfAccountsService.getAccountsByCategory(AccountCategory.ASSET);

// Get hierarchy
const assetHierarchy = await chartOfAccountsService.getAccountHierarchy('1000');

API Endpoints

Method Endpoint Description
GET /api/accounting/chart-of-accounts Get all accounts
POST /api/accounting/chart-of-accounts/initialize Initialize standard accounts
GET /api/accounting/chart-of-accounts/:accountCode Get account by code
GET /api/accounting/chart-of-accounts/category/:category Get by category
GET /api/accounting/chart-of-accounts/:parentCode/children Get child accounts
GET /api/accounting/chart-of-accounts/:rootCode/hierarchy Get account hierarchy
POST /api/accounting/chart-of-accounts Create new account
PUT /api/accounting/chart-of-accounts/:accountCode Update account
GET /api/accounting/chart-of-accounts/:accountCode/balance Get account balance

Account Examples

Assets

{
  accountCode: '1110',
  accountName: 'Cash and Cash Equivalents',
  category: 'ASSET',
  normalBalance: 'DEBIT',
  usgaapClassification: 'Cash and Cash Equivalents',
  ifrsClassification: 'Cash and Cash Equivalents',
  level: 3
}

Liabilities

{
  accountCode: '2140',
  accountName: 'CBDC Liabilities',
  category: 'LIABILITY',
  normalBalance: 'CREDIT',
  usgaapClassification: 'Digital Currency Liabilities',
  ifrsClassification: 'Financial Liabilities',
  level: 3
}

Revenue

{
  accountCode: '4110',
  accountName: 'Interest Income',
  category: 'REVENUE',
  normalBalance: 'CREDIT',
  usgaapClassification: 'Interest Income',
  ifrsClassification: 'Interest Income',
  level: 3
}

Integration with Ledger

The Chart of Accounts integrates with the existing ledger system:

// Post entry using chart of accounts
await ledgerService.postDoubleEntry(
  ledgerId,
  '1112', // Cash in Banks (from chart of accounts)
  '4110', // Interest Income (from chart of accounts)
  amount,
  currencyCode,
  assetType,
  transactionType,
  referenceId
);

Compliance Features

USGAAP Features

  • Standard account classifications
  • Depreciation methods
  • Allowance for doubtful accounts
  • Provision for credit losses
  • Stockholders equity structure

IFRS Features

  • IFRS-compliant classifications
  • Revaluation reserves
  • Expected credit losses (IFRS 9)
  • Share capital structure
  • Comprehensive income tracking

Files Created

  1. src/core/accounting/chart-of-accounts.service.ts - Service implementation
  2. src/core/accounting/chart-of-accounts.routes.ts - API routes
  3. prisma/migrations/add_chart_of_accounts.sql - Database migration
  4. Prisma schema updated with ChartOfAccount model

Next Steps

  1. Run Migration:

    npx prisma migrate dev --name add_chart_of_accounts
    
  2. Initialize Accounts:

    # Via API or service
    POST /api/accounting/chart-of-accounts/initialize
    
  3. Link to Ledger:

    • Update ledger service to use chart of accounts
    • Map bank accounts to chart of accounts codes
    • Generate financial statements using chart of accounts
  4. Generate Reports:

    • Balance Sheet (Assets = Liabilities + Equity)
    • Income Statement (Revenue - Expenses = Net Income)
    • Statement of Cash Flows
    • Statement of Changes in Equity

Status

Chart of Accounts is deployable and ready for use!

The system includes:

  • Complete account structure
  • USGAAP compliance
  • IFRS compliance
  • Hierarchical organization
  • API endpoints
  • Database schema
  • Service implementation

Ready for deployment and integration with the General Ledger system.