Przejdź do treści
Faktury walutowe z KSeF – przeliczanie kursem NBP
Start Blog Prawo i bezpieczeństwo
Prawo i bezpieczeństwo · Poradnik

Faktury walutowe z KSeF – przeliczanie kursem NBP

Automatyczne przeliczanie faktur EUR/USD z KSeF na PLN kursem średnim NBP, zgodnie z art. 31a ustawy o VAT.

Wypróbuj za darmo
MW Michał Wójcik 7 min Akt. 18 czerwca 2026 Zweryfikowane
Szybka odpowiedź

Jak przeliczać faktury walutowe z KSeF na PLN zgodnie z ustawą o VAT?

Zgodnie z art. 31a ustawy o VAT kwoty w walucie obcej przelicza się na PLN według kursu średniego NBP z ostatniego dnia roboczego poprzedzającego dzień powstania obowiązku podatkowego (najczęściej: poprzedzającego datę wystawienia faktury). KSeF Import automatycznie pobiera faktury walutowe z API KSeF i eksportuje je do arkusza z gotową kolumną równowartości w PLN, wyliczoną po właściwym kursie. Ostateczna odpowiedzialność za rozliczenie VAT spoczywa na podatniku.

TL;DR – w skrócie
  • Obowiązek prawny: art. 31a ust. 1 ustawy o VAT – kurs średni NBP z ostatniego dnia roboczego poprzedzającego dzień powstania obowiązku podatkowego (typowo: poprzedzającego datę wystawienia).
  • KSeF Import pobiera faktury EUR/USD/GBP z KSeF i eksportuje je do Excela lub Arkuszy Google razem z polem Waluta i Kwota.
  • Kolumna PLN wg NBP jest doliczona automatycznie – kurs z dnia poprzedzającego datę wystawienia, bez ręcznego szukania tabel.
  • Tabela kursów NBP typu A (dni robocze) jest publiczna i bezpłatna; WORKDAY(data,-1) w Sheets/Excelu automatycznie omija weekendy.
  • Dla firm z kilkudziesięcioma fakturami walutowymi miesięcznie to kilka godzin mniej pracy księgowej przy każdym zamknięciu okresu.
W tym artykule

Od problemu do efektu

PWE
1
Problem
Każda faktura wymaga innego kursu

Google Ireland, AWS, Meta – każda faktura walutowa ma inną datę i inny kurs NBP z dnia poprzedzającego. Przy 20 fakturach w miesiącu to 40 minut szukania na stronie NBP, przy 100 – pół dnia pracy i ryzyko pomyłki o jeden dzień.

2
Jak rozwiązujemy
Kurs NBP dolicza się automatycznie

KSeF Import pobiera faktury z API KSeF i eksportuje je do arkusza z gotową kolumną równowartości w PLN. Jedna formuła IMPORTXML lub WEBSERVICE pobiera kurs z publicznego API NBP – dla każdej faktury osobno, z właściwego dnia.

3
Efekt
Rejestr VAT w PLN bez ręcznej pracy

Arkusz z fakturami walutowymi przeliczonymi kursem zgodnym z art. 31a jest gotowy do wysyłki do biura rachunkowego, importu do JPK_V7 lub do systemu ERP – bez żadnego ręcznego szukania kursów.

Podstawa prawna: art. 31a ustawy o VAT

Art. 31a ust. 1 ustawy o VAT mówi jasno: jeżeli kwoty na fakturze są wyrażone w walucie obcej, przelicza się je na złote według kursu średniego NBP ogłoszonego na ostatni dzień roboczy poprzedzający dzień powstania obowiązku podatkowego. Obowiązek podatkowy zwykle powstaje z chwilą dokonania dostawy lub wykonania usługi, a dla wielu transakcji pokrywa się to z datą wystawienia faktury – dlatego w praktyce bierzesz kurs z ostatniego dnia roboczego przed datą wystawienia (a dla importu usług – przed datą wykonania usługi).

Kurs EBC jako alternatywa

Ustawa dopuszcza też stosowanie kursu ogłoszonego przez Europejski Bank Centralny (EBC) z ostatniego dnia poprzedzającego dzień powstania obowiązku podatkowego. Większość firm pozostaje przy NBP – oba kursy są zgodne z ustawą, ale musisz stosować wybrany konsekwentnie.

