Skip to content

KRS

KRS (Krajowy Rejestr Sądowy) is Poland’s national court register number assigned to legal entities. It is a 10-digit sequential registry number.

use SlashLab\Numerik\Numerik;
// Boolean
Numerik::krs()->isValid('0000127206'); // true
// Numbers without leading zeros are accepted and normalised
Numerik::krs()->isValid('127206'); // true
// Rich result
$result = Numerik::krs()->validate('0000127206');
$result->isValid; // true
// Parse to value object
$krs = Numerik::krs()->parse('0000127206');
// Null on failure instead of exception
$krs = Numerik::krs()->tryParse('bad-input'); // null

parse() and tryParse() return a SlashLab\Numerik\ValueObjects\Krs instance.

MethodReturn typeDescription
getRaw()stringThe original input, untouched.
getNormalized()stringRaw digits as provided (no extra padding stored).
__toString()stringSame as getNormalized().
MethodReturn typeDescription
getFormatted()stringZero-padded to 10 digits, e.g. 0000127206.
getNumericValue()intNumeric integer value of the KRS number.
$krs = Numerik::krs()->parse('0000127206');
$krs->getRaw(); // '0000127206'
$krs->getNormalized(); // '0000127206'
$krs->getFormatted(); // '0000127206'
$krs->getNumericValue(); // 127206
// Short form — leading zeros are not required on input
$krs = Numerik::krs()->parse('127206');
$krs->getRaw(); // '127206'
$krs->getNormalized(); // '127206'
$krs->getFormatted(); // '0000127206'
$krs->getNumericValue(); // 127206

KRS is a sequential registry number with no checksum. Validation is structural only:

  1. Strip spaces. Assert between 1 and 10 digits remain.
  2. Assert all remaining characters are digits.
  3. Assert the numeric value is not zero.

A number that passes these checks is structurally valid — it conforms to the KRS format. It may or may not be an actually registered entity.

ReasonValueWhen
InvalidLengthinvalid_lengthInput has more than 10 digits after normalisation.
InvalidCharactersinvalid_charactersNon-digit characters remain after stripping whitespace.
AllZerosall_zerosAll digits are zero — numeric value is 0, which is not a valid registry number.
AllSameDigitall_same_digitAll 10 digits are identical — strict mode only.
If this saved you time → ☕ Buy me a coffee