# Do not edit - generated from Unicode CLDR data
#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# Trailing empty fields can be omitted

AED = Apvienoto Arābu Emirātu dirhēms
AFN = Afganistānas afgāns|Af|0
ALL = Albānijas leks||0
AMD = Armēnijas drams||0
ANG = Nīderlandes Antiļu guldenis|NAf.
AOA = Angolas kvanza|Kz
ARS = Argentīnas peso|AR$
ATS = Austrijas šiliņš|||1
AUD = Austrālijas dolārs|AU$
AWG = Arubas guldenis|Afl.
AZM = Azerbaidžānas manats (1993-2006)|||1
AZN = Azerbaidžānas manats|man.
BAM = Bosnijas un Hercogovinas marka|KM
BBD = Barbadosas dolārs|Bds$
BDT = Bangladešas taka|Tk
BEF = Beļģijas franks|BF||1
BGN = Bulgārijas leva
BHD = Bahreinas dinārs|BD|3
BIF = Burundi franks|FBu|0
BMD = Bermudu dolārs|BD$
BND = Brunejas dolārs|BN$
BOB = Bolīvijas boliviano|Bs
BRL = Brazīlijas reāls|R$
BSD = Bahamu dolārs|BS$
BTN = Butānas ngultrums|Nu.
BWP = Botsvānas pula
BYR = Baltkrievijas rubelis||0
BZD = Belizas dolārs|BZ$
CAD = Kanādas dolārs|CA$
CDF = KDR franks
CHF = Šveices franks
CLP = Čīles peso|CL$|0
CNY = Ķīnas juaņa renminbi|CN¥
COP = Kolumbijas peso|CO$|0
COU = Kolumbijas reāls|||1
CRC = Kostarikas kolons|₡|0
CUC = Kubas konvertējamais peso|CUC$
CUP = Kubas peso|CU$
CVE = Kaboverdes eskudo|CV$
CYP = Kipras mārciņa|CY£||1
CZK = Čehijas krona|Kč
DEM = Vācijas marka|DM||1
DJF = Džibutijas franks|Fdj|0
DKK = Dānijas krona|Dkr
DOP = Dominikānas peso|RD$
DZD = Alžīrijas dinārs|DA
EEK = Igaunijas krona|Ekr
EGP = Ēģiptes mārciņa|EG£
ERN = Eritrejas nakfa|Nfk
ESP = Spānijas peseta|Pts|0|1
ETB = Etiopijas birs|Br
EUR = eiro|€
FIM = Somijas marka|mk||1
FJD = Fidži dolārs|FJ$
FKP = Folklenda salu mārciņa|FK£
FRF = Francijas franks|₣||1
GBP = Lielbritānijas sterliņu mārciņa|UK£
GEL = Gruzijas lari
GHS = Ganas sedi|GH₵
GIP = Gibraltāra mārciņa|GI£
GMD = Gambijas dalasi
GNF = Gvinejas franks|FG|0
GRD = Grieķijas drahma|₯||1
GTQ = Gvatemalas ketsals
GYD = Gajānas dolārs|GY$|0
HKD = Honkongas dolārs|HK$
HNL = Hondurasas lempīra
HRK = Horvātijas kuna|kn
HTG = Haiti gurds
HUF = Ungārijas forints|Ft|0
IDR = Indonēzijas rūpija|Rp|0
IEP = Īrijas mārciņa|IR£||1
ILS = Izraēlas šekelis|₪
INR = Indijas rūpija|Rs.
IQD = Irākas dinārs||0
IRR = Irānas riāls||0
ISK = Īslandes krona|Ikr|0
ITL = Itālijas lira|IT₤|0|1
JMD = Jamaikas dolārs|J$
JOD = Jordānas dinārs|JD|3
JPY = Japānas jena|¥|0
KES = Kenijas šiliņš|Ksh
KGS = Kirgizstānas soms
KHR = Kambodžas riels
KMF = Komoru franks|CF|0
KPW = Ziemeļkorejas vona||0
KRW = Dienvidkorejas vona|₩|0
KWD = Kuveitas dinārs|KD|3
KYD = Kaimanu salu dolārs|KY$
KZT = Kazahstānas tenge
LAK = Laosas kips|₭|0
LBP = Libānas mārciņa|LB£|0
LKR = Šrilankas rūpija|SLRs
LRD = Libērijas dolārs|L$
LSL = Lesoto loti
LTL = Lietuvas lits|Lt
LUF = Luksemburgas franks||0|1
LVL = Latvijas lats|Ls
LVR = Latvijas rublis|||1
LYD = Lībijas dinārs|LD|3
MAD = Marokas dirhēms
MDL = Moldovas leja
MGA = Madagaskaras ariari||0
MKD = Maķedonijas denārs
MLF = CFA (Āfrikas) franks|||1
MMK = Mjanmas kjats||0
MNT = Mongolijas tugriks|₮|0
MOP = Makao pataka|MOP$
MRO = Mauritānijas ugija|UM|0
MTL = Maltas lira|Lm||1
MTP = Maltas mārciņa|MT£||1
MUR = Maurīcijas rūpija|MURs|0
MVR = Maldīvijas rūfija
MWK = Malāvijas kvača
MXN = Meksikas peso|MX$
MYR = Malaizijas ringits|RM
MZE = Mozambikas eskudo|||1
MZM = Mozambikas vecais metikals|Mt||1
MZN = Mozambikas metikals|MTn
NAD = Namībijas dolārs|N$
NGN = Nigērijas naira|₦
NIO = Kordovas oro|C$
NLG = Nīderlandes guldenis|fl||1
NOK = Norvēģijas krona|Nkr
NPR = Nepālas rūpija|NPRs
NZD = Jaunzēlandes dolārs|NZ$
OMR = Omānas riāls||3
PAB = Panamas balboa|B/.
PEN = Peru jaunais sols|S/.
PGK = Papua-Jaungvinejas kina
PHP = Filipīnu peso|Php
PKR = Pakistānas rūpija|PKRs|0
PLN = Polijas zlots|zł
PTE = Portugāles eskudo|Esc||1
PYG = Paragvajas guarani|₲|0
QAR = Kataras riāls|QR
ROL = Rumānijas vecā leja|||1
RON = Rumānijas leja
RSD = Serbijas dinārs|din.|0
RUB = Krievijas rublis
RWF = Ruandas franks||0
SAR = Saūda riāls|SR
SBD = Zālamana Salu dolārs|SI$
SCR = Seišelu salu rūpija|SRe
SDG = Sudānas mārciņa
SEK = Zviedrijas krona|Skr
SGD = Singapūras dolārs|S$
SHP = Sv.Helēnas salas mārciņa|SH£
SIT = Slovēnijas tolars|||1
SKK = Slovakijas krona|Sk||1
SLL = Sjerraleones leone|Le|0
SOS = Somālijas šiliņš|Ssh|0
SRD = Surinamas dolārs|SR$
SRG = Surinamas guldenis|Sf||1
STD = Santome un Prinsipi dobra|Db|0
SVC = Salvadoras kolons|SV₡||1
SYP = Sīrijas mārciņa|SY£|0
SZL = Svazilendas lilangeni
THB = Taizemes bāts|฿
TJS = Tadžikistānas somons
TMM = Turkmenistānas manats||0|1
TMT = Turkmenistānas jaunais manats
TND = Tunisijas dinārs|DT|3
TOP = Tongas paanga|T$
TRL = Turcijas lira||0|1
TRY = Turcijas jaunā lira|TL
TTD = Trinidādas un Tobāgo dolārs|TT$
TWD = Taivānas jaunais dolārs|NT$
TZS = Tanzānijas šiliņš|TSh|0
UAH = Ukrainas grivna
UGX = Ugandas šiliņš|USh|0
USD = ASV dolārs|US$
UYU = Urugvajas peso|$U
UZS = Uzbekistānas sums||0
VEB = Venecuēlas bolivārs|||1
VEF = Venecuēlas stiprais bolivārs|Bs.F.
VND = Vjetnamas dongi|₫|0
VUV = Vanuatu vatu|VT|0
WST = Samoa tala|WS$
XAF = Centrālāfrikas CFA franks|FCFA|0
XAG = sudrabs|||1
XAU = zelts|||1
XBA = Eiropas norēķinu vienība EURCO|||1
XBB = Eiropas naudas vienība|||1
XBC = Eiropas norēķinu vienība (XBC)|||1
XBD = Eiropas norēķinu vienība (XBD)|||1
XCD = Austrumkarību dolārs|EC$
XDR = Speciālās aizņēmuma tiesības|||1
XEU = Eiropas norēķinu vienība|||1
XFO = Francijas zelta franks|||1
XFU = Francijas UIC franks|||1
XOF = Rietumāfrikas CFA franks|CFA|0
XPD = pallādijs|||1
XPF = CFP franks|CFPF|0
XPT = platīns|||1
XTS = Testa valūtas kods|||1
XXX = nezināma vai nederīga valūta|||1
YER = Jemenas riāls|YR|0
ZAR = Dienvidāfrikas rands|R
ZMK = Zambijas kvača|ZK|0
ZWD = Zimbabves dolārs|Z$|0|1
ZWL = Zimbabves dolārs (2009)|||1
