@exodus/stdnum
Library for validating and identifying tax IDs, national identification numbers, and passports across 70+ countries.
Built on top of stdnum, with additional validators and customizations tailored for KYC and payment platform integrations.
Installation
pnpm add @exodus/stdnum
Usage
getDocumentType
Returns the document type abbreviation for a valid identification number. Useful for determining which type of ID was provided when multiple formats are accepted.
import { getDocumentType } from '@exodus/stdnum'
getDocumentType('US', '123-45-6789') // 'ssn'
getDocumentType('AR', '20-05536168-2') // 'cuil'
getDocumentType('AR', '12345678') // 'dni'
getDocumentType('AU', 'M1234567') // 'passport'
getDocumentType('US', 'invalid') // undefined
compact
Returns the normalized form of a valid identification number, with separators and country prefixes removed. Uses the same validator as getDocumentType.
import { compact } from '@exodus/stdnum'
compact('US', '123-45-6789') // '123456789'
compact('GR', 'EL094259216') // '094259216'
compact('SE', '19121212-1212') // '121212+1212'
compact('US', 'invalid') // undefined
isValid
Simple boolean check for whether an identification number is valid for a given country.
import { isValid } from '@exodus/stdnum'
isValid('US', '123-45-6789') // true
isValid('US', 'invalid') // false
Supported Countries
| Country | Code | Document Types |
|---|---|---|
| Albania | AL | NIPT |
| Andorra | AD | NRT |
| Argentina | AR | CBU, DNI, CUIL, Passport |
| Armenia | AM | TIN, Passport |
| Australia | AU | TFN, ABN, ACN, Passport |
| Austria | AT | TIN, VSNR, UID, FN |
| Belarus | BY | UNP |
| Belgium | BE | NRRN, VAT, Passport |
| Belize | BZ | TIN |
| Bosnia and Herzegovina | BA | JMBG |
| Brazil | BR | CPF, CNPJ, Passport |
| Bulgaria | BG | UCN, PNF, VAT, Passport |
| Canada | CA | SIN, BC BHN, GST, PST, QST, Passport |
| Chile | CL | RUN |
| China | CN | RICN, USCC, Passport |
| Colombia | CO | NIT |
| Costa Rica | CR | CPF, CPJ, CR |
| Croatia | HR | OIB |
| Cyprus | CY | VAT |
| Czech Republic | CZ | RC, DIC, Passport |
| Denmark | DK | CPR, CVR |
| Ecuador | EC | CI, RUC |
| Egypt | EG | TN |
| El Salvador | SV | NIT |
| Estonia | EE | IK, KMKR, Passport |
| Faroe Islands | FO | VN |
| Finland | FI | HETU, ALV, Passport |
| France | FR | SPI, NIR, SIREN, SIRET, VAT, Passport |
| Germany | DE | Steuer ID, Passport, PWNR, STNR, SVNR, VAT |
| Ghana | GH | TIN |
| Greece | GR | AMKA, VAT |
| Guatemala | GT | CUI, NIT |
| Guinea | GN | NIFP |
| Hungary | HU | TIN, ANUM |
| Iceland | IS | Kennitala, VSK |
| India | IN | PAN, Aadhaar, EPIC, GSTIN, VID, Passport |
| Ireland | IE | PPSN, VAT, Passport |
| Israel | IL | HP, IDNR |
| Italy | IT | Codice Fiscale, AIC, VAT, Passport |
| Japan | JP | My Number, CN, Passport |
| Kenya | KE | PIN |
| Latvia | LV | VAT |
| Liechtenstein | LI | PEID |
| Lithuania | LT | Asmens, PVM |
| Luxembourg | LU | TIN, VAT |
| Malta | MT | TIN, VAT |
| Mauritius | MU | NID |
| Mexico | MX | CURP, RFC, CLABE |
| Moldova | MD | IDNO |
| Monaco | MC | VAT |
| Netherlands | NL | BSN, VAT, Passport |
| New Zealand | NZ | IRD, Passport |
| Norway | NO | Fødselsnummer, VAT, Orgnr |
| Paraguay | PY | National ID, RUC |
| Peru | PE | CUI, CE, RUC |
| Philippines | PH | TIN, Passport |
| Poland | PL | PESEL, VAT, Passport |
| Portugal | PT | NIF, CC, Passport |
| Romania | RO | CNP, VAT, Passport |
| Russia | RU | INN, Passport |
| Saudi Arabia | SA | TIN |
| Serbia | RS | JMBG |
| Slovakia | SK | VAT, RC |
| Slovenia | SI | VAT, EMSO, TIN |
| South Korea | KR | RRN, BRN, Passport |
| Spain | ES | NIE, NIF, NSS, Passport |
| Sweden | SE | TIN, VAT, Passport |
| Switzerland | CH | AHV, UID, VAT, Passport |
| Thailand | TH | TIN, Passport |
| Tunisia | TN | MF |
| United Arab Emirates | AE | Emirates ID |
| United Kingdom | GB | NINO, UTR, VAT, Passport |
| United States | US | SSN, ITIN |
| Uruguay | UY | CI, VAT, NIE |
Document Type Abbreviations
| Abbreviation | Full Name |
|---|---|
aadhaar | Indian Unique Identification Number |
abn | Australian Business Number |
acn | Australian Company Number |
ahv | Swiss Social Security Number |
aic | Italian Pharmaceutical Product Code |
alv | Finnish VAT Number |
amka | Greek Social Security Number |
anum | Hungarian VAT Number |
asmens | Lithuanian Personal Code |
bc_bhn | British Columbia Birth Health Number |
brn | Korean Business Registration Number |
bsn | Dutch Citizen Service Number |
cbu | Argentine Bank Account Number |
cc | Portuguese Citizen Card |
ce | Peruvian Foreigner Card |
ci | Identity Card (Ecuador/Uruguay) |
clabe | Mexican Bank Account Number |
cn | Japanese Corporate Number |
cnp | Romanian Personal Numeric Code |
cnpj | Brazilian Company Taxpayer Registry |
cf | Italian Fiscal Code |
cpf | Brazilian/Costa Rican Individual Taxpayer ID |
cpj | Costa Rican Legal Entity ID |
cpr | Danish Personal Identification Number |
cr | Costa Rican ID |
cui | Personal ID (Guatemala/Peru) |
cuil | Argentine Labor Identification Code |
curp | Mexican Population Registry Code |
cvr | Danish Business Registration Number |
dic | Czech VAT Number |
dni | Argentine National Identity Document |
emirates_id | UAE Emirates ID |
emso | Slovenian Unique Master Citizen Number |
epic | Indian Voter ID Card |
fn | Austrian Company Register Number |
fodselsnummer | Norwegian Birth Number |
gst | Canadian Goods and Services Tax Number |
gstin | Indian GST Identification Number |
hetu | Finnish Personal Identity Code |
hp | Israeli Company Number |
idno | Moldovan Company ID |
idnr | Israeli ID Number |
ik | Estonian Personal Identification Code |
inn | Russian Taxpayer Identification Number |
ird | New Zealand Inland Revenue Number |
itin | US Individual Taxpayer Identification Number |
jmbg | Unique Master Citizen Number (Bosnia/Serbia) |
kennitala | Icelandic Personal/Company ID |
kmkr | Estonian VAT Number |
mf | Tunisian Tax ID |
mn | Japanese My Number |
national_id | Paraguayan National ID |
nid | Mauritius National ID |
nie | Foreigner Identification Number (Spain/Uruguay) |
nif | Tax Identification Number (Spain/Portugal) |
nifp | Guinea Tax ID |
nino | UK National Insurance Number |
nipt | Albanian Business Tax Number |
nir | French Social Security Number |
nit | Tax ID Number (Colombia/Guatemala/El Salvador) |
nrrn | Belgian National Register Number |
nrt | Andorran Tax Number |
nss | Spanish Social Security Number |
oib | Croatian Personal Identification Number |
orgnr | Norwegian Organization Number |
pan | Indian Permanent Account Number |
passport | Passport Number |
peid | Liechtenstein Company ID |
pesel | Polish National Identification Number |
pin | Kenyan Personal Identification Number |
pnf | Bulgarian Foreigner Personal Number |
ppsn | Irish Personal Public Service Number |
pst | Canadian Provincial Sales Tax Number |
pvm | Lithuanian VAT Number |
pwnr | German Passport Card Number |
qst | Quebec Sales Tax Number |
rc | Birth Number (Czech/Slovakia) |
rfc | Mexican Federal Taxpayer Registry |
ricn | Chinese Resident Identity Card Number |
rrn | Korean Resident Registration Number |
ruc | Taxpayer Registry (Ecuador/Paraguay/Peru) |
run | Chilean National Identification Number |
sin | Canadian Social Insurance Number |
siren | French Company Registration Number |
siret | French Establishment Identification Number |
spi | French Tax Identification Number |
ssn | US Social Security Number |
steuer_id | German Tax Identification Number |
stnr | German Tax Number |
svnr | German Social Insurance Number |
tfn | Australian Tax File Number |
tin | Tax Identification Number (generic) |
tn | Egyptian Tax Number |
ucn | Bulgarian Unified Civil Number |
uid | Swiss Business ID, Austrian VAT Number |
unp | Belarusian Taxpayer Number |
uscc | Chinese Unified Social Credit Code |
utr | UK Unique Taxpayer Reference |
vat | Value Added Tax Number |
vid | Indian Virtual ID |
vn | Faroese V-Number |
vsk | Icelandic VAT Number |
vsnr | Austrian Social Security Number |
License
MIT