Data standards

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.

Check before you build payments

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.

Three example ISO 4217 codes: USD 840 made from the country code US plus D for dollar, EUR 978 made from the reserved code EU, and XAU 959 for gold
Diagram: how three typical codes are built (source: ISO 4217 List One, SIX, January 2026).

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: XAU gold (959), XAG silver (961), XPT platinum (962), XPD palladium (964).
  • Accounting units: XDR for the IMF's Special Drawing Right (960) and XAD, 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 BRL 986. 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.

CurrencyCodeNumericMinor unitsNote
US dollarUSD8402Also used by Ecuador, El Salvador, Timor-Leste, Marshall Islands, Micronesia, Palau
EuroEUR978221 EU states plus 6 other countries
Japanese yenJPY3920No decimal subunit in use
Kuwaiti dinarKWD41431 dinar = 1,000 fils
Bahraini dinarBHD0483Leading zero is part of the code
Chilean pesoCLP1520Chile's everyday currency
Unidad de FomentoCLF9904Chile's inflation-indexed unit of account
West African CFA francXOF95208 countries
Central African CFA francXAF95006 countries
Panamanian balboaPAB5902At par with the US dollar, which circulates alongside it
Saudi riyalSAR6822Pegged at 3.75 per US dollar
UAE dirhamAED7842Pegged at 3.6725 per US dollar
Gold (troy ounce)XAU959N.A.No minor unit
Bar chart of minor units across the 178 ISO 4217 codes: 139 use two decimals, 17 use none, 7 use three, 2 use four and 13 have no minor unit
Chart: minor units across all 178 codes in List One (source: SIX, list published 1 January 2026).

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 gives 100000, 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 gives 100000, 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 to 123, 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.

Step chart showing euro area membership growing from 11 countries in 1999 to 21 in 2026, with joins by Greece, Slovenia, Cyprus and Malta, Slovakia, Estonia, Latvia, Lithuania, Croatia and Bulgaria
Chart: EU member states using the euro, 1999 to 2026 (sources: Destatis; European Commission).

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.

CountryOld codeNew codeYearConversion
TürkiyeTRLTRY (949)20051,000,000 old lira = 1 new lira
VenezuelaVEBVEF20081,000 = 1
VenezuelaVEFVES (928)2018100,000 = 1
VenezuelaVESVED (926) added20211,000,000 = 1; VES is still listed
CroatiaHRKEUR (978)20237.53450 kuna = €1
Curaçao, Sint MaartenANGXCG (532)20251 = 1 (at par); ANG not legal tender from 1 July 2025
ZimbabweZWLZWG (924)20242,498.7242 ZWL = 1 ZiG
BulgariaBGNEUR (978)20261.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.

Tip: code, not symbol, in your database

"$" 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

  1. ISO 4217 currency code lists (List One, Two, Three), SIX
  2. ISO 4217: international currency codes, ISO
  3. ISO 4217 (including the historic codes table), Wikipedia
  4. Bulgaria adopts euro as of 1 January 2026, European Commission
  5. Zimbabwean ZiG, Wikipedia
  6. 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 →
Cecile Ancieux
Creator · Senior Web Developer & Data Privacy Advocate

Cecile is a software engineer with over a decade of experience building client-side JavaScript applications and open-source utilities. She writes and edits Beelad's articles and country data, checking figures against ISO, UN and national statistics sources.

More about Cecile →

Related articles