BIC, VIN, ISIN, LEI, container: catch the typo without pretending the thing exists
ISO 9362 / 3779 / 6166 / 17442 / 6346 checksums in one place. A valid check digit is not a registration. Country is required for tax IDs.
Payment files, KYC forms and bills of lading fail on identifiers that are one character off. The cheap, honest thing to do is run the published checksum and stop. The expensive thing is to tell the customer the bank / vehicle / security / container exists when you have only checked arithmetic.
What each endpoint actually checks
- BIC (ISO 9362) — 8 or 11 characters, location code cannot start with 0 or 1 or use the letter O. No checksum. Well-known 8-character codes resolve to a name; others return
bankName: null. - VIN (ISO 3779) — 17 characters, I/O/Q forbidden, WMI region, optional manufacturer table, check digit compared not required.
- ISIN (ISO 6166) — letters expanded to two digits (A=10…Z=35), then Luhn.
US0378331005(Apple) is the usual test vector. - LEI (ISO 17442) — ISO 7064 mod 97-10 over all 20 characters, remainder must be 1. Same family as IBAN. GLEIF is not called.
- Container (ISO 6346) — 4 letters + 6 digits + check.
CSQU3054383checks to 3. Owner code is not resolved to a company. - TIN — country is required. The same 9 digits are a well-formed identifier in more than one country; guessing is how you store the wrong person's tax number. Published checksums (SIREN, ABN, CPF, NIP, BSN, NIF, OIB, TCKN/VKN…) run; US EIN / UK UTR return
checksum: not-verified.
curl -s 'https://api.temsor.com/v1/finance/bic?bic=ISBKTRISXXX' curl -s 'https://api.temsor.com/v1/id/vin?vin=1M8GDM9AXKP042788' curl -s 'https://api.temsor.com/v1/id/tin?tin=51%20824%20753%20556&country=AU'
Each response includes a warning that restates the gap. If you need "this LEI is currently registered", that is GLEIF's free API, not this one. If you need "this BIC is live", that is the SWIFT directory. Mixing those questions with a checksum is how onboarding files get confident and wrong.
Frequently asked
If the BIC is valid, can I pay that bank?
No. ISO 9362 has no check digit. "Valid" means the string could be a BIC (length, country, forbidden location characters). The SWIFT directory is a paid subscription; we do not query it.
Why does a VIN with a wrong check digit still come back valid?
The 9th-character check is mandatory in North America (FMVSS 115) and routinely unused in Europe. Failing the whole VIN on that basis would reject real European vehicles. checkDigitMatch tells you; valid stays true if the 17-character form is legal.
Endpoints used here
Open the reference, run it in the browser, no key required.
/v1/id/vinOpen the reference, run it in the browser, no key required.
/v1/finance/isinOpen the reference, run it in the browser, no key required.
/v1/id/leiOpen the reference, run it in the browser, no key required.
/v1/shipping/containerOpen the reference, run it in the browser, no key required.
/v1/id/tinOpen the reference, run it in the browser, no key required.
/v1/iban/validateOpen the reference, run it in the browser, no key required.