Check any identifier's format and check digit
Paste an IBAN, BIC, EU VAT number, EAN/UPC/GTIN or ISBN. CheckDigit works out which it is and tells you whether the format and check digit are correct, and why not if they aren't.
Try:
This is a format check, not a compliance check.
A valid format or checksum does not prove that a bank account, VAT registration, bank or product exists, is active, or belongs to anyone in particular. For VAT registration status use the EU's VIES service; for payments, rely on your bank's own checks.
What it checks
- IBAN: ISO 13616 mod-97 check digits plus the country's length and BBAN layout from the SWIFT IBAN Registry (89 countries).
- BIC / SWIFT code: ISO 9362 structure and country code. No bank directory lookup.
- EU VAT number: format and check digit for all 27 member states and XI (Northern Ireland), offline. VIES is not queried.
- GTIN / EAN / UPC: EAN-8, UPC-A, EAN-13 and GTIN-14 with the GS1 check digit, plus UPC-A to EAN-13 conversion. UPC-E (8-digit zero-suppressed) is not supported.
- ISBN: ISBN-10 (mod 11) and ISBN-13 check digits, with ISBN-10 to ISBN-13 conversion and back.
When a check fails you get the reason, for example checksum fails, expected 7 or length is 21, expected 22 for DE.
Use it from code
curl -X POST https://checkdigit/v1/detect \
-H "Content-Type: application/json" \
-d '{"code": "DE89 3704 0044 0532 0130 00"}'
POST keeps the code out of the URL. For non-sensitive codes, GET /v1/detect/{code} works too.
Every endpoint is listed in the API docs. Light use works without an API key, with a per-IP rate limit.
Privacy
Codes are checked in memory and returned to you. They are not stored or logged; CheckDigit keeps request counts only. This checker sends the code in the request body, not the URL.