Currency codes (ISO 4217)

Handy when building checkout forms, exchange-rate tables, or invoice exports — store the code, display the symbol.

Updated:

CurrencyCodeSymbolMinor units
US dollarUSD$2
EuroEUR€2
British poundGBP£2
Japanese yenJPY¥0
Chinese yuanCNY¥ / 元2
Hong Kong dollarHKDHK$2
Taiwan dollarTWDNT$2
South Korean wonKRW₩0
Swiss francCHFCHF2
Canadian dollarCADC$2
Australian dollarAUDA$2
New Zealand dollarNZDNZ$2
Singapore dollarSGDS$2
Indian rupeeINR₹2
Indonesian rupiahIDRRp2
Thai bahtTHB฿2
Vietnamese dongVND₫0
Malaysian ringgitMYRRM2
Philippine pesoPHP₱2
Brazilian realBRLR$2
Mexican pesoMXNMex$2
Argentine pesoARS$2
Turkish liraTRY₺2
Russian rubleRUB₽2
Saudi riyalSAR﷼2
UAE dirhamAEDد.إ2
South African randZARR2
Polish zlotyPLNzł2
Swedish kronaSEKkr2
Norwegian kroneNOKkr2
Danish kroneDKKkr2

Notes

What ISO 4217 actually specifies

ISO 4217 is the international standard that gives every currency a three-letter code, a numeric code and a defined number of decimal places. The letters are not random: the first two usually identify the country or region and the third the currency's name, so USD is United States dollar, JPY is Japanese yen and EUR is the euro. The standard also fixes the minor unit — how many digits follow the decimal point — which is what software uses to round amounts correctly. When a system says "store the code," it means the ISO 4217 alphabetic code, not the symbol, and that distinction prevents a whole class of payment bugs.

Why the symbol is never enough

Currency symbols are ambiguous in a way that codes are not. The dollar sign serves the US, Canadian, Australian, New Zealand, Hong Kong and Singapore dollars, among others; the yen and yuan symbols overlap; the pound sign covers sterling and several others. A price written as "$10" tells you nothing about which currency is meant. In invoices, APIs and databases, storing the three-letter code removes the ambiguity entirely, and the symbol becomes a presentation detail that is chosen at display time based on the audience. The rule of thumb for any system handling money internationally is simple: store the code, render the symbol.

Minor units, exponents and rounding

The number of decimal places is a property of the currency, not a global setting. Most currencies use two digits, so USD, EUR, GBP and CNY all take cents. But the yen and the Korean won have zero minor units — JPY 100 is one hundred yen, with no decimal — while a handful of dinar-based currencies, including the Kuwaiti dinar, Bahraini dinar, Omani rial and Tunisian dinar, use three. Some currencies also have a different minor unit for cash than for accounting. Rounding incorrectly across these cases can create discrepancies of a hundredfold, so always read the exponent from the standard rather than assuming two decimals.

A short code, a long list of edge cases

Beyond the handful of major currencies in any reference table lie the awkward cases. Currencies get redenominated — Zimbabwe has dropped zeros more than once — and superseded codes stay in historical records. Some territories use another country's currency outright, so there is no local code. Cryptocurrencies deliberately sit outside ISO 4217 and use their own tickers, which is why a ledger handling both needs to know which namespace it is in. And a few currencies share a name across countries while carrying different codes and values. Knowing that the code is the stable identifier, while symbols, names and even decimal places can change, is the practical takeaway.

Frequently asked questions

What currency is code EUR?
EUR is the ISO 4217 code for the euro, the currency used by most European Union countries. Its symbol is €.
What is the currency code for Japan?
The Japanese yen has the ISO 4217 code JPY and the symbol ¥. It has no minor (decimal) units.
Why should I store a three-letter currency code instead of a symbol?
Symbols overlap: $ alone could mean USD, CAD, AUD and more. The three-letter ISO 4217 code is unambiguous.

Sources