Перейти до вмісту

NIP на касі

Бізнес-клієнти потребують поля NIP на касі для отримання рахунку-фактури ПДВ. Плагін Polski for WooCommerce додає поле NIP з валідацією контрольної суми та верифікацією в базі GUS REGON. Дані компанії заповнюються автоматично.

Модуль NIP верифікує номер на трьох рівнях:

  1. Валідація формату - перевірка, чи номер складається з 10 цифр
  2. Валідація контрольної суми - алгоритм перевірки контрольної цифри NIP
  3. Верифікація GUS REGON - перевірка в базі Головного статистичного управління з автоматичним отриманням даних компанії

Перейдіть до WooCommerce > Налаштування > Polski > Каса та налаштуйте розділ “NIP”.

НалаштуванняЗначення за замовчуваннямОпис
Увімкнути поле NIPТакДодає поле NIP на сторінку каси
Обов’язкове полеНіЧи є NIP обов’язковим
Позиція поляПісля поля компаніїДе відображати поле NIP
Валідація контрольної сумиТакПеревіряє коректність номера NIP
Верифікація GUS REGONНіВерифікує NIP у базі GUS
Автоматичне заповненняТакОтримує дані компанії з GUS

Поле NIP може відображатися:

  • Завжди - видиме для всіх клієнтів
  • Після позначення чекбоксу “Chcę fakturę” - з’являється після позначення
  • Після введення назви компанії - з’являється, коли поле “Firma” заповнене

Рекомендований варіант - відображення після позначення чекбоксу “Chcę fakturę” - це найзрозуміліше для клієнта.

Валідація контрольної суми

Section titled “Валідація контрольної суми”

Алгоритм валідації NIP базується на системі ваг. Контрольна цифра (остання, десята цифра) обчислюється на основі дев’яти попередніх цифр.

Ваги для послідовних цифр NIP: 6, 5, 7, 2, 3, 4, 5, 6, 7

NIP: 1234567890
Сума = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214
Залишок = 214 mod 11
Якщо залишок == остання цифра NIP → NIP коректний

Плагін виконує цю валідацію як на стороні клієнта (JavaScript), так і на стороні сервера (PHP). Серверна валідація завжди активна - її неможливо обійти, вимкнувши JavaScript.

Обробка форматів введення

Section titled “Обробка форматів введення”

Плагін приймає NIP у різних форматах:

  • 1234567890 - тільки цифри
  • 123-456-78-90 - з дефісами
  • 123 456 78 90 - з пробілами
  • PL1234567890 - з префіксом країни

Усі формати нормалізуються до 10 цифр перед валідацією.

API GUS REGON вимагає ключа доступу. Плагін підтримує два середовища:

СередовищеURLКлючЗастосування
Тестовеhttps://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svcabcde12345abcde12345 (публічний тестовий ключ)Розробка та тестування
Продуктивнеhttps://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svcВласний ключ від GUSРобочий магазин

Отримання продуктивного ключа

Section titled “Отримання продуктивного ключа”
  1. Перейдіть на сайт: https://api.stat.gov.pl/Home/BirIndex
  2. Зареєструйтеся та увійдіть
  3. Подайте заявку на доступ до API REGON
  4. Ключ буде надіслано на вказану електронну адресу (час очікування: 1-3 робочі дні)

Налаштування в плагіні

Section titled “Налаштування в плагіні”
  1. Перейдіть до WooCommerce > Налаштування > Polski > Каса > NIP
  2. Увімкніть Верифікація GUS REGON
  3. Виберіть середовище: Тестове або Продуктивне
  4. Вставте ключ API (для продуктивного середовища)
  5. Збережіть налаштування

У тестовому режимі плагін використовує публічний тестовий ключ GUS. Тестова база містить фіктивні дані - вона не призначена для верифікації справжніх номерів NIP. Використовуйте його виключно під час розробки та тестування інтеграції.

Автоматичне отримання даних компанії

Section titled “Автоматичне отримання даних компанії”

Після верифікації NIP у GUS REGON плагін автоматично заповнює поля форми:

Поле WooCommerceДані з GUS
Firma (company)Назва компанії
Адреса 1Вулиця та номер
МістоНаселений пункт
Поштовий індексПоштовий індекс
ВоєводствоВоєводство

Клієнт бачить заповнені дані та може їх скоригувати перед оформленням замовлення.

Поведінка автоматичного заповнення

Section titled “Поведінка автоматичного заповнення”
  • Поля заповнюються лише якщо вони порожні або містять раніше отримані дані з GUS
  • Якщо клієнт вручну змінив дані, плагін не перезаписує зміни
  • Клієнт отримує повідомлення про отримання даних

Номер NIP зберігається як метадані замовлення:

  • ключ: _billing_nip
  • видимий в адміністративній панелі замовлення
  • доступний у шаблонах електронних листів
  • доступний для експорту у звітах

Відображення NIP у замовленні

Section titled “Відображення NIP у замовленні”

NIP автоматично відображається:

  • у деталях замовлення (адміністративна панель)
  • в електронному листі підтвердження замовлення
  • на сторінці “Мій обліковий запис > Замовлення”

Отримання NIP із замовлення

Section titled “Отримання NIP із замовлення”
$order = wc_get_order($order_id);
$nip = $order->get_meta('_billing_nip');
function validate_nip(string $nip): bool {
$nip = preg_replace('/[^0-9]/', '', $nip);
if (strlen($nip) !== 10) {
return false;
}
$weights = [6, 5, 7, 2, 3, 4, 5, 6, 7];
$sum = 0;
for ($i = 0; $i < 9; $i++) {
$sum += (int) $nip[$i] * $weights[$i];
}
return ($sum % 11) === (int) $nip[9];
}
add_filter('polski/checkout/validate_nip', function (bool $is_valid, string $nip): bool {
// Додаткова логіка валідації
// наприклад, перевірка у списку заблокованих NIP
$blocked_nips = ['0000000000'];
if (in_array($nip, $blocked_nips, true)) {
return false;
}
return $is_valid;
}, 10, 2);

Найпоширеніші проблеми

Section titled “Найпоширеніші проблеми”

Верифікація GUS повертає помилку

Section titled “Верифікація GUS повертає помилку”
  1. Перевірте, чи ключ API коректний та активний
  2. Перевірте, чи сервер може встановити з’єднання HTTPS з api.stat.gov.pl
  3. API GUS іноді недоступне - плагін обробляє timeout та відображає відповідне повідомлення
  4. Переконайтеся, що розширення PHP SOAP встановлено на сервері

Поле NIP не відображається

Section titled “Поле NIP не відображається”
  1. Перевірте, чи модуль NIP увімкнено
  2. Перевірте налаштування умовного відображення
  3. Очистіть кеш (плагіни кешування можуть кешувати форму каси)

Дані компанії не заповнюються автоматично

Section titled “Дані компанії не заповнюються автоматично”
  1. Перевірте консоль браузера на наявність помилок AJAX
  2. Перевірте, чи endpoint REST API плагіна доступний
  3. Переконайтеся, що NIP коректний і компанія існує в базі GUS
Ця сторінка має виключно інформаційний характер і не є юридичною консультацією. Перед впровадженням зверніться до юриста. Polski for WooCommerce - це програмне забезпечення з відкритим кодом (GPLv2), що надається без гарантій.