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

PRO REST API

REST API у namespace polski-pro/v1 для управління рахунками-фактурами, налаштуваннями та правовими документами. Вимагає автентифікації та права manage_woocommerce.

API вимагає двох елементів авторизації:

  1. Nonce WordPress - заголовок X-WP-Nonce зі значенням, згенерованим через wp_create_nonce('wp_rest')
  2. Право - авторизований користувач повинен мати capability manage_woocommerce

Приклад автентифікації (JavaScript)

Section titled “Приклад автентифікації (JavaScript)”
const response = await fetch('/wp-json/polski-pro/v1/invoices', {
headers: {
'X-WP-Nonce': wpApiSettings.nonce,
'Content-Type': 'application/json',
},
});

Приклад автентифікації (PHP / cURL)

Section titled “Приклад автентифікації (PHP / cURL)”
$nonce = wp_create_nonce('wp_rest');
$response = wp_remote_get(
rest_url('polski-pro/v1/invoices'),
[
'headers' => [
'X-WP-Nonce' => $nonce,
],
]
);

Неавтентифіковані запити або запити від користувачів без необхідного права отримують відповідь 401 Unauthorized або 403 Forbidden.

Ендпоінти рахунків-фактур

Section titled “Ендпоінти рахунків-фактур”

Отримання списку рахунків-фактур

Section titled “Отримання списку рахунків-фактур”
GET /wp-json/polski-pro/v1/invoices

Параметри запиту:

ПараметрТипЗа замовчуваннямОпис
pageint1Номер сторінки
per_pageint20Кількість результатів на сторінку (макс. 100)
statusstringanyФільтр статусу: draft, issued, sent, paid, cancelled
date_fromstringnullДата від (Y-m-d)
date_tostringnullДата до (Y-m-d)
order_idintnullФільтр за ID замовлення WooCommerce
searchstringnullПошук за номером рахунка-фактури або назвою контрагента

Відповідь (200 OK):

{
"invoices": [
{
"id": 1,
"number": "FV/2026/04/001",
"order_id": 567,
"status": "issued",
"type": "vat",
"buyer": {
"name": "Firma Testowa Sp. z o.o.",
"nip": "1234567890",
"address": "ul. Testowa 1, 00-001 Warszawa"
},
"net_total": "1000.00",
"tax_total": "230.00",
"gross_total": "1230.00",
"currency": "PLN",
"issued_at": "2026-04-01T10:30:00+02:00",
"due_date": "2026-04-15",
"external_id": "FV-12345",
"provider": "fakturownia"
}
],
"total": 42,
"pages": 3
}

Створення рахунка-фактури із замовлення

Section titled “Створення рахунка-фактури із замовлення”
POST /wp-json/polski-pro/v1/invoices

Параметри body (JSON):

ПараметрТипОбов’язковийОпис
order_idintТакID замовлення WooCommerce
typestringНіТип: vat (за замовчуванням), proforma, receipt
issue_datestringНіДата виставлення (Y-m-d), за замовчуванням сьогодні
due_datestringНіТермін оплати (Y-m-d)
notesstringНіПримітки на рахунку-фактурі
send_to_providerboolНіНадіслати до бухгалтерської системи (за замовчуванням true)

Запит:

{
"order_id": 567,
"type": "vat",
"due_date": "2026-04-15",
"notes": "Termin płatności 14 dni",
"send_to_provider": true
}

Відповідь (201 Created):

{
"id": 43,
"number": "FV/2026/04/002",
"order_id": 567,
"status": "issued",
"type": "vat",
"buyer": {
"name": "Firma Testowa Sp. z o.o.",
"nip": "1234567890",
"address": "ul. Testowa 1, 00-001 Warszawa"
},
"net_total": "500.00",
"tax_total": "115.00",
"gross_total": "615.00",
"currency": "PLN",
"issued_at": "2026-04-05T14:00:00+02:00",
"due_date": "2026-04-15",
"external_id": null,
"provider_status": "pending"
}

Отримання деталей рахунка-фактури

Section titled “Отримання деталей рахунка-фактури”
GET /wp-json/polski-pro/v1/invoices/{id}

Повертає повні дані рахунка-фактури разом із позиціями (items).

Відповідь (200 OK):

