Historical & Retired ISO 4217 Currency Codes
Reference of retired and replaced ISO 4217 currency codes including the Deutsche Mark, French Franc, Italian Lira, and recently replaced currencies. Essential for legacy system maintenance.
Detailed Explanation
Historical Currency Codes
Over the decades, many currencies have been replaced, redenominated, or retired. ISO 4217 assigns new codes when currencies change, and the old codes are marked as historical. Developers maintaining legacy systems or processing historical financial data frequently encounter these codes.
Currencies Replaced by the Euro
When the Euro was adopted in stages from 1999 to 2023, numerous national currencies were retired:
| Old Code | Currency | Country | Euro Date |
|---|---|---|---|
| DEM | Deutsche Mark | Germany | 2002 |
| FRF | French Franc | France | 2002 |
| ITL | Italian Lira | Italy | 2002 |
| ESP | Spanish Peseta | Spain | 2002 |
| NLG | Dutch Guilder | Netherlands | 2002 |
| BEF | Belgian Franc | Belgium | 2002 |
| ATS | Austrian Schilling | Austria | 2002 |
| FIM | Finnish Markka | Finland | 2002 |
| IEP | Irish Pound | Ireland | 2002 |
| PTE | Portuguese Escudo | Portugal | 2002 |
| GRD | Greek Drachma | Greece | 2002 |
| LVL | Latvian Lats | Latvia | 2014 |
| LTL | Lithuanian Litas | Lithuania | 2015 |
| HRK | Croatian Kuna | Croatia | 2023 |
Recently Changed Currencies
- VEF (Venezuelan Bolivar Fuerte) → VES (Bolivar Soberano) — 2018 redenomination
- MRO (Mauritanian Ouguiya) → MRU — 2018 redenomination
- STD (Sao Tome Dobra) → STN — 2018 redenomination
- ZWL (Zimbabwe Dollar) — suspended multiple times, reintroduced 2019
- SSP (South Sudanese Pound) — introduced 2011
Handling Historical Codes in Software
// When processing historical transactions
const HISTORICAL_TO_CURRENT = {
DEM: { code: "EUR", rate: 1.95583 }, // Fixed conversion rate
FRF: { code: "EUR", rate: 6.55957 },
ITL: { code: "EUR", rate: 1936.27 },
HRK: { code: "EUR", rate: 7.53450 },
};
function convertHistorical(amount, oldCode) {
const mapping = HISTORICAL_TO_CURRENT[oldCode];
if (mapping) {
return {
amount: amount / mapping.rate,
currency: mapping.code,
};
}
return { amount, currency: oldCode };
}
Why Keep Historical Codes
- Regulatory compliance: Financial records must preserve original currency
- Auditing: Historical transactions referenced in their original currency
- Data migration: Legacy databases may contain old codes
- Reporting: Tax filings may reference defunct currencies
Use Case
Banks, financial institutions, and accounting systems that process historical data or maintain long-lived records encounter retired currency codes regularly. When migrating legacy databases, generating historical reports, or complying with regulatory requirements, developers need to correctly map old currency codes to their current equivalents while preserving the original data for audit purposes.