Co to oznacza w praktyce dla dat:

  • Faktura wystawiona w poniedziałek – kurs z piątku (ostatni dzień roboczy przed poniedziałkiem).
  • Faktura wystawiona po świętach – kurs z ostatniego dnia roboczego przed dniem świątecznym.
  • Każda faktura może mieć inny kurs – nie można użyć jednego kursu z końca miesiąca dla całej paczki.
  • Tabela kursów NBP typu A publikowana jest wyłącznie w dni robocze.
art. 31a
ustawy o VAT – podstawa prawna przeliczania faktur walutowych
Kurs średni NBP z ostatniego dnia roboczego poprzedzającego dzień powstania obowiązku podatkowego.

Faktury walutowe w KSeF – co zawiera schemat FA(3)

KSeF przechowuje faktury w schemacie FA(3) – ok. 80 pól zagnieżdżonych w sekcjach. Faktury od polskich kontrahentów przychodzą w PLN, ale faktury od podmiotów zagranicznych zarejestrowanych w Polsce (VAT-UE) oraz od oddziałów globalnych korporacji rozliczających się na polski NIP (np. Google Ireland, Amazon Web Services EMEA, Meta Platforms Ireland) – będą w EUR, USD lub GBP.

Pole FA(3)ZawartośćDo czego służy
KodWalutyEUR / USD / GBP / PLNIdentyfikacja waluty faktury
P_1Data wystawieniaWyznaczenie dnia D do kursu (D-1 roboczy)
P_6Data sprzedaży / wykonania usługiObowiązek podatkowy przy dostawie towarów
WartoscNettoKwota netto w walucie fakturyPodstawa do przeliczenia na PLN
KwotaVATKwota VAT w walucie fakturyPrzeliczenie kwoty podatku
WartoscBruttoKwota brutto w walucie fakturyKontrola i archiwum
Data sprzedaży vs. data wystawienia

Ustawa mówi o dniu powstania obowiązku podatkowego, który zwykle równa się dacie sprzedaży (dostawy / wykonania usługi), a nie dacie wystawienia faktury. Przy imporcie usług z UE (reverse charge: Google Ads, AWS, Meta) obowiązek podatkowy powstaje w dniu wykonania usługi – używaj pola P_6, nie P_1. KSeF Import eksportuje oba pola, więc możesz wybrać właściwe w swoim arkuszu.

Skonfiguruj raz, pobieraj jednym kliknięciem

Zobacz, jak KSeF Import pobiera faktury kosztowe i układa je w gotowy arkusz.

Wypróbuj za darmo

Jak KSeF Import automatyzuje przeliczanie

KSeF Import pobiera faktury walutowe z API KSeF i eksportuje je do arkusza razem ze wszystkimi polami FA(3). W kolumnie Równowartość PLN aplikacja dolicza kwotę po kursie średnim NBP z dnia poprzedzającego datę wystawienia – zgodnie z art. 31a. To ułatwienie obliczeniowe; ostateczne rozliczenie VAT weryfikuje podatnik lub jego biuro rachunkowe.

  1. 1
    Wgraj certyfikat dla NIP

    W panelu przejdź do Certyfikaty i dodaj plik .p12 lub .pfx z KSeF. Certyfikat szyfrujemy AES-256-GCM kluczem generowanym osobno per użytkownik (HKDF) i przechowujemy na serwerach w Unii Europejskiej (OVH). Wgrywasz raz.

  2. 2
    Pierwsze pobranie – ostatnie 90 dni

    Pierwsze pobranie obejmuje ostatnie 90 dni faktur. Potem każda nowa faktura dochodzi automatycznie przy kolejnej synchronizacji (co 24 h / 6 h / 2 h / 15 min, zależnie od planu).

  3. 3
    Eksport do Excela lub Arkuszy Google

    Kliknij Eksportuj do Excela lub uruchom synchronizację z Arkuszami Google. W pliku znajdziesz kolumnę Waluta, Kwota w walucie oraz Równowartość PLN z kursem NBP z dnia poprzedzającego datę wystawienia.

  4. 4
    Sprawdź i uzupełnij w arkuszu

    Jeśli chcesz użyć kursu z daty sprzedaży (P_6) lub kursu EBC – dostosuj formułę w arkuszu. API NBP jest publiczne i bezpłatne; endpoint to api.nbp.pl/api/exchangerates/rates/a/{waluta}/{data}/.