{
"id": 43,
"number": "FV/2026/04/002",
"order_id": 567,
"status": "issued",
"type": "vat",
"buyer": {
"name": "Firma Testowa Sp. z o.o.",
"nip": "1234567890",
"address": "ul. Testowa 1, 00-001 Warszawa"
},
"seller": {
"name": "Mój Sklep Sp. z o.o.",
"nip": "9876543210",
"address": "ul. Sklepowa 5, 02-222 Warszawa"
},
"items": [
{
"name": "Produkt testowy",
"sku": "TEST-001",
"quantity": 2,
"unit": "szt.",
"net_price": "100.00",
"tax_rate": 23,
"tax_amount": "46.00",
"gross_price": "246.00"
},
{
"name": "Dostawa - InPost Paczkomat",
"sku": null,
"quantity": 1,
"unit": "szt.",
"net_price": "12.20",
"tax_rate": 23,
"tax_amount": "2.80",
"gross_price": "15.00"
}
],
"net_total": "212.20",
"tax_total": "48.80",
"gross_total": "261.00",
"currency": "PLN",
"payment_method": "transfer",
"issued_at": "2026-04-05T14:00:00+02:00",
"due_date": "2026-04-15",
"notes": "Termin płatności 14 dni",
"external_id": "FV-12346",
"provider": "fakturownia",
"provider_status": "issued",
"ksef_number": null
}

Відповідь (404 Not Found):

{
"code": "invoice_not_found",
"message": "Faktura o podanym ID nie istnieje.",
"data": { "status": 404 }
}

Перегенерація PDF рахунка-фактури

Section titled “Перегенерація PDF рахунка-фактури”
POST /wp-json/polski-pro/v1/invoices/{id}/pdf

Перегенерує PDF-файл рахунка-фактури та повертає URL для завантаження.

Параметри body (необов’язкові):

ПараметрТипОпис
templatestringШаблон PDF: default, minimal, detailed
languagestringМова: pl, en, de

Відповідь (200 OK):

{
"id": 43,
"pdf_url": "https://example.com/wp-content/uploads/polski-pro/invoices/FV-2026-04-002.pdf",
"generated_at": "2026-04-05T14:05:00+02:00",
"file_size": 45678
}

Надсилання рахунка-фактури до KSeF

Section titled “Надсилання рахунка-фактури до KSeF”
POST /wp-json/polski-pro/v1/invoices/{id}/ksef

Надсилає рахунок-фактуру до Національної системи е-рахунків (KSeF).

Параметри body (необов’язкові):

ПараметрТипОпис
test_modeboolНадіслати до тестового середовища KSeF (за замовчуванням false)

Відповідь (200 OK):

{
"id": 43,
"ksef_number": "1234567890-20260405-ABC123DEF456",
"ksef_status": "accepted",
"submitted_at": "2026-04-05T14:10:00+02:00",
"upo_url": "https://example.com/wp-content/uploads/polski-pro/ksef/UPO-43.xml"
}

Відповідь (422 Unprocessable Entity):

{
"code": "ksef_validation_error",
"message": "Faktura nie spełnia wymagań schematu KSeF.",
"data": {
"status": 422,
"errors": [
"Brak numeru NIP nabywcy",
"Nieprawidłowa stawka VAT dla pozycji 2"
]
}
}

Створення коригувального рахунка-фактури

Section titled “Створення коригувального рахунка-фактури”
POST /wp-json/polski-pro/v1/invoices/{id}/correction

Створює коригувальний рахунок-фактуру, пов’язаний із вихідним рахунком-фактурою.

Параметри body (JSON):

ПараметрТипОбов’язковийОпис
reasonstringТакПричина коригування
itemsarrayТакСкориговані позиції
items[].original_indexintТакІндекс позиції у вихідному рахунку-фактурі (від 0)
items[].quantityintНіНова кількість
items[].net_pricestringНіНова ціна нетто

Запит:

{
"reason": "Zwrot 1 sztuki produktu",
"items": [
{
"original_index": 0,
"quantity": 1,
"net_price": "100.00"
}
]
}

Відповідь (201 Created):

{
"id": 44,
"number": "FK/2026/04/001",
"type": "correction",
"original_invoice_id": 43,
"original_invoice_number": "FV/2026/04/002",
"reason": "Zwrot 1 sztuki produktu",
"items": [
{
"name": "Produkt testowy",
"quantity_before": 2,
"quantity_after": 1,
"net_difference": "-100.00",
"tax_difference": "-23.00",
"gross_difference": "-123.00"
}
],
"net_total": "-100.00",
"tax_total": "-23.00",
"gross_total": "-123.00",
"status": "issued",
"issued_at": "2026-04-05T15:00:00+02:00"
}

Отримання статистики рахунків-фактур

Section titled “Отримання статистики рахунків-фактур”
GET /wp-json/polski-pro/v1/invoices/stats

