---
id: ADR-ACC-BKS-003
title: Fixed founding values with service and database protection
product_area: accounting
module: books
revision: 1
status: proposed
design_intent: proposed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  The fixed values are a unit’s base currency and starting month, a GL account’s
  unit and code, dimension units and codes, rate identity and origin, template
  kind, and payment-method behavior. Service validation and database guards
  protect these values.
constrains:
  - DOM-ACC-BKS-001
  - DOM-ACC-BKS-002
  - DOM-ACC-BKS-003
  - DOM-ACC-BKS-004
  - DOM-ACC-BKS-006
  - STATE-ACC-BKS-001
origin: >-
  services-accounting docs/milestones/ACCT-M1-books-and-invoices.md#D2;
  docs/architecture/accounting-2.0/02-decisions.md#2.11 decision D-01 (payment
  method behaviour)
alternatives:
  - option: Correct founding values and rewrite dependents.
    why_not: >-
      This proposed alternative would require an explicit migration policy for
      amounts, periods and references whose interpretation could change.
  - option: Enforce fixed values only in the service.
    why_not: >-
      Other modules share the database; database guards also protect their
      writes.
consequences:
  - A different base currency or fiscal boundary requires a replacement unit.
  - Service refusals identify protected fields.
  - >-
    Console editors lock these founding controls after creation. Account
    currency has an additional console restriction that the service does not
    impose.
supersedes: []
evidence:
  - >-
    services-accounting at f47cb263:
    modules/books/services/rules/configuration-rules.ts (write-once field lists)
  - >-
    services-accounting at f47cb263: modules/books/db/*.table.ts (freeze and
    write-once triggers)
---

# Fixed founding values with service and database protection

## Context

A unit’s founding currency and fiscal boundary define its accounting context. The cited product records establish fixed founding values and payment-method behavior; implementation supplies the field-level protections.

The cited product choices establish the unit’s founding values and payment-method behavior. The wider list of protected configuration fields is observed implementation and remains a proposed design choice; those product records do not approve every field on that list.

## Decision

The fixed values are a unit’s base currency and starting month, a GL account’s unit and code, dimension units and codes, rate identity and origin, template kind, and payment-method behavior. Service validation and database guards protect these values.

## Alternatives Considered

Correct founding values and rewrite dependents. This proposed alternative would require an explicit migration policy for amounts, periods and references whose interpretation could change.

Enforce fixed values only in the service. Other modules share the database; database guards also protect their writes.

## Consequences

A different base currency or fiscal boundary requires a replacement unit.

Service refusals identify protected fields.

Console editors lock these founding controls after creation. Account currency has an additional console restriction that the service does not impose.
