Veritas
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
IChecksuminterface 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 |
| Global | syntax check | ||
| 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 |
Legal
| 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!