Wskazówka

Przy pierwszym, dużym imporcie zostaw synchronizację na noc. API KSeF udostępnia ok. 60 faktur na godzinę dla jednego NIP, więc zaległości dociągają się partiami w tle – rano masz pełny zakres bez ręcznego ponawiania.

Formuły do samodzielnego wyliczenia kursu w arkuszu

Jeśli chcesz samodzielnie doliczyć lub zweryfikować kurs w arkuszu, Narodowy Bank Polski udostępnia bezpłatne REST API pod adresem api.nbp.pl – bez klucza API, z odpowiedzią XML lub JSON. Jedna formuła pobiera kurs dowolnej waluty z tabeli A na wskazany dzień roboczy.

ArkuszFormuła kursu (przykładowa)Opis
Google Sheets=IFERROR(IMPORTXML("https://api.nbp.pl/api/exchangerates/rates/a/"&D2&"/"&TEXT(WORKDAY(C2,-1),"yyyy-mm-dd")&"/?format=xml","//Mid"),"-")Pobiera kurs średni z dnia poprzedzającego; WORKDAY omija weekendy
Excel (Office 365)=FILTERXML(WEBSERVICE("https://api.nbp.pl/api/exchangerates/rates/a/"&D2&"/"&TEXT(WORKDAY(C2,-1),"yyyy-mm-dd")&"/?format=xml"),"//Mid")Identyczna logika; Excel odświeża przy otwarciu lub F9
Netto PLN=E2*G2Netto w walucie × kurs NBP
VAT PLN=F2*G2VAT w walucie × kurs NBP
Brutto PLN=H2+I2Suma netto + VAT w PLN

Kluczowy fragment: WORKDAY(C2,-1) – cofa się o jeden dzień roboczy, automatycznie omijając weekendy. Jeśli faktura wypada po święcie, dodaj listę świąt jako trzeci argument funkcji WORKDAY. W tabeli powyżej C2 = data wystawienia, D2 = kod waluty (np. EUR), E2 = kwota netto w walucie, F2 = kwota VAT w walucie, G2 = wyliczony kurs NBP.

Przykłady liczbowe są orientacyjne

Kursy walut zmieniają się codziennie. Przykłady w artykule (np. EUR ok. 4,27 zł, USD ok. 3,98 zł) są wyłącznie ilustracyjne – nie używaj ich jako bieżących kursów. Zawsze pobieraj aktualny kurs z tabeli A na stronie NBP lub przez API.

Pułapki i przypadki szczególne

Przy fakturach walutowych jest kilka sytuacji, w których data kursu może się różnić od typowej reguły – warto je znać przed zamknięciem okresu.

  • Faktura zaliczkowa i końcowa: zaliczka ma obowiązek podatkowy w dniu zapłaty (osobny kurs), faktura końcowa – w dniu sprzedaży (osobny kurs). Przeliczasz każdą z właściwego dnia.
  • Import usług – reverse charge: faktury od Google Ireland, Meta, AWS to import usług – VAT rozliczasz Ty jako nabywca. Obowiązek podatkowy powstaje w dniu wykonania usługi (P_6), nie wystawienia (P_1). Pamiętaj, żeby użyć właściwego pola w formule.
  • Faktura wystawiona po świętach: bierzesz kurs z ostatniego dnia roboczego przed datą wystawienia, nie z dnia bezpośrednio poprzedzającego w kalendarzu. Funkcja WORKDAY z listą świąt obsłuży to automatycznie.
  • Waluta spoza tabeli A NBP: tabela A zawiera wszystkie waluty UE i główne waluty światowe; egzotyczne mogą się nie pojawić – API zwróci 404. Użyj IFERROR w formule, żeby oznaczyć te faktury do ręcznego przeliczenia.
Archiwum kursów dla dużych wolumenów

Jeśli masz setki faktur walutowych miesięcznie i chcesz uniknąć setek zapytań do API przy każdym otwarciu arkusza – pobierz raz dziennie całą tabelę A z NBP i wstaw do osobnej zakładki. Wszystkie formuły przeliczają wtedy przez WYSZUKAJ.PIONOWO po parze (waluta, data): szybko, offline, bez limitów API.

Efekt: rejestr VAT w PLN, gotowy do JPK i kontroli

Po wdrożeniu automatycznego przeliczania masz arkusz, w którym każda faktura walutowa z KSeF ma prawidłowo wyliczoną równowartość w PLN i jest gotowa do dalszego przetwarzania.

  • Kurs z właściwego dnia – niezależnie czy to poniedziałek, środa po świętach czy koniec kwartału.
  • Netto, VAT i brutto w PLN zgodne z art. 31a – zarówno dla typowych faktur, jak i zaliczkowych oraz reverse charge.
  • Dane gotowe do eksportu do JPK_V7 – patrz uzgodnienie faktur KSeF z JPK_V7 w Excelu.
  • Transparentny dowód źródła kursu (adres API NBP lub numer tabeli A) – gotowy do okazania w razie kontroli.
3–8 h
oszczędności pracy księgowej miesięcznie przy 20–100 fakturach walutowych
Zero ryzyka pomyłki w kursie i transparentny dowód źródła dla kontroli skarbowej.

Najczęstsze pytania

Krótkie, konkretne odpowiedzi na pytania, które zadają użytkownicy i wyszukiwarki.

Z ostatniego dnia roboczego poprzedzającego dzień powstania obowiązku podatkowego – typowo poprzedzającego datę wystawienia faktury. Tak stanowi art. 31a ust. 1 ustawy o VAT. Jeśli faktura wypada w poniedziałek, bierzesz kurs z piątku. Jeśli po świętach – z ostatniego dnia roboczego przed dniem świątecznym.

Tak. W eksporcie do Excela i Arkuszy Google doliczona jest kolumna z równowartością PLN, wyliczoną po kursie średnim NBP z dnia poprzedzającego datę wystawienia. To ułatwienie obliczeniowe – ostateczną poprawność rozliczenia VAT weryfikuje podatnik lub jego biuro rachunkowe.

Tabela A NBP publikowana jest tylko w dni robocze, więc nie ma kursu na weekend ani na święto. Bierzesz kurs z ostatniego dnia roboczego przed tą datą. Funkcja WORKDAY w Excelu i Arkuszach Google automatycznie omija weekendy; do obsługi świąt dodaj listę świąt jako trzeci argument funkcji.

Tak, art. 31a ustawy o VAT dopuszcza stosowanie kursu Europejskiego Banku Centralnego z ostatniego dnia poprzedzającego dzień powstania obowiązku podatkowego. Musisz jednak stosować wybrany kurs (NBP albo EBC) konsekwentnie dla wszystkich transakcji w danym roku podatkowym.

Faktura zaliczkowa ma obowiązek podatkowy w dniu otrzymania zapłaty, a nie w dniu wystawienia. Przeliczasz ją kursem NBP z dnia poprzedzającego datę zapłaty zaliczki. Faktura końcowa ma osobny kurs – z dnia poprzedzającego datę sprzedaży. Oba pola data (sprzedaży i zapłaty) są dostępne w eksporcie KSeF Import.

Tak, ale z ważną uwagą: faktury od Google Ireland, Amazon Web Services EMEA i Meta Platforms Ireland to import usług, gdzie VAT rozliczasz Ty jako nabywca (reverse charge). Obowiązek podatkowy powstaje w dniu wykonania usługi (pole P_6 w FA(3)), nie w dniu wystawienia faktury. Użyj pola Data sprzedaży, nie Data wystawienia, przy wyborze kursu NBP.

MW
Michał Wójcik
Inżynier integracji KSeF

Inżynier integracji KSeF. Odpowiada za połączenia z API Krajowego Systemu e-Faktur, automatyzacje i parsowanie struktury logicznej FA(3).

Merytorycznie zweryfikował Anna Kowalczyk – Specjalistka ds. KSeF.
Wszystkie artykuły na blogu

Przeczytaj również

Faktury z KSeF automatycznie
7 dni za darmo · bez karty
Wypróbuj
7 dni za darmo · bez karty kredytowej

Przestań przepisywać faktury ręcznie

Wgraj certyfikat raz i pozwól, by faktury kosztowe z KSeF same trafiały do Excela, Google Sheets, CSV i zbiorczego PDF – bez logowania do portalu MF.

Bez karty kredytowej Konfiguracja w 5 minut Serwery w EU · GDPR