KSeF Kit

Waluty i NBP

Fakturę w walucie innej niż PLN przeliczamy do złotych po kursie średnim NBP z ostatniego dnia roboczego poprzedzającego moment powstania obowiązku podatkowego (art. 31a ustawy o VAT). To kurs wymagany przez KSeF dla pola FA(3) P_14_xW.

Reguła

  • Waluta = PLN → bez przeliczania.
  • Waluta ≠ PLN → kurs średni NBP (tabela A) z ostatniego dnia roboczego przed dniem powstania obowiązku podatkowego.

Dla usługi ciągłej (subskrypcja SaaS) momentem obowiązku podatkowego jest koniec okresu rozliczeniowego. Gdy faktura jest wystawiana z dołu (po zakończeniu okresu), wiążącą datą jest koniec okresu, nie późniejsza data wystawienia. Gdy faktura jest wystawiona przed powstaniem obowiązku (z góry), wiążąca jest data wystawienia. Bierzemy więc wcześniejszą z dwóch dat.

NBP publikuje tabelę A tylko w dni robocze, więc odpytujemy krótkie okno kończące się dzień przed datą wiążącą i bierzemy najnowszy opublikowany kurs w tym oknie.

Czego NIE używamy

Kursu rozliczeniowego Stripe (FX settlement). To zły kurs do celów podatkowych. KSeF wymaga średniego kursu NBP, a nie kursu, po którym Stripe rozliczył płatność.

Źródło

NBP API, tabela A:

https://api.nbp.pl/api/exchangerates/rates/A/{waluta}/{od}/{do}/?format=json

Bierzemy pole mid (kurs średni) najnowszego wpisu z okna. Brak kursu lub błąd sieci → nie składamy po cichu faktury ze złym kursem, tylko zgłaszamy błąd.