Параметри запиту:

ПараметрТипЗа замовчуваннямОпис
daysint30Кількість днів назад
group_bystringdayГрупування: day, week, month

Відповідь (200 OK):

{
"period": {
"from": "2026-03-06",
"to": "2026-04-05"
},
"summary": {
"total_invoices": 156,
"total_net": "125430.00",
"total_tax": "28848.90",
"total_gross": "154278.90",
"total_corrections": 3,
"average_invoice_value": "989.22"
},
"by_status": {
"issued": 120,
"sent": 25,
"paid": 8,
"cancelled": 3
},
"by_tax_rate": {
"23": { "count": 140, "net": "110000.00", "tax": "25300.00" },
"8": { "count": 12, "net": "12000.00", "tax": "960.00" },
"5": { "count": 4, "net": "3430.00", "tax": "171.50" }
},
"timeline": [
{ "date": "2026-04-05", "count": 5, "gross": "4890.00" },
{ "date": "2026-04-04", "count": 7, "gross": "6230.00" }
]
}

Оновлення налаштувань PRO

Section titled “Оновлення налаштувань PRO”
POST /wp-json/polski-pro/v1/settings

Параметри body (JSON):

ПараметрТипОпис
sectionstringСекція налаштувань: invoices, catalog, quote, inpost, accounting
settingsobjectОб’єкт із парами ключ-значення налаштувань

Запит:

{
"section": "invoices",
"settings": {
"auto_issue": true,
"trigger_status": "processing",
"default_type": "vat",
"due_days": 14,
"number_format": "FV/{year}/{month}/{number}"
}
}

Відповідь (200 OK):

{
"section": "invoices",
"settings": {
"auto_issue": true,
"trigger_status": "processing",
"default_type": "vat",
"due_days": 14,
"number_format": "FV/{year}/{month}/{number}"
},
"updated_at": "2026-04-05T14:20:00+02:00"
}

Ендпоінт генерації правових документів

Section titled “Ендпоінт генерації правових документів”

Генерація правового документа

Section titled “Генерація правового документа”
POST /wp-json/polski-pro/v1/legal/generate

Генерує правові документи (регламент, політику конфіденційності) на основі даних магазину.

Параметри body (JSON):

ПараметрТипОбов’язковийОпис
typestringТакТип документа: terms, privacy, withdrawal, cookies
company_dataobjectТакДані компанії
company_data.namestringТакНазва компанії
company_data.nipstringТакNIP
company_data.addressstringТакАдреса
company_data.emailstringТакКонтактна електронна пошта
company_data.phonestringНіТелефон
formatstringНіФормат: html (за замовчуванням), markdown, pdf
languagestringНіМова: pl (за замовчуванням)

Запит:

{
"type": "terms",
"company_data": {
"name": "Mój Sklep Sp. z o.o.",
"nip": "9876543210",
"address": "ul. Sklepowa 5, 02-222 Warszawa",
"email": "[email protected]",
"phone": "+48 123 456 789"
},
"format": "html"
}

Відповідь (200 OK):

{
"type": "terms",
"content": "<h1>Regulamin sklepu internetowego...</h1>...",
"format": "html",
"generated_at": "2026-04-05T14:25:00+02:00",
"word_count": 3200,
"sections": [
"Postanowienia ogólne",
"Składanie zamówień",
"Płatności",
"Dostawa",
"Prawo odstąpienia od umowy",
"Reklamacje",
"Dane osobowe",
"Postanowienia końcowe"
]
}

Усі ендпоінти повертають стандартизовані коди помилок:

Код HTTPКод помилкиОпис
400invalid_paramsНеправильні параметри запиту
401rest_not_logged_inКористувач не авторизований
403rest_forbiddenВідсутнє право manage_woocommerce
404invoice_not_foundРахунок-фактура не існує
409invoice_already_existsРахунок-фактура для цього замовлення вже існує
422validation_errorПомилка валідації даних
429rate_limit_exceededПеревищено ліміт запитів (60/хв)
500internal_errorВнутрішня помилка сервера

API застосовує rate limiting: максимум 60 запитів на хвилину на користувача. Після перевищення ліміту повертається відповідь 429 із заголовком Retry-After.

HTTP/1.1 429 Too Many Requests
Retry-After: 30
Ця сторінка має виключно інформаційний характер і не є юридичною консультацією. Перед впровадженням зверніться до юриста. Polski for WooCommerce - це програмне забезпечення з відкритим кодом (GPLv2), що надається без гарантій.