Блог
Виставлення й отримання рахунків

Коригувальний рахунок у KSeF: як виставити

6 хв читання

Рахунок, надісланий до KSeF, не можна ні редагувати, ні видалити, тому помилку виправляєш коригувальним рахунком: окремим файлом FA(3) із RodzajFaktury = KOR, який вказує на оригінал. Суми в ньому є різницею щодо оригіналу, а не новим значенням.

Правила випливають зі ст. 106j Закону про ПДВ і такі самі, як до KSeF, змінився лише формат. Програма для виставлення рахунків (Fakturownia, inFakt, wFirma та інші) заповнить більшість полів сама, коли оберешь «виставити корекцію». Нижче показуємо, що вона робить за тебе.

Ст. 106j Закону про ПДВ

Що можна виправити, а що ні

Корекцією виправиш майже все: суми нетто, ПДВ і брутто, кількість, ціну, ставку ПДВ, опис товару чи послуги, дату продажу, назву й адресу покупця. Виняток: NIP покупця. Якщо вписав NIP іншої фірми, потрібні корекція до нуля і новий рахунок (розділ нижче).

Корекція суми крок за кроком

Приклад: Аня, графічна дизайнерка на JDG (jednoosobowa działalność gospodarcza, польський аналог ФОП), виставила 1 квітня 2026 рахунок FV/001/04/2026 на 5 000 zł нетто (23% ПДВ) за візуальну айдентику. Мало бути 4 500 zł, отже різниця становить −500 zł нетто.

Крок 1: тип рахунку KOR

У XML поле RodzajFaktury має значення KOR замість VAT.

Крок 2: причина корекції

PrzyczynaKorekty це короткий опис, наприклад «Błędna cena usługi» (хибна ціна послуги). Схема цього не вимагає, але податкова може попросити пояснення, а контрагент одразу бачить, що змінилося.

Крок 3: період корекції TypKorekty

Це поле визначає, у якій декларації ПДВ ти врахуєш корекцію, тож має реальні податкові наслідки:

  • 1: корекція діє на дату обліку первинного рахунку (заднім числом),
  • 2: діє на дату виставлення корекції (поточний період),
  • 3: діє на іншу дату, зокрема коли дати різняться для окремих позицій.

Для простої корекції суми зазвичай обирають 2. Більшість програм підбирає значення сама; якщо твоя ні, узгодь його з бухгалтером.

Крок 4: посилання на оригінал DaneFaKorygowanej

Вказуєш дату виставлення оригіналу (DataWystFaKorygowanej), його номер (NrFaKorygowanej) та інформацію про номер KSeF, причому лише в одному з двох варіантів:

СитуаціяЩо встановити
Оригінал пройшов через KSeFNrKSeF = 1 + поле NrKSeFFaKorygowanej з номером KSeF оригіналу
Оригінал виставлено до KSeFNrKSeFN = 1 (без NrKSeFFaKorygowanej)

Якщо вказати обидва поля одночасно, рахунок буде відхилено. Номер KSeF має формат NIP-DATA-XXXXXXXXXXXX-ZZ; копіюй його, а не переписуй, бо з помилкою система не зв'яже корекцію з оригіналом. У прикладі оригінал пройшов через KSeF, тому ставимо NrKSeF = 1 і вказуємо його номер.

Крок 5: суми як різниця

Це найчастіша помилка. Суми в корекції це різниця між тим, що було, і тим, що має бути:

  • оригінал: 5 000 zł нетто, 1 150 zł ПДВ, 6 150 zł брутто,
  • має бути: 4 500 zł нетто, 1 035 zł ПДВ, 5 535 zł брутто,
  • у корекції вписуєш: −500,00 zł нетто, −115,00 zł ПДВ, −615,00 zł брутто.

Корекцію методом різниці додають до оригіналу в облікових книгах обох сторін. Якщо впишеш 4 500 замість −500, рахунок загалом виходить на 9 500 zł.

Те саме стосується позицій (FaWiersz): P_11 — це різниця, а описові поля, як-от P_7 (назва товару чи послуги), подаєш у стані після корекції. Є ще метод «до/після» з полем StanPrzed (два рядки: первинні й виправлені дані). Тут описуємо простіший метод різниці.

Крок 6: перевір файл перед відправкою

У корекції більше обов'язкових полів, ніж у звичайному рахунку, тож легше щось пропустити. Якщо твоя програма не валідує корекції, а у тебе є готовий XML-файл, завантаж його на ksefuj.to, щоб перевірити відповідність вимогам МФ, зокрема узгодженість полів посилання на оригінал.

Корекція до нуля, коли NIP покупця з помилкою

Структура FA(3) не дозволяє підмінити NIP покупця у звичайній корекції. Потрібно виставити два документи:

  1. Коригувальний рахунок до нуля: усі суми з мінусом, рівні оригіналу, тож оригінал плюс корекція дають 0 zł.
  2. Новий рахунок із правильним NIP і сумою.

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

Корекція рахунку, виставленого до KSeF

Якщо коригуєш рахунок до 1 квітня 2026, у DaneFaKorygowanej став NrKSeFN = 1, бо оригінал не має номера KSeF. Сама корекція має бути у FA(3): схема FA(2) втратила чинність 31 січня 2026, і KSeF не прийме її в жодній формі, навіть для рахунку часів FA(2). Різницю між схемами описано в статті FA(2) vs FA(3).

Приклад XML

Корекція Ані Ковальської (FV/001/04/2026, −500 zł нетто, 23% ПДВ):

<?xml version="1.0" encoding="UTF-8"?>
<Faktura xmlns="http://crd.gov.pl/wzor/2025/06/25/13775/">
  <Naglowek>
    <KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
    <WariantFormularza>3</WariantFormularza>
    <DataWytworzeniaFa>2026-04-02T10:00:00Z</DataWytworzeniaFa>
  </Naglowek>
  <Podmiot1>
    <DaneIdentyfikacyjne>
      <NIP>5214567890</NIP>
      <Nazwa>Ania Kowalska Grafika</Nazwa>
    </DaneIdentyfikacyjne>
    <Adres>
      <KodKraju>PL</KodKraju>
      <AdresL1>ul. Kwiatowa 12</AdresL1>
      <AdresL2>00-123 Warszawa</AdresL2>
    </Adres>
  </Podmiot1>
  <Podmiot2>
    <DaneIdentyfikacyjne>
      <NIP>7891234560</NIP>
      <Nazwa>Klient Sp. z o.o.</Nazwa>
    </DaneIdentyfikacyjne>
    <Adres>
      <KodKraju>PL</KodKraju>
      <AdresL1>ul. Handlowa 5</AdresL1>
      <AdresL2>30-002 Kraków</AdresL2>
    </Adres>
    <JST>2</JST>
    <GV>2</GV>
  </Podmiot2>
  <Fa>
    <KodWaluty>PLN</KodWaluty>
    <P_1>2026-04-02</P_1>
    <P_2>FV/001K/04/2026</P_2>
    <P_13_1>-500.00</P_13_1>
    <P_14_1>-115.00</P_14_1>
    <P_15>-615.00</P_15>
    <Adnotacje>
      <P_16>2</P_16>
      <P_17>2</P_17>
      <P_18>2</P_18>
      <P_18A>2</P_18A>
      <Zwolnienie><P_19N>1</P_19N></Zwolnienie>
      <NoweSrodkiTransportu><P_22N>1</P_22N></NoweSrodkiTransportu>
      <P_23>2</P_23>
      <PMarzy><P_PMarzyN>1</P_PMarzyN></PMarzy>
    </Adnotacje>
    <RodzajFaktury>KOR</RodzajFaktury>
    <PrzyczynaKorekty>Błędna cena usługi</PrzyczynaKorekty>
    <TypKorekty>2</TypKorekty>
    <DaneFaKorygowanej>
      <DataWystFaKorygowanej>2026-04-01</DataWystFaKorygowanej>
      <NrFaKorygowanej>FV/001/04/2026</NrFaKorygowanej>
      <NrKSeF>1</NrKSeF>
      <NrKSeFFaKorygowanej>5214567890-20260401-000001000001-49</NrKSeFFaKorygowanej>
    </DaneFaKorygowanej>
    <FaWiersz>
      <NrWierszaFa>1</NrWierszaFa>
      <P_7>Projekt graficzny — identyfikacja wizualna</P_7>
      <P_8B>1</P_8B>
      <P_9A>-500.00</P_9A>
      <P_11>-500.00</P_11>
      <P_12>23</P_12>
    </FaWiersz>
  </Fa>
</Faktura>

У цьому файлі важливі чотири місця: RodzajFaktury = KOR, блок DaneFaKorygowanej з посиланням на оригінал, від'ємні P_13_1, P_14_1 і P_15 (різниця, а не нова сума) та FaWiersz з від'ємним P_11.

Схема XSD FA(3) — CRD FAQ MF — KSeF 2.0

Якщо корекцію повернуло з помилкою, перегляни найчастіші помилки валідації FA(3), польською.