---
id: CAP-ACC-BKS-005
title: Maintain a business unit’s chart
feature: FEAT-ACC-BKS-02
product_area: accounting
module: books
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - CAP-ACC-CFG-004
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - 'services-accounting:docs/milestones/plans/ACCT-M1-plan.md#2. Scope'
  - 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D2'
  - 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#R4'
  - 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#R15'
purpose: >-
  Accountants keep stable posting destinations for the unit’s financial
  activity.
outcomes:
  - Account codes remain distinct within a unit and retain their identity.
  - >-
    Referenced accounts remain available to dependent configuration and
    postings.
concepts:
  - CON-ACC-BKS-002
actors:
  - ACT-ACC-001
  - ACT-ACC-002
surfaces:
  - console
  - api
preconditions: []
postconditions: []
permissions:
  - key: accounting.gl-accounts.read
    where_checked: api
    scope: tenant
  - key: accounting.gl-accounts.create
    where_checked: api
    scope: tenant
  - key: accounting.gl-accounts.update
    where_checked: api
    scope: tenant
  - key: accounting.gl-accounts.delete
    where_checked: api
    scope: tenant
rules:
  - id: BR-CAP-ACC-BKS-005-01
    proved_by: [ATS-ACC-BKS-002-13, ATS-ACC-BKS-005-01, TST-ACC-BKS-005, TST-ACC-BKS-055, TST-ACC-BKS-063, TST-ACC-BKS-089]
    statement: >-
      GL codes are trimmed, upper-cased and unique within their unit; an omitted
      account identifier combines the unit with its lower-case code, while
      another unit may use the same code.
    kind: validation
    enforced_at:
      - api
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#stores
      the code trimmed and upper-cased, under the id from the lower-cased code
    origin: 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D2'
    examples:
      positive: A valid configuration completes the stated operation.
      negative: A conflicting configuration receives the stated refusal.
  - id: BR-CAP-ACC-BKS-005-02
    proved_by: [ATS-ACC-BKS-005-02]
    statement: 'A saved GL account keeps its code, business unit and currency.'
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#answers
      409 to a change of code, naming the column
    origin: 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#D2'
  - id: BR-CAP-ACC-BKS-005-03
    proved_by: [ATS-ACC-BKS-005-03, TST-ACC-BKS-055]
    statement: >-
      GL accounts use one of fourteen types, defaulting to income, and display
      the code followed by an optional name or the code alone.
    kind: validation
    enforced_at:
      - api
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#answers
      400 to an account type that is not one of the fourteen
    origin: none
  - id: BR-CAP-ACC-BKS-005-04
    proved_by: [ATS-ACC-BKS-005-04, ATS-ACC-BKS-005-10, ATS-ACC-BKS-005-11, TST-ACC-BKS-009, TST-ACC-BKS-089]
    statement: >-
      Deleting a referenced account is refused with its dependent kind
      identified, including receiving accounts, defaults, tax rates, product
      setups, revenue schedules, inter-entity mappings and posted records.
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/books/tests/integration/services/persistence/gl-accounts.integration.spec.js#translates
      the refusal of each restrict foreign key to a GL account into a 409 naming
      it
    origin: none
  - id: BR-CAP-ACC-BKS-005-05
    proved_by: [ATS-ACC-BKS-005-05, ATS-ACC-BKS-005-09, ATS-ACC-BKS-016-13, TST-ACC-BKS-007, TST-ACC-BKS-049, TST-ACC-BKS-089]
    statement: >-
      An account serving a unit default cannot be deactivated or deleted, and
      the refusal identifies its purposes.
    kind: invariant
    enforced_at:
      - service
      - database
    must_prove: true
    provenance: test
    source: >-
      services-accounting:modules/books/tests/integration/services/persistence/gl-accounts.integration.spec.js#refuses
      deactivating the unit’s Accounts Receivable default, naming the purpose
    origin: none
    examples:
      negative: A conflicting configuration receives the stated refusal.
  - id: BR-CAP-ACC-BKS-005-06
    proved_by: [ATS-ACC-BKS-005-07]
    statement: >-
      Account lists order by unit and code, filter by unit, type, currency or
      activity, search code or name and allow at most 500 entries per page.
    kind: policy
    enforced_at:
      - api
      - service
    must_prove: false
    provenance: test
    source: >-
      services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js#answers
      every account by business unit, then code
    origin: none
  - id: BR-CAP-ACC-BKS-005-07
    proved_by: [ATS-ACC-BKS-008-09]
    statement: >-
      The console chart shows one unit with a single-row toolbar, no currency or
      type filter, and a Default Accounts header action beside Add GL Account.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: documented
    source: 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#R15'
    origin: 'services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md#R15'
scenarios:
  - id: SC-CAP-ACC-BKS-005-01
    given: An accountant enters the receivable code using a lower-case suffix.
    when: They save the account with no identifier supplied.
    then: >-
      The returned code uses an upper-case suffix, its identifier derives from
      the unit and code, and the code remains fixed.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0009.spec.ts#ACT-ACC-0009
  - id: SC-CAP-ACC-BKS-005-02
    given: A cash account is referenced by a bank account and the receivable default.
    when: The controller requests its deletion.
    then: The refusal identifies the bank and default dependencies.
    provenance: test
    source: >-
      react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0010.spec.ts#ACT-ACC-0010
edge_cases: []
constraints: []
depends_on:
  - CAP-ACC-BKS-001
related:
  - CAP-ACC-BKS-006
  - CAP-ACC-BKS-007
  - CAP-ACC-BKS-013
journeys:
  - JNY-ACC-BKS-001
open_questions: []
evidence:
  - >-
    Verified source file:
    react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0009.spec.ts
  - >-
    Verified source file:
    react-console:acceptance/accounting/playwright/journeys/configuration/ACT-ACC-0010.spec.ts
  - 'Verified source file: services-accounting:aws/accounting.service.ts'
  - >-
    Verified source file:
    services-accounting:docs/milestones/ACCT-M1-books-and-invoices.md
  - >-
    Verified source file:
    services-accounting:docs/milestones/plans/ACCT-M1-plan.md
  - >-
    Verified source file:
    services-accounting:modules/books/db/gl-accounts.table.ts
  - >-
    Verified source file:
    services-accounting:modules/books/tests/e2e/default-gl-accounts.e2e.spec.js
  - >-
    Verified source file:
    services-accounting:modules/books/tests/e2e/gl-accounts.e2e.spec.js
  - >-
    Verified source file:
    services-accounting:modules/books/tests/integration/db/configuration-records.table.integration.spec.js
  - >-
    Verified source file:
    services-accounting:modules/books/tests/integration/services/persistence/gl-accounts.integration.spec.js
  - >-
    Verified source file:
    services-accounting:modules/books/tests/integration/services/persistence/gl-accounts.queries.integration.spec.js
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-DAT-001, TC-DAT-004, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-003, TC-PI-005]
exercised_by: [FAS-ACC-BKS-02-01, FAS-ACC-BKS-02-02, FAS-ACC-BKS-02-03, FAS-ACC-BKS-02-04, FAS-ACC-BKS-02-05]
suites: [TST-ACC-BKS-005, TST-ACC-BKS-007, TST-ACC-BKS-009, TST-ACC-BKS-049, TST-ACC-BKS-055, TST-ACC-BKS-063, TST-ACC-BKS-089]
---

# Maintain a business unit’s chart

## Purpose

Accountants keep stable posting destinations for the unit’s financial activity.

## How It Works

The accountant selects the unit whose chart needs work. They enter the account codes used by the organization’s accounting system and classify the accounts. The chart supplies choices to other accounting editors. Staff may adjust descriptive information while retaining the account’s identity. The page also provides access to the unit’s default-account assignments. Removing or deactivating an account can fail when financial configuration depends on it. Staff follow the refusal back to those dependencies before changing the chart.

## Relationships

Receiving accounts, defaults, tax mapping and product accounting refer to this chart.
