Veritas logo

Veritas

Build Docs NuGet

Veritas is a .NET library for validating and generating a wide range of real‑world identifiers across finance, tax, energy, identity, logistics and more.

⚠️ Caution Most of this code was agentically coded. Review and test thoroughly before relying on it in production. Feedback via GitHub issues and merge requests is greatly appreciated.

Install

dotnet add package Veritas --version 1.0.3

Usage

// Validate an IBAN
var ok = Finance.Iban.TryValidate("FR14 2004 1010 0505 0001 3M02 606", out var iban);
Console.WriteLine(ok);                      // True

// Generate an IMEI
Telecom.Imei.TryGenerate(default, stackalloc char[15], out var written);

// Bulk generate GTIN-13 codes
foreach (var s in Bulk.GenerateMany((dst, rng) => {
    var ok = Logistics.Gtin.TryGenerate(13, new GenerationOptions { Seed = rng.Next() }, dst, out var w);
    return (ok, w);
}, count: 3, seed: 42))
{
    Console.WriteLine(s);
}

Algorithms

  • Luhn (mod 10 and base-36)
  • ISO 7064 (mod 11,10; mod 97; mod 37,2; mod 37,36)
  • GS1 mod 10
  • Weighted mod 11 variants (custom weights)
  • ISO 6346 container check digit
  • MRZ (ICAO 9303 7-3-1 pattern)
  • Base58Check codec
  • Verhoeff checksum
  • Damm checksum
  • Checksum strategies via IChecksum interface and transliteration helpers

Supported identifiers

Finance

Identifier Country/Region Validation & Generation Docs
IBAN International ISO 7064 mod 97; BBAN-based generation Iban
BIC/SWIFT International format check Bic
ISIN International Luhn checksum Isin
RF Creditor Reference International ISO 11649 mod 97; generation Rf
SEPA Creditor Identifier EU ISO 7064 mod 97 checksum; generation SepaCreditorIdentifier
Structured Reference (OGM) BE mod 97 checksum; generation Ogm
RIB FR mod 97 checksum; generation Rib
CCC ES dual mod 11 checksum; generation Ccc
Payment card PAN International Luhn checksum; test generation Pan
ABA Routing US weighted mod 11 checksum AbaRouting
CLABE Mexico weighted mod 11 checksum; generation Clabe
LEI International ISO 7064 mod 97 checksum; generation Lei
SEDOL UK weighted mod 10 checksum; generation Sedol
CUSIP US/Canada weighted mod 10 checksum; generation Cusip
Market Identifier Code (MIC) Global structural check MarketIdentifierCode
WKN Germany structural check Wkn
FIGI Global Luhn check digit; generation Figi
CHIPS Participant ID US format check; generation ChipsParticipantId

Energy

Identifier Country/Region Validation & Generation Docs
EIC International ISO 7064 mod 37,2 checksum; generation Eic
MPAN GB weighted mod 11 checksum; generation Mpan
MPRN GB length & format Mprn
Energy EAN NL GS1 mod 10 checksum; generation EnergyEan
CUPS ES mod 529 checksum; generation Cups
MaLo DE weighted checksum; generation Malo
MeLo DE weighted checksum; generation Melo
ZPN DE weighted checksum; generation Zpn
PRM FR structural check Prm
POD IT structural check Pod
PDR IT structural check Pdr

Identity

Identifier Country/Region Validation & Generation Docs
UUID/GUID Global structural check; generation Uuid
ULID Global Crockford base32 checksum; generation Ulid
NanoID Global custom alphabet; generation NanoId
KSUID Global base62; generation Ksuid
Email Global syntax check Email
Phone Global E.164 length/format Phone
Domain Global hostname rules Domain
BCP47 tag Global structural check Bcp47
Base58Check Global Base58 + double SHA-256 Base58Check
Aadhaar India Verhoeff checksum; test generation Aadhaar
National ID Luxembourg Luhn + Verhoeff; test generation NationalId
CURP Mexico mod 10 checksum; generation Curp
National ID South Africa Luhn checksum; generation NationalId
Teudat Zehut Israel weighted mod 10 checksum; generation TeudatZehut
NIR (INSEE) France mod 97 key; generation Nir
ICAO MRZ (TD3) Global MRZ checksums; generation IcaoMrz

Tax

