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.

Tabela A NBP publikowana jest 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, 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 → faktura nie zostaje cicho złożona ze złym kursem; błąd jest zgłaszany.