---
id: ADR-ACC-REC-019
title: Money Is Integer Minor Units; Ledger Requests Are Two-Decimal for Now
product_area: accounting
module: reconciliation
revision: 3
status: proposed
design_intent: proposed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Represent reconciliation money in exact integer minor units and restrict
  nonempty accounting plans to two-decimal currencies for now.
constrains:
  - DOM-ACC-REC-001
  - DOM-ACC-REC-002
  - DOM-ACC-REC-003
  - WF-ACC-REC-007
origin: >-
  services-accounting docs/reconciliation/architecture.md §6 INV-03 and §18.6;
  modules/reconciliation/README.md
alternatives:
  - option: Use floating-point decimal arithmetic for reconciliation.
    why_not: Float rounding would weaken the exact-zero financial comparison.
  - option: Permit every exponent before adapting batch accounting.
    why_not: Current request conversion could misstate non-two-decimal values.
consequences:
  - Balance uses exact equality without tolerance.
  - >-
    The current console formats US dollars and parses cents regardless of
    currency, which requires correction.
  - >-
    An empty accounting plan bypasses the exponent check; other plans remain
    restricted.
supersedes: []
evidence:
  - >-
    services-accounting at f47cb263:
    modules/reconciliation/services/rules/money.ts;
    services/persistence/reconciliation-ledger-postings.ts; README.md.
---
# Money Is Integer Minor Units; Ledger Requests Are Two-Decimal for Now

## Context

Approval compares an exact integer difference and later batch accounting has a temporary exponent restriction.

## Decision

Represent reconciliation money in exact integer minor units and restrict nonempty accounting plans to two-decimal currencies for now.

## Alternatives Considered

Use floating-point decimal arithmetic for reconciliation. Float rounding would weaken the exact-zero financial comparison.

Permit every exponent before adapting batch accounting. Current request conversion could misstate non-two-decimal values.

## Consequences

Balance uses exact equality without tolerance. The current console formats US dollars and parses cents regardless of currency, which requires correction. An empty accounting plan bypasses the exponent check; other plans remain restricted.