Country Identifier Validation & Generation Docs
EU/GB EORI structural check; generation Eori
AR CUIT mod 11 checksum; generation Cuit
AU ABN weighted mod 11 checksum; generation Abn
AU TFN weighted mod 11 checksum; generation Tfn
BE National Number mod 97 checksum; generation Nn
BR CPF mod 11 checksum; generation Cpf
BR CNPJ mod 11 checksum; generation Cnpj
CA SIN Luhn checksum; generation Sin
CA BN mod 11 checksum; generation Bn
CL RUT mod 11 checksum; generation Rut
CN USCC weighted mod 31 checksum; generation Uscc
CZ Rodne cislo mod 11 checksum; generation RodneCislo
DE UStIdNr mod 97 checksum; generation UstIdNr
DE IdNr mod 11 checksum; generation IdNr
ES NIF mod 11 checksum; generation Nif
ES NIE mod 11 checksum; generation Nie
ES CIF mod 11 checksum; generation Cif
FI HETU mod 31 checksum; generation Hetu
FR Siren mod 11 checksum Siren
FR Siret mod 11 checksum Siret
FR VAT ISO 7064 mod 97 checksum Vat
GR AFM mod 11 checksum; generation Afm
HU Adoszam weighted mod 10 checksum; generation Adoszam
HR OIB ISO 7064 mod 11,10 checksum; generation Oib
RO CNP mod 11 checksum; generation Cnp
BG EGN weighted checksum; generation Egn
SI EMSO mod 11 checksum; generation Emso
RS JMBG mod 11 checksum; generation Jmbg
BA JMBG mod 11 checksum; generation Jmbg
MK EMBG mod 11 checksum; generation Embg
CH AHV ISO 7064 mod 11,10 checksum; generation Ahv
CH UID mod 10 (EAN) checksum; generation Uid
AT UID weighted mod 10 checksum; generation Uid
IS Kennitala mod 11 checksum; generation Kennitala
LT Asmens kodas two-stage mod 11 checksum; generation AsmensKodas
LV Personas kods mod 11 checksum; generation PersonasKods
EE Isikukood two-stage mod 11 checksum; generation Isikukood
DK CPR structural check; generation Cpr
CO NIT mod 11 checksum; generation Nit
PE RUC weighted checksum; generation Ruc
TR TCKN parity checks; generation Tckn
IT Codice Fiscale position table check; generation CodiceFiscale
MX RFC mod 11 check; generation Rfc
SG UEN mod 11 check; generation Uen
IE PPSN mod 23 checksum; generation Ppsn
IN PAN mod 36 checksum; generation Pan
IN GSTIN mod 36 checksum; generation Gstin
IT PIVA mod 11 checksum Piva
NL BSN mod 11 checksum Bsn
NL BTW mod 11 checksum Btw
NO Fodselsnummer mod 11 checksum; generation Fodselsnummer
NO KID mod 10/11 checksum; generation Kid
NZ IRD mod 11 checksum Ird
PL NIP mod 11 checksum Nip
PL REGON mod 11 checksum Regon
PL PESEL weighted mod 10 checksum Pesel
PT NIF mod 11 checksum; generation Nif
SE Personnummer Luhn checksum Personnummer
SE OrgNr mod 10 checksum OrgNr
SK Rodne cislo mod 11 checksum; generation RodneCislo
UK NINO structural check Nino
UK UTR mod 97 checksum; generation Utr
UK VAT mod 97 checksum Vat
UK Company Number structural check CompanyNumber
US SSN structural check; generation Ssn
US EIN prefix check Ein
US ITIN structural check Itin

Logistics

Identifier Country/Region Validation & Generation Docs
GTIN/EAN/UPC International GS1 mod 10 checksum; generation Gtin
GLN International GS1 mod 10 checksum; generation Gln
SSCC International GS1 mod 10 checksum; generation Sscc
GSRN International GS1 mod 10 checksum; generation Gsrn
GRAI International GS1 mod 10 checksum; generation Grai
GSIN International GS1 mod 10 checksum; generation Gsin
GDTI International GS1 mod 10 checksum; generation Gdti
GIAI International structural check; generation Giai
UPU S10 International weighted mod 11 checksum; generation UpuS10
VIN International transliteration + weighted checksum Vin
ISO 6346 International ISO 6346 checksum Iso6346
AWB International mod 7 checksum; generation Awb
IMO International mod 10 checksum; generation Imo

Telecom

Identifier Country/Region Validation & Generation Docs
IMEI Global Luhn checksum; generation Imei
IMSI Global structural check; generation Imsi
MEID Global Luhn checksum; generation Meid
ICCID Global Luhn checksum; generation Iccid
MAC Global format + OUI Mac
OUI Global format check Oui
ASN Global range check; generation Asn
IPv4 Global structural check Ipv4
IPv6 Global structural check Ipv6

Intellectual Property

Identifier Country/Region Validation & Generation Docs
IPOS Application Number Singapore Damm checksum; test generation IpApplicationNumber
ISWC International mod 10 checksum; generation Iswc
Patent Application Number International structural check; generation PatentApplicationNumber
Patent Publication Number International structural check; generation PatentPublicationNumber
Trademark Registration Number International structural check; generation TrademarkRegistrationNumber
Copyright Registration Number International structural check; generation CopyrightRegistrationNumber
Identifier Country/Region Validation & Generation Docs
European Case Law Identifier (ECLI) EU structural check; generation Ecli
Court Case Number US structural check; generation CourtCaseNumber
European Patent Office Publication ID EU structural check; generation EuropeanPatentOfficePublicationId

Education & Media

Identifier Country/Region Validation & Generation Docs
ISBN-10 International weighted checksum; generation Isbn10
ISBN-13 International GS1 mod 10 checksum; generation Isbn13
ISSN International weighted checksum; generation Issn
DOI International structural check Doi
ISNI International ISO 7064 mod 11,2 checksum; generation Isni
ISMN International mod 10 checksum; generation Ismn
ISRC International structural check Isrc
ROR ID International structural check; generation RorId
Scopus Author ID International structural check; generation ScopusAuthorId
ResearcherID International structural check; generation ResearcherId
GRID ID International structural check; generation GridId

Healthcare

Identifier Country/Region Validation & Generation Docs
NHS Number UK mod 11 checksum; generation NhsNumber
ORCID International ISO 7064 mod 11,2 checksum; generation Orcid
SNOMED CT Concept ID International Verhoeff checksum; test generation SctId
NPI US Luhn checksum; generation Npi
DEA Number US weighted checksum; generation DeaNumber
Unique Device Identifier (UDI) Global format check; generation Udi
National Drug Code (NDC) US structural check; generation Ndc
ICD Code International format check; generation IcdCode
RxNorm Identifier US structural check; generation RxNormIdentifier
NDC Package Code US structural check; generation NdcPackageCode

Transportation / Vehicles

Identifier Country/Region Validation & Generation Docs
FAA N-number US format check; generation FaaNNumber
ICAO Airline Code International format check; generation IcaoAirlineCode
IATA Airline Code International format check; generation IataAirlineCode
Flight Number International format check; generation FlightNumber
Train UIC Number International mod 11 checksum; generation TrainUicNumber
IMO Call Sign International format check; generation ImoCallSign

Crypto / Blockchain

Identifier Country/Region Validation & Generation Docs
Bitcoin address Global Base58 + double SHA-256 BitcoinAddress
Ethereum transaction hash Global structural check; generation EthereumTransactionHash
Chain ID Global numeric; generation ChainId

Government / Public Administration

Identifier Country/Region Validation & Generation Docs
Passport Number Global format check; generation PassportNumber
Visa Number Global format check; generation VisaNumber
Driver Licence Number (CA) US structural check; generation DriverLicenseNumber
Driver Licence Number (NY) US structural check; generation DriverLicenseNumber
Driver Licence Number (FL) US structural check; generation DriverLicenseNumber
Driver Licence Number (TX) US structural check; generation DriverLicenseNumber
Driver Licence Number (ON) CA structural check; generation DriverLicenceNumber
Driver Licence Number (BC) CA structural check; generation DriverLicenceNumber
Driver Licence Number (QC) CA structural check; generation DriverLicenceNumber
Driver Licence Number (NSW) AU structural check; generation DriverLicenceNumber
Driver Licence Number (VIC) AU structural check; generation DriverLicenceNumber
Driver Licence Number (QLD) AU structural check; generation DriverLicenceNumber
Driver Licence Number (WA) AU structural check; generation DriverLicenceNumber
Licencia de Conducir (CDMX) MX structural check; generation LicenciaDeConducir
Licencia de Conducir (JAL) MX structural check; generation LicenciaDeConducir
Licencia de Conducir (NLE) MX structural check; generation LicenciaDeConducir
Licencia de Conducir (BCN) MX structural check; generation LicenciaDeConducir
Führerscheinnummer DE structural check; generation Fuehrerscheinnummer
Permis de Conduire FR structural check; generation PermisDeConduire
Patente di guida IT structural check; generation PatenteDiGuida
Rijbewijsnummer NL structural check; generation Rijbewijsnummer
Körkortsnr SE format check; generation Korkortsnr
Driving Licence Number IN structural check; generation DrivingLicenceNumber
Driver Licence Number NZ structural check; generation DriverLicenceNumber
Driver Licence Number IE structural check; generation DriverLicenceNumber
Licencia Nacional de Conducir AR structural check; generation LicenciaNacionalConducir
Driving Licence Number CN structural check; generation DrivingLicenceNumber
Driving Licence Number UK Luhn base36 check; generation DrivingLicenceNumber
Número de permiso de conducción ES mod 23 check; generation NumeroPermisoConduccion
South African Licence Number ZA Luhn checksum; generation SouthAfricanLicenceNumber
CNH BR mod 11 checksum; generation Cnh
Japanese Driver Licence Number JP mod 11 checksum; generation JapaneseDriverLicenseNumber

Standards & Protocols

Identifier Country/Region Validation & Generation Docs
IEC Standard Number International format check; generation IecStandardNumber
ISO Standard Number International format check; generation IsoStandardNumber
RFC Number International format check; generation RfcNumber
UL File Number International format check; generation UlFileNumber

Geospatial & Infrastructure

Identifier Country/Region Validation & Generation Docs
Geohash International format check; generation Geohash
Plus Code (Open Location Code) International format check; generation PlusCode
Flurstücknummer DE structural check; generation Flurstuecknummer
Kadastrale Aanduiding NL structural check; generation KadastraleAanduiding

Future identifiers

Finance

  • Bank Routing Numbers for additional countries
  • International Securities Broker numbers

Tax

  • US state tax IDs
  • EU VAT formats for remaining member states

Energy

  • US EIA plant codes

Identity & Telecom

  • OpenID Connect subject identifiers

Logistics

Contributions for these and other identifiers are welcome!