# 0003. Money is integer sen

- Status: Accepted
- Date: 2026-10-27

## Context

Floating-point arithmetic cannot represent most decimal amounts exactly, which causes rounding errors in totals, tax and reports.

## Decision

All money is stored, computed and transmitted as integer sen (RM12.90 is `1290`). No floating point anywhere money is stored, computed or sent. Formatting money for display happens only in the money module of `packages/core`.

## Consequences

- Rates (tax, service charge) are applied with integer arithmetic and an explicit rounding rule (half-up to the sen unless a rule says otherwise).
- API payloads and database columns carry integers, never decimal strings or floats.
- Code review rejects `number` arithmetic on money outside the money module.
