VAT-EU
VAT-EU (Numer VAT UE) to numer identyfikacji podatkowej stosowany w transakcjach wewnątrzunijnych. W przypadku polskich podatników składa się z dwuliterowego prefiksu kraju PL oraz standardowego 10-cyfrowego numeru NIP. Walidacja polega na usunięciu prefiksu i zastosowaniu algorytmu NIP (suma kontrolna MOD-11).
use SlashLab\Numerik\Numerik;
// Walidacja logicznaNumerik::vatEu()->isValid('PL5260250274'); // true
// Separatory i małe litery w prefiksie są usuwane podczas normalizacjiNumerik::vatEu()->isValid('PL526-025-02-74'); // trueNumerik::vatEu()->isValid('pl5260250274'); // true
// Szczegółowy wynik$result = Numerik::vatEu()->validate('PL5260250274');$result->isValid; // true
// Parsowanie do obiektu wartości$vatEu = Numerik::vatEu()->parse('PL5260250274');
// null zamiast wyjątku w przypadku błędu$vatEu = Numerik::vatEu()->tryParse('błędne-wejście'); // nullAPI obiektu wartości
Dział zatytułowany „API obiektu wartości”parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\VatEu.
| Metoda | Typ zwracany | Opis |
|---|---|---|
getRaw() | string | Oryginalne wejście bez zmian. |
getNormalized() | string | PL + 10 cyfr, np. PL5260250274. |
__toString() | string | Identyczne z getNormalized(). |
Formatowanie i metadane
Dział zatytułowany „Formatowanie i metadane”| Metoda | Typ zwracany | Opis |
|---|---|---|
getCountryCode() | string | Zawsze PL. |
getNip() | string | 10-cyfrowy NIP bez prefiksu kraju. |
getFormatted() | string | PL + standardowy format NIP, np. PL526-025-02-74. |
Przykłady
Dział zatytułowany „Przykłady”$vatEu = Numerik::vatEu()->parse('PL5260250274');
$vatEu->getRaw(); // 'PL5260250274'$vatEu->getNormalized(); // 'PL5260250274'$vatEu->getCountryCode(); // 'PL'$vatEu->getNip(); // '5260250274'$vatEu->getFormatted(); // 'PL526-025-02-74'
// Separatory są usuwane, prefiks PL jest pisany wielkimi literami$vatEu = Numerik::vatEu()->parse('pl526-025-02-74');
$vatEu->getRaw(); // 'pl526-025-02-74'$vatEu->getNormalized(); // 'PL5260250274'Algorytm walidacji
Dział zatytułowany „Algorytm walidacji”- Usuń spacje i myślniki. Odrzuć wejścia dłuższe niż 32 znaki.
- Wymagaj, aby pierwsze dwa znaki były
PL(bez rozróżniania wielkości liter) — inaczej błądInvalidFormat. - Usuń prefiks. Wymagaj dokładnie 10 cyfr — inaczej błąd
InvalidLength. - Zastosuj sumę kontrolną NIP MOD-11 — patrz sekcja Algorytmy.
Przyczyny błędów
Dział zatytułowany „Przyczyny błędów”| Przyczyna | Wartość | Kiedy |
|---|---|---|
InvalidLength | invalid_length | Część NIP nie ma dokładnie 10 cyfr lub surowe wejście przekracza 32 znaki. |
InvalidFormat | invalid_format | Brak prefiksu PL lub część NIP zaczyna się od 000. |
InvalidCharacters | invalid_characters | Część NIP zawiera znaki niebędące cyframi. |
InvalidChecksum | invalid_checksum | Cyfra kontrolna MOD-11 nie zgadza się. |
AllSameDigit | all_same_digit | NIP składa się z jednej powtarzającej się cyfry — tylko w trybie ścisłym. |
If this saved you time → ☕ Buy me a coffee