Modern PHP 8.3+ library for validating and parsing Polish identification numbers — PESEL, NIP, REGON, and KRS. Rich value objects, detailed error reasons, zero production dependencies.
composer require slashlab/numerikuse SlashLab\Numerik\Numerik;
// Simple boolean check
Numerik::pesel()->isValid('92060512186'); // true
Numerik::nip()->isValid('5260250274'); // true
// Rich validation result with failure reasons
$result = Numerik::pesel()->validate('92060512186');
$result->isValid; // true
$result = Numerik::pesel()->validate('00000000000');
$result->isFailed(); // true
$result->getFirstFailure()->reason; // ValidationFailureReason::AllZeros
// Parse to value object
$pesel = Numerik::pesel()->parse('92060512186');
$pesel->getBirthDate()->format('Y-m-d'); // '1992-06-05'
$pesel->getGender(); // Gender::FemaleFull documentation at numerik.slashlab.pl
composer require slashlab/numerik-laravel// In a Form Request
public function rules(): array
{
return [
'pesel' => ['required', new PeselRule()],
'nip' => ['required', new NipRule()],
];
}See CHANGELOG.md.
See CONTRIBUTING.md.
MIT — see LICENSE.
If this saved you time → ☕ Buy me a coffee