ISO 4217 Currency Codes Explained: Letters, Numbers, Decimals and Changes
A wrong decimal setting can charge a customer 100 times too much: the yen has no minor unit, the Kuwaiti dinar has three, and ISO 4217 records both.
Currency codes, numeric codes and minor units are amended without much notice, usually one to three times a year. Before you hard-code any of them, check the current ISO 4217 lists published by the maintenance agency, SIX (List One, Two and Three). Counts here are from List One of 1 January 2026. SIX republished the list on 17 September 2026, and every code we could check in that version matched.
What ISO 4217 covers
ISO 4217 gives every currency a three-letter code, a three-digit number and a "minor unit" value that says how many decimal places it uses. The first edition appeared in 1978 and the current edition is ISO 4217:2015, but the code lists themselves change between editions. They are maintained by SIX, the Swiss financial infrastructure company, on behalf of ISO and the Swiss Association for Standardization (SNV). SIX publishes three lists: List One for current currencies and funds, List Two for fund codes and List Three for historic codes.
List One, as published on 1 January 2026, holds 178 codes. Of those, 159 are national currencies or national fund codes, and 19 start with X. Every Beelad country page shows its currency's ISO code; the Japan page, for example, shows the yen as JPY.
How the letter codes are built
For a national currency, the first two letters are usually the country's ISO 3166-1 alpha-2 code and the third is usually the first letter of the currency's name: JPY is Japan's yen, CHF the Swiss franc, INR the Indian rupee. ISO describes this as the typical pattern, not a strict rule. In the January 2026 list, 158 of the 159 non-X codes begin with a current ISO country code. The exception is EUR, which uses EU, a code ISO 3166 reserves for the European Union but does not assign as a country.
The X codes
Codes starting with X are for things that are not one country's currency. ISO 3166 never assigns country codes beginning with X, so they cannot clash.
- Shared regional currencies:
XOF(West African CFA franc, 952),XAF(Central African CFA franc, 950),XCD(East Caribbean dollar, 951),XPF(CFP franc, 953) and the newest,XCG(Caribbean guilder, 532) for Curaçao and Sint Maarten. - Precious metals:
XAUgold (959),XAGsilver (961),XPTplatinum (962),XPDpalladium (964). - Accounting units:
XDRfor the IMF's Special Drawing Right (960) andXAD, the Arab Monetary Fund's Arab Accounting Dinar (396), added in May 2025. - Technical codes:
XTS(963) is reserved for testing, and 999 is the numeric code for transactions where no currency is involved.
The numeric codes
Numeric codes help systems that cannot handle Latin letters. A national currency usually takes its country's ISO 3166 numeric code: the US dollar is 840, like the United States, and the Swiss franc is 756, like Switzerland. In the 2026 list, 118 of the 159 non-X codes share a number with a current country code. The others are worth knowing, because they are where copy-paste errors happen:
- Brazil: the real is
BRL986. The number 086 is the country code of the British Indian Ocean Territory, and some older tables wrongly give it for BRL. Brazil's own country number is 076. - New currencies get new numbers: the Turkish lira since 2005 is 949 (Türkiye is 792), and Zimbabwe's ZiG is 924 (Zimbabwe is 716). Not always, though: the Caribbean guilder kept 532, the number of the Netherlands Antillean guilder it replaced.
- Old numbers can outlive their country code: the Ethiopian birr is still 230, Ethiopia's country number before Eritrea split off in 1993; Ethiopia itself is now 231. The Panamanian balboa is 590, Panama's withdrawn country number; the country is now 591.
- Supranational: the euro is 978.
Minor units: the field that breaks payments
Each code has a minor-unit value, the number of digits after the decimal point. Most currencies use 2, but not all, and the difference matters whenever amounts are stored as whole numbers of the smallest unit, as most payment systems do.
| Currency | Code | Numeric | Minor units | Note |
|---|---|---|---|---|
| US dollar | USD | 840 | 2 | Also used by Ecuador, El Salvador, Timor-Leste, Marshall Islands, Micronesia, Palau |
| Euro | EUR | 978 | 2 | 21 EU states plus 6 other countries |
| Japanese yen | JPY | 392 | 0 | No decimal subunit in use |
| Kuwaiti dinar | KWD | 414 | 3 | 1 dinar = 1,000 fils |
| Bahraini dinar | BHD | 048 | 3 | Leading zero is part of the code |
| Chilean peso | CLP | 152 | 0 | Chile's everyday currency |
| Unidad de Fomento | CLF | 990 | 4 | Chile's inflation-indexed unit of account |
| West African CFA franc | XOF | 952 | 0 | 8 countries |
| Central African CFA franc | XAF | 950 | 0 | 6 countries |
| Panamanian balboa | PAB | 590 | 2 | At par with the US dollar, which circulates alongside it |
| Saudi riyal | SAR | 682 | 2 | Pegged at 3.75 per US dollar |
| UAE dirham | AED | 784 | 2 | Pegged at 3.6725 per US dollar |
| Gold (troy ounce) | XAU | 959 | N.A. | No minor unit |
Two currencies are special: the Mauritanian ouguiya and the Malagasy ariary are divided into five subunits, not 100, but ISO lists both with a minor unit of 2.
Worked example: storing 1,000 in four currencies
Payment systems usually store amounts as integers of the minor unit. Here is what 1,000 units of each currency becomes, and what happens if the code wrongly assumes 2 decimals for everything:
- USD 1,000.00 (2 decimals) → stored as
100000. Correct either way. - JPY 1,000 (0 decimals) → stored as
1000. Assuming 2 decimals gives100000, which the system reads as ¥100,000: a charge 100 times too large. - KWD 1,000.000 (3 decimals) → stored as
1000000. Assuming 2 decimals gives100000, read back as 100.000 dinars: one tenth of the right amount. - CLF 1.2345 (4 decimals) → stored as
12345. Assuming 2 decimals rounds it to123, read back as 0.0123.
The fix is to look up the exponent from List One for every currency instead of hard-coding 100.
Shared currencies
Many countries use a currency they do not issue alone. Among Beelad's 196 countries, 27 use the euro, 8 use the West African CFA franc (issued by the BCEAO), 6 use the Central African CFA franc (BEAC), 6 use the East Caribbean dollar and 4 use the Australian dollar, including Tuvalu. Seven list the US dollar, the United States plus six countries that adopted it.
The euro area itself has grown in steps. Bulgaria became its 21st member on 1 January 2026, at a fixed rate of 1.95583 lev per euro, so 100 lev became €51.13. The lev and the euro circulated together only during January 2026. ISO moved BGN (numeric 975) to the historic list, and Croatia's kuna (HRK) went the same way when Croatia joined on 1 January 2023 at 7.53450 kuna per euro.
Why codes change
A currency usually gets a new code when it is redenominated, meaning zeros are removed and old notes are exchanged at a fixed ratio. This lets systems tell old amounts from new ones.
| Country | Old code | New code | Year | Conversion |
|---|---|---|---|---|
| Türkiye | TRL | TRY (949) | 2005 | 1,000,000 old lira = 1 new lira |
| Venezuela | VEB | VEF | 2008 | 1,000 = 1 |
| Venezuela | VEF | VES (928) | 2018 | 100,000 = 1 |
| Venezuela | VES | VED (926) added | 2021 | 1,000,000 = 1; VES is still listed |
| Croatia | HRK | EUR (978) | 2023 | 7.53450 kuna = €1 |
| Curaçao, Sint Maarten | ANG | XCG (532) | 2025 | 1 = 1 (at par); ANG not legal tender from 1 July 2025 |
| Zimbabwe | ZWL | ZWG (924) | 2024 | 2,498.7242 ZWL = 1 ZiG |
| Bulgaria | BGN | EUR (978) | 2026 | 1.95583 lev = €1 |
Zimbabwe's case shows how quickly this can happen. The ZiG ("Zimbabwe Gold") was announced on 5 April 2024 and became the official currency on 8 April, but ISO only added ZWG in Amendment 177 on 20 June 2024. For more than two months, systems had no official code for it.
Currency symbols are not part of ISO 4217
ISO 4217 defines codes, not symbols. Symbols are set by central banks and encoded by Unicode, and they also change:
- Saudi riyal: the Saudi Central Bank adopted a new official symbol on 20 February 2025. Unicode added it as U+20C1 SAUDI RIYAL SIGN in Unicode 17.0, released on 9 September 2025. The older ﷼ (U+FDFC) is a generic "rial" ligature.
- UAE dirham: the Central Bank of the UAE unveiled a new dirham symbol on 27 March 2025, and it was encoded as U+20C3 in Unicode 18.0, reported in September 2026. Until fonts catch up, the abbreviation د.إ remains common.
Because fonts and keyboards lag behind, the ISO code (SAR, AED) is the safest thing to show in data exports and invoices.
"$" is used by more than a dozen currencies, from the US to Australia, Canada and Mexico. Store the three-letter code with every amount, and add the symbol only when you display it.
Key takeaways
- ISO 4217 List One had 178 codes in January 2026; 19 start with X.
- Letter codes usually start with the ISO country code; EUR and the X codes are the main exceptions.
- Numeric codes usually match the country number, but not always: BRL is 986, not 086.
- Minor units range from 0 (JPY) to 4 (CLF). Never assume 2.
- Codes change with redenominations and euro adoption: BGN was withdrawn on 1 January 2026, and ZWL was replaced by ZWG in 2024.
Frequently asked questions
Who maintains the ISO 4217 currency code list?
SIX, the Swiss financial infrastructure company, acts as the ISO 4217 maintenance agency on behalf of ISO and the Swiss Association for Standardization (SNV). It publishes List One (current codes), List Two (fund codes) and List Three (historic codes).
What is the numeric code for the Brazilian real?
986. Some older tables wrongly give 086, which is the ISO 3166 country code of the British Indian Ocean Territory. The letter code is BRL.
Which currencies do not use two decimal places?
In List One of 1 January 2026, 17 codes use no decimals, including JPY, KRW and CLP; 7 use three, including KWD, BHD, OMR and TND; and 2 use four: CLF and UYW. Metals, the SDR and test codes have no minor unit.
Does Bulgaria still use the lev?
No. Bulgaria adopted the euro on 1 January 2026 at 1.95583 lev per euro, and the lev (BGN) was moved to the ISO 4217 historic list. Lev cash circulated alongside the euro only during January 2026.
Sources
- ISO 4217 currency code lists (List One, Two, Three), SIX
- ISO 4217: international currency codes, ISO
- ISO 4217 (including the historic codes table), Wikipedia
- Bulgaria adopts euro as of 1 January 2026, European Commission
- Zimbabwean ZiG, Wikipedia
- Saudi riyal sign, Wikipedia
Check a country's currency
Every Beelad country page shows the currency name and ISO 4217 code, and lists the other countries that share it.
Find a country →