Skip to content

Repository files navigation

VATIdValidator

CI GitHub license Swift Package Manager compatible

Polish VAT Identification (NIP) number validator.

Requirements

  • iOS 13+ / macOS 10.15+ / tvOS 13+
  • Swift 6.1+
  • Xcode 16.4+

Installation

Swift Package Manager

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.

Usage

Validation with error handling

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
}

Bool extensions

if 5260250274.isValidVATId { }
if "5260250274".isValidVATId { }
if 5260250274.0.isValidVATId { }

Supported input types

VATIdValidator([5, 2, 6, 0, 2, 5, 0, 2, 7, 4])  // [Int]
VATIdValidator(5260250274)                         // BinaryInteger
VATIdValidator(5260250274.0)                       // Double
VATIdValidator("5260250274")                       // String

For 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).

Documentation

Full API documentation is available at quver.github.io/VATIdValidator.

About

Polish VAT ID validator

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages