staticdata.dev
Menu
Datasets About Contact

Currencies

ISO 4217 active currency codes with their numeric codes, symbols, decimal precision (which determines minor unit handling for amounts), and the alpha-2 country codes of every territory that uses each currency. Useful for currency pickers, formatting amounts, and validating user input.

v1.0.0 MIT 155 records Updated 2026-04-25 stable Source:  ISO 4217

Quick fetch

Stable, immutable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/currencies.json

Or use as a typed import: import { currencies } from "https://staticdata.dev/v1/currencies.ts"

Formats

  • JSON 24.2 KB

    /v1/currencies.json

    Open

    min: 15.5 KB · /v1/currencies.min.json

  • CSV 4.9 KB

    /v1/currencies.csv

    Open
  • TypeScript 24.4 KB

    /v1/currencies.ts

    export const currencies

    type Currency = (typeof currencies)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
code string ISO 4217 alphabetic code EUR
name string English currency name Euro
numeric string ISO 4217 numeric code (zero-padded) 978
symbol string Currency symbol
decimals number Number of decimal places defining the minor unit 2
countries string[] ISO 3166-1 alpha-2 codes of countries using the currency ["AT","DE","FR"]

Preview

First 10 records.

Data preview
codenamenumericsymboldecimals
AEDUAE Dirham784د.إ2
AFNAfghani971؋2
ALLLek008L2
AMDArmenian Dram051֏2
ANGNetherlands Antillean Guilder532ƒ2
AOAKwanza973Kz2
ARSArgentine Peso032$2
AUDAustralian Dollar036$2
AWGAruban Florin533ƒ2
AZNAzerbaijan Manat9442

Showing 10 of 155. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/currencies.json | jq '.[0]'
JavaScript
import type { Currency } from "https://staticdata.dev/v1/currencies.ts";

const res = await fetch("https://staticdata.dev/v1/currencies.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const currencies: Currency[] = await res.json();
console.log(currencies[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/currencies.min.json") as r:
    currencies = json.load(r)

print(currencies[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/currencies.min.json")
	if err != nil { panic(err) }
	defer resp.Body.Close()

	var data []map[string]any
	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
		panic(err)
	}
	fmt.Println(data[0])
}
Rust
use serde_json::Value;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let body = ureq::get("https://staticdata.dev/v1/currencies.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

Only currently active ISO 4217 currencies are included. Funds codes (X-prefixed) and historic withdrawn currencies are excluded.

The decimals field is critical for displaying amounts. Currencies with 0 decimals (JPY, KRW, ISK, several CFA-zone currencies) should not be formatted with cents. Currencies with 3 decimals (BHD, JOD, KWD, OMR, TND, IQD, LYD) require three-digit minor units. Most are 2 decimals.

Symbols are the most common form in the issuing country’s primary script. There is no canonical authoritative source for currency symbols; we follow CLDR where it exists and Unicode otherwise.

The countries array lists every country that has the currency as legal tender. The Euro list is the longest. Some currencies (USD, EUR, XAF, XOF, XCD, XPF, NZD) are used by multiple countries.

Versioning

URLs under /v1/ are immutable. The data they return will not change in a way that breaks consumers. Schema-incompatible updates ship under a new version path. See the currencies changelog for this dataset's history.

Related datasets