Polish VAT Identification (NIP) number validator.
- iOS 13+ / macOS 10.15+ / tvOS 13+
- Swift 6.1+
- Xcode 16.4+
Add to your Package.swift:
dependencies: [
.package(url: "https://github.com/quver/VATIdValidator.git", from: "2.0.0")
]Or add it directly in Xcode via File → Add Package Dependencies.
let validator = VATIdValidator(5260250274)
do {
try validator.validate()
// Valid NIP
} catch VATIdValidator.ValidationError.incorrectLength {
// NIP must have exactly 10 digits
} catch VATIdValidator.ValidationError.invalidDigit {
// NIP contains non-digit characters
} catch VATIdValidator.ValidationError.checkSumNotMatch {
// Checksum verification failed
}if 5260250274.isValidVATId { }
if "5260250274".isValidVATId { }
if 5260250274.0.isValidVATId { }VATIdValidator([5, 2, 6, 0, 2, 5, 0, 2, 7, 4]) // [Int]
VATIdValidator(5260250274) // BinaryInteger
VATIdValidator(5260250274.0) // Double
VATIdValidator("5260250274") // StringFor numeric inputs (BinaryInteger, Double), negative numbers and non-finite or out-of-range Double values (.nan, .infinity, values outside the Int range) are treated as invalid input rather than a valid or crashing VAT ID. A fractional Double is truncated toward zero before validation, so 5260250274.7 validates the same as 5260250274.
For String inputs, all non-digit characters — dashes, spaces, letters, including a leading - — are ignored as formatting separators, and validation runs on the remaining digits (so "526-025-02-74" is valid).
Full API documentation is available at quver.github.io/VATIdValidator.