# 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

ADP = peseta andorrana||0|1
ARP = Peso arxentino (1983-1985)|||1
ARS = Peso arxentino|AR$
BEC = Franco belga (convertible)|||1
BEF = Franco belga|BF||1
BEL = Franco belga (financeiro)|||1
BOB = Boliviano|Bs
BOP = Peso boliviano|$b.||1
BOV = MVDOL boliviano|||1
BRB = Cruzeiro novo brasileiro (1967-1986)|||1
BRC = Cruzado brasileiro|||1
BRE = Cruzeiro brasileiro (1990-1993)|||1
BRL = Real brasileiro|R$
BRN = Cruzado novo brasileiro|||1
BRR = Cruzeiro brasileiro|||1
CAD = Dólar canadiano|CA$
CHF = Franco suizo
CLF = Unidades de fomento chilenas||0|1
CLP = Peso chileno|CL$|0
CNY = Iuan renminbi chinés|CN¥
COP = Peso colombiano|CO$|0
CRC = Colón costarricense|₡|0
CUP = Peso cubano|CU$
DEM = Marco alemán|DM||1
DKK = Coroa dinamarquesa|Dkr
DOP = Peso dominicano|RD$
ECS = Sucre ecuatoriano|||1
ECV = Unidade de valor constante ecuatoriana|||1
ESA = Peseta española (conta A)|||1
ESB = Peseta española (conta convertible)|||1
ESP = Peseta española|₧|0|1
EUR = Euro|€
FRF = Franco francés|₣||1
GBP = Libra esterlina|UK£
GIP = Libra de Xibraltar|GI£
GNF = Franco guineano|FG|0
GNS = Syli guineano|||1
GQE = Ekwele guineana|||1
GRD = Dracma grego|₯||1
GTQ = Quetzal guatemalteco
HNL = Lempira hondureño
HUF = Florín húngaro|Ft|0
IEP = Libra irlandesa|IR£||1
INR = Rupia india|Rs.
ISK = Coroa islandesa|Ikr|0
ITL = Lira italiana|IT₤|0|1
JPY = Ien xaponés|JP¥|0
LUC = Franco convertible luxemburgués|||1
LUF = Franco luxemburgués||0|1
LUL = Franco financeiro luxemburgués|||1
MAD = Dirham marroquí
MAF = Franco marroquí|||1
MXN = Peso mexicano|MX$
MXP = Peso de prata mexicano (1861-1992)|||1
MXV = Unidade de inversión mexicana|||1
NIC = Córdoba nicaragüense|||1
NIO = Córdoba de ouro nicaragüense|C$
NLG = Florín holandés|fl||1
NOK = Coroa norueguesa|Nkr
PAB = Balboa panameño|B/.
PEI = Inti peruano|I/.||1
PEN = Sol novo peruano|S/.
PES = Sol peruano|||1
PHP = Peso filipino|Php
PTE = Escudo portugués|Esc||1
PYG = Guaraní paraguaio|₲|0
RUB = Rublo ruso
RUR = Rublo ruso (1991-1998)|||1
SEK = Coroa sueca|Skr
SUR = Rublo soviético|||1
SVC = Colón salvadoreño|SV₡||1
USD = Dólar estadounidense|US$
UYI = Peso en unidades indexadas uruguaio|||1
UYP = Peso uruguaio (1975-1993)|||1
UYU = Peso uruguaio|$U
VEB = Bolívar venezolano|||1
VEF = Bolívar forte venezolano|Bs.F.
XAG = Prata|||1
XAU = Ouro|||1
XPD = Paladio|||1
XPT = Platino|||1
XXX = Unidade monetaria descoñecida ou non válida|||1
ZAR = Rand sudafricano|R
