| Crates.io | vat_id_validator |
| lib.rs | vat_id_validator |
| version | 0.2.0 |
| created_at | 2025-12-13 20:21:31.156601+00 |
| updated_at | 2025-12-13 21:09:32.89979+00 |
| description | A comprehensive library for validating VAT numbers, including format and checksum verification for 30+ countries. |
| homepage | |
| repository | https://github.com/roksprogar/vat-id-validator |
| max_upload_size | |
| id | 1983374 |
| size | 164,537 |
Validate VAT numbers for European Union countries (and several other countries), with checksum verification.
Many libraries only check if a VAT number looks right (regex). vat_id_validator checks if it is right.
It verifies the checksum of the VAT number using country-specific algorithms (Luhn, Modulo 97, weighted sums, etc.). This means you can catch typos, transposed digits, and fake numbers instantly, without making a single network request to flaky government APIs like VIES.
Don't guess! If you know the country, validate strictly against it.
// O(1) lookup - 2.3x faster than standard check!
let result = check_vat_by_country("GB999000005", "GB");
Enable the serde feature to serialize results straight to JSON.
{
"value": "GB999000005",
"is_valid": true,
"is_valid_format": true,
"is_supported_country": true,
"country_name": "United Kingdom"
}
Got a number but don't know where it's from?
use vat_id_validator::identify_country;
// Returns valid results for ALL matching countries
let matches = identify_country("999000005");
// Matches:
// - United Kingdom (it tries adding "GB" automatically!)
// - Any other country where "999000005" is valid
## Installation
Add this to your `Cargo.toml`:
```toml
[dependencies]
vat_id_validator = { version = "0.2.0", features = ["serde"] }
use vat_id_validator::check_vat;
fn main() {
// Valid UK VAT number
assert!(check_vat("GB999000005").is_valid);
// Invalid format
assert!(!check_vat("GB123").is_valid);
// Valid format but invalid checksum
assert!(!check_vat("GB999999974").is_valid);
}
We take "instant" seriously.
| Operation | Time |
|---|---|
check_vat (heuristic) |
~1.06 ยตs |
check_vat_by_country (direct) |
~460 ns |
Measured on M-series Mac. Your mileage may vary, but it will be fast.
MIT / Apache-2.0