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

Інтеграція з KSeF

Модуль KSeF надсилає електронні рахунки-фактури до Національної системи е-рахунків (Міністерство фінансів). Рахунки-фактури надсилаються у фоні з автоматичним повтором при помилках.

Національна система е-рахунків (KSeF) - це платформа Міністерства фінансів для виставлення, зберігання та отримання структурованих рахунків-фактур у форматі XML. Плагін забезпечує інструменти для інтеграції WooCommerce з KSeF - генерує рахунки-фактури у необхідному форматі XML та надсилає їх до системи.

Перейдіть до WooCommerce > Налаштування > Polski > Модулі PRO > KSeF.

ПараметрОпис
Увімкнути інтеграцію з KSeFАктивує модуль
СередовищеТестове (sandbox) або Продуктивне
Ключ API (токен)Токен авторизації, згенерований у порталі KSeF
NIP виставникаNIP, пов’язаний з обліковим записом KSeF

KSeF надає тестове середовище (sandbox) для перевірки інтеграції. Тестове середовище:

  • не вимагає справжнього ключа авторизації
  • приймає рахунки-фактури в ідентичному форматі, як продуктивне середовище
  • не передає дані до податкової служби
  • рекомендоване для перших тестів інтеграції

Після успішної перевірки в тестовому середовищі перемкніть на продуктивне середовище та введіть правильний ключ API.

  1. Увійдіть до порталу KSeF: https://ksef.mf.gov.pl/
  2. Перейдіть до розділу управління токенами
  3. Згенеруйте новий токен із правами на виставлення рахунків-фактур
  4. Скопіюйте токен та вставте його в налаштуваннях плагіна

Надсилання рахунків-фактур

Section titled “Надсилання рахунків-фактур”

Автоматичне надсилання

Section titled “Автоматичне надсилання”

Після увімкнення опції Автоматичне надсилання до KSeF плагін надсилає рахунок-фактуру до KSeF автоматично після зміни його статусу на “Виставлений” (Issued). Надсилання відбувається асинхронно через Action Scheduler.

У панелі замовлення в мета-боксі “Рахунки-фактури” доступна кнопка Надіслати до KSeF. Натискання додає завдання надсилання до черги Action Scheduler.

Плагін використовує Action Scheduler (вбудований у WooCommerce) для асинхронного надсилання рахунків-фактур. Це означає, що:

  • надсилання не блокує обробку замовлення
  • рахунки-фактури надсилаються в черзі, один за одним
  • у разі великої кількості рахунків-фактур система обробляє їх поступово

Плагін генерує рахунок-фактуру у форматі XML, сумісному зі схемою KSeF (FA(2)). Документ XML містить:

  • заголовок із датою та типом рахунка-фактури
  • дані продавця (NIP, назва, адреса)
  • дані покупця (NIP, назва, адреса)
  • позиції рахунка-фактури (назва, кількість, ціна нетто, ставка ПДВ, вартість)
  • підсумок із розбивкою за ставками ПДВ
  • інформацію про оплату

XML валідується перед надсиланням. Якщо валідація виявить помилки, рахунок-фактура не буде надісланий, а в лозі з’явиться детальне повідомлення.

Після надсилання рахунка-фактури до KSeF плагін відстежує його статус:

СтатусОпис
QueuedРахунок-фактура додано до черги надсилання
SubmittedРахунок-фактура надіслано до KSeF, очікується обробка
AcceptedРахунок-фактура прийнято KSeF, присвоєно номер KSeF
RejectedРахунок-фактура відхилено - перевірте повідомлення про помилку
ErrorПомилка зв’язку з API KSeF

Після прийняття рахунка-фактури плагін зберігає референсний номер KSeF у метаданих рахунка-фактури. Цей номер видно в панелі замовлення та на роздруківці PDF.

Плагін автоматично перевіряє статус надісланих рахунків-фактур. Після надсилання рахунка-фактури до KSeF плагін опитує API щодо статусу кожні кілька хвилин (через Action Scheduler), поки не отримає відповідь “Accepted” або “Rejected”.

Обробка помилок та повтори

Section titled “Обробка помилок та повтори”

У разі помилки зв’язку з API KSeF плагін застосовує механізм exponential backoff:

СпробаЗатримка
1. повтор5 хвилин
2. повтор25 хвилин
3. повтор125 хвилин

Після трьох невдалих спроб рахунок-фактура отримує статус “Error” і потребує ручного втручання. Адміністратор отримує сповіщення електронною поштою про невдале надсилання.

Типові причини помилок:

  • неправильний або прострочений токен API
  • помилки валідації XML (наприклад, відсутні дані покупця)
  • тимчасова недоступність API KSeF
  • невідповідність NIP виставника токену

Дія, що викликається перед надсиланням рахунка-фактури до KSeF.

/**
* @param int $invoice_id ID faktury
* @param string $xml Wygenerowany XML faktury
*/
do_action('polski_pro_ksef_submit', int $invoice_id, string $xml);

Приклад:

add_action('polski_pro_ksef_submit', function (int $invoice_id, string $xml): void {
// Zapisanie kopii XML przed wysyłką
$upload_dir = wp_upload_dir();
$xml_path = $upload_dir['basedir'] . '/polski-pro/ksef-xml/';
if (! is_dir($xml_path)) {
wp_mkdir_p($xml_path);
}
file_put_contents(
$xml_path . "invoice-{$invoice_id}.xml",
$xml
);
}, 10, 2);

Дія, що викликається після перевірки статусу рахунка-фактури в KSeF.

/**
* @param int $invoice_id ID faktury
* @param string $status Nowy status (accepted, rejected, error)
* @param string $ksef_number Numer referencyjny KSeF (tylko dla accepted)
*/
do_action('polski_pro_ksef_check_status', int $invoice_id, string $status, string $ksef_number);

Приклад:

add_action('polski_pro_ksef_check_status', function (int $invoice_id, string $status, string $ksef_number): void {
if ($status === 'accepted') {
// Powiadomienie zewnętrznego systemu o zaakceptowaniu faktury
wp_remote_post('https://erp.example.com/api/ksef-update', [
'body' => wp_json_encode([
'invoice_id' => $invoice_id,
'ksef_number' => $ksef_number,
]),
'headers' => ['Content-Type' => 'application/json'],
]);
}
}, 10, 3);

Плагін записує всі операції KSeF до логу WooCommerce. Перейдіть до WooCommerce > Статус > Логи та виберіть джерело polski-pro-ksef.

Зареєстровані події:

  • надсилання рахунка-фактури (request/response)
  • перевірка статусу
  • помилки валідації XML
  • помилки зв’язку з API
  • повтори надсилання

У налаштуваннях модуля KSeF доступна кнопка Тестувати з’єднання. Вона надсилає тестовий запит до API KSeF та перевіряє:

  • правильність токена
  • зв’язок із сервером KSeF
  • відповідність NIP токену

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

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

Рахунок-фактура відхилений KSeF

Section titled “Рахунок-фактура відхилений KSeF”
  1. Перевірте повідомлення про помилку в лозі WooCommerce
  2. Найпоширеніші причини: відсутній NIP покупця, неправильна ставка ПДВ, неповні адресні дані
  3. Виправте дані та надішліть повторно
  1. Переконайтеся, що токен не прострочений
  2. Перевірте, чи має токен права на виставлення рахунків-фактур
  3. Перевірте відповідність NIP у налаштуваннях плагіна з NIP, пов’язаним із токеном

Action Scheduler не обробляє чергу

Section titled “Action Scheduler не обробляє чергу”
  1. Перевірте, чи WP-Cron працює правильно
  2. Перейдіть до Інструменти > Scheduled Actions та перевірте стан черги
  3. Перевірте, чи немає заблокованих завдань
Ця сторінка має виключно інформаційний характер і не є юридичною консультацією. Перед впровадженням зверніться до юриста. Polski for WooCommerce - це програмне забезпечення з відкритим кодом (GPLv2), що надається без гарантій.