Skip to content

South African Rand (ZAR): 2 decimal places

South African Rand (ZAR) has 2 decimal places: one ZAR is 100 minor units, and amounts are stored as integers of those.
ISO 4217 exponent
2
Minor units per unit
100
Intl display digits
2
Symbol (en-US)
R

ZAR in a statement

The same integer in every state a statement can be in. Null is not zero: unknown renders as a dash, never as a zero amount.

ValueStored (minor units)StatementMoney component
Positive1234561,234.561,234 South African Rand and 56 minor units
Negative-123456(1,234.56)negative 1,234 South African Rand and 56 minor units
Zero00.000 South African Rand
Unknown (null)null—not available

Typing ZAR

What a person types, and the integer it is stored as at ZAR's exponent. Rounded once, at the end.

TypedStored as
1,234.56123456
(1,234.56)-123456
1.2k120000
=1200+340*2188000

Split without losing a minor unit

100.00 ZAR split three ways. Rounding each third leaves a remainder; largest-remainder allocation hands it out one minor unit at a time, so the parts always sum to the whole.

  • 33.34
  • 33.33
  • 33.33
  • = 100.00

On a check

One thousand two hundred thirty-four ZAR and 56/100 only

The fraction is over 100 because ZAR has 2 decimal places. Write any amount in words.

ZAR in React

The component reads the exponent from the currency code; you pass the integer and the code, never a float and never a decimal count.

tsx
import { Money } from "@/components/ledger/money";

// 1,234.56 ZAR, stored as the integer 123456
<Money accounting value={{ amount: 123456, currency: "ZAR" }} />

Also stored at 2 decimal places

Work with it

Tools that read ZAR at its own exponent.

Works in your QuickBooks Online or Xero file

Get your books closed every month

Lopifi is building AI bookkeeping that keeps your books closed on US GAAP as transactions happen, with a CPA review every quarter, for $200 a month. We’re not open yet.

$200/month when we open. No card now.