Przejdź do treści
Pobieranie faktur z KSeF do Excela – 5 pułapek
Start Blog Eksport i arkusze
Eksport i arkusze · Poradnik

Pobieranie faktur z KSeF do Excela – 5 pułapek

XML jako bełkot, kwoty jako tekst, limit 10 plików, zepsute polskie znaki i duplikaty – jak ich uniknąć.

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

Jakie są pułapki przy pobieraniu faktur z KSeF do Excela?

Przy przenoszeniu faktur z Krajowego Systemu e-Faktur do Excela czeka 5 typowych pułapek: XML otwarty bezpośrednio w Excelu zamienia się w chaos kolumn, kwoty zapisane jako tekst blokują formuły SUMA, limit API (~60 faktur/h na NIP) spowalnia masowe pobrania, polskie znaki zamieniają się w krzaczki gdy CSV zapisano bez BOM, a faktury pokazywane dwóm stronom transakcji generują duplikaty kwot. Każdej można uniknąć – albo ręcznie, albo używając narzędzia, które obsługuje je wszystkie automatycznie.

TL;DR – w skrócie
  • XML z KSeF to schemat FA(3) z ~80 polami – Excel nie otworzy go jako tabeli bez parsera.
  • Kwoty ze znakiem waluty lub spacją tysięczną trafiają do Excela jako tekst, nie liczby; SUMA zwraca 0.
  • Limit API KSeF: ~60 faktur/h na NIP – masowe pobieranie wymaga batch z automatycznym retry.
  • CSV bez BOM (Byte Order Mark) otwiera się w Windows-1250 zamiast UTF-8 – polskie znaki wyglądają jak Ÿółta.
  • Ta sama faktura widnieje w KSeF dla sprzedawcy i nabywcy – bez filtra na typ masz duplikaty sum.
W tym artykule

Od problemu do efektu

PWE
1
Problem
Ręczny eksport pełen pułapek

Każde z 5 błędów pojawia się w innym momencie – od pobrania pliku, przez import, po analizę danych. Razem pochłaniają 2–4 godziny miesięcznie przy zaledwie 100 fakturach.

2
Jak rozwiązujemy
Parser FA(3) + batch z retry

KSeF Import parsuje XML FA(3) do płaskiej tabeli, zapisuje kwoty jako typ liczbowy, dodaje BOM do CSV, respektuje limity API i rozdziela kosztowe od sprzedażowych – bez żadnego ręcznego czyszczenia.

3
Efekt
Gotowy .xlsx w ~30 sekund

Zamiast godzin czyszczenia danych dostajesz kompletny, uzgodniony plik Excel – zero duplikatów, zero błędów w kwotach, zero krzaczków w nazwach firm.

Pułapka #1: XML otwarty w Excelu to chaos, nie tabela

Faktura w KSeF to plik XML w schemacie FA(3) – ok. 80 pól zagnieżdżonych w sekcjach: dane wystawcy w <Podmiot1>, nabywcy w <Podmiot2>, pozycje w <Fa>, sumy VAT, oznaczenia GTU, flagi MPP. Struktura jest hierarchiczna i zoptymalizowana pod maszyny, nie pod człowieka.

Gdy otwierasz taki XML bezpośrednio w Excelu, program spłaszcza hierarchię do płaskiej tabeli. Efekt: kolumny z nazwami tagów (ns1:P_1, ns1:P_2), dane rozrzucone po dziesiątkach kolumn, pozycje faktury wymieszane z nagłówkiem. Formuły SUMA nie działają, bo komórki zawierają tekst zamiast liczb.

Najczęstszy błąd

Kliknięcie prawym przyciskiem na pobranym XML → „Otwórz w Excelu". Wynik: widzisz tagi, nie dane. Nie da się tego naprawić ręcznie w sensownym czasie przy 100+ fakturach.

~80 pól
ma schemat FA(3) – hierarchicznie zagnieżdżonych, nieczytelnych wprost w Excelu
Do arkusza trafiają tylko te, których naprawdę potrzebujesz (kilkanaście).

Rozwiązanie: Użyj parsera XML, który zna schemat FA(3). Ręcznie to arkusz XSLT wymagający wiedzy technicznej. Automatycznie – narzędzie takie jak KSeF Import, które parsuje XML i tworzy plik .xlsx z jedną fakturą na wiersz.

Pułapka #2: Kwoty jako tekst – SUMA() zwraca zero

Kopiujesz kwotę z podglądu faktury na portalu KSeF: 1 234,56 PLN. Wklejasz do komórki. Wygląda jak liczba – ale Excel traktuje to jako ciąg znaków. Formuła =SUMA(C2:C50) zwraca 0, tabela przestawna ignoruje wiersze, WYSZUKAJ.PIONOWO nie działa.

Problem ma trzy źródła naraz:

  • Spacja tysięczna – „1 234" to dla Excela tekst, nie 1234. Polski format liczb używa spacji jako separatora tysięcy, ale Excel oczekuje liczby bez separatora.
  • Sufiks „PLN" – portal KSeF wyświetla kwoty z dopiskiem waluty; po wklejeniu Excel widzi ciąg znaków.
  • Kropka vs przecinek – w XML FA(3) separator dziesiętny to kropka (standard XML), w polskim Excelu to przecinek; kwota 1234.56 z surowego XML zostaje tekstem.

Rozwiązanie ręczne: Znajdź i zamień – usuń „PLN", zamień spacje na nic, zamień kropkę na przecinek. Potem Dane → Tekst jako kolumny → Zakończ. Rozwiązanie automatyczne: eksport, który od razu zapisuje kwoty jako typ liczbowy w .xlsx – bez żadnego czyszczenia.

Skonfiguruj raz, pobieraj jednym kliknięciem

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

Wypróbuj za darmo

Pułapka #3: Limit 10 plików z portalu i ~60 faktur/h z API

Portal KSeF pozwala pobrać maksymalnie 10 plików XML naraz. Przy 100 fakturach miesięcznie to 10 rund klikania: zaznacz 10 → pobierz → wróć → zaznacz kolejne 10. Każda runda: ~3 minuty. Łącznie: 30 minut samego klikania.

Jeśli próbujesz obejść to przez API KSeF, napotkasz inny limit. Endpoint pobierania faktur pozwala na około 60 żądań na godzinę dla kombinacji NIP+IP. Przy 100 fakturach to ~2 godziny czekania, nawet z automatycznym skryptem.

Limit KSeFWartośćDotyczy
Pliki z portalu10 narazRęczne pobieranie
Faktury przez API /invoices~60/h na NIPSkrypty i integracje
Zapytania metadanych20/h na NIPListing, wyszukiwanie
Żądania na sekundę8 req/sWszystkie endpointy łącznie
Zakres dat jednego zapytaniamax 3 miesiącedateRange – paczki po 85 dni

Rozwiązanie: Automatyczny batch w tle, który respektuje limity API. KSeF Import pobiera faktury w porcjach, z automatycznym retry przy HTTP 429, i sam planuje kolejne rundy. Przy 100 fakturach: w tle – bez Twojego udziału. Więcej: masowe pobieranie faktur z KSeF.

Pułapka #4: Polskie znaki zamieniają się w krzaczki

Eksportujesz dane do CSV. Otwierasz w Excelu. Zamiast „Żółta Róża Sp. z o.o." widzisz ciąg znaków z daszkami, cyrkumfleksami i symbolami walut. Przyczyna: plik CSV zapisany w UTF-8, a Excel otwiera go w ANSI/Windows-1250 (domyślne dla polskiego Windowsa). UTF-8 zapisuje polskie litery jako 2 bajty – Excel czyta je jako 2 osobne znaki ANSI.

  • Nazwy kontrahentów nieczytelne – nie znajdziesz „Łódzka Fabryka" wyszukiwarką.
  • WYSZUKAJ.PIONOWO nie działa – porównanie „Żółta" z krzaczkiem zwraca #N/D.
  • Import do FK się wysypie – Comarch Optima odrzuci wiersz z nieprawidłowymi znakami.
Szybka naprawa

Zamknij plik. Otwórz Excel, wejdź w Dane → Z pliku tekstowego/CSV, ręcznie wybierz kodowanie UTF-8. Albo od razu eksportuj do .xlsx (Open XML) – który obsługuje Unicode natywnie i nie ma tego problemu w ogóle.

Rozwiązanie systemowe: Plik CSV z nagłówkiem BOM (Byte Order Mark) – 3 bajty na początku pliku mówiące Excelowi „to jest UTF-8". Lub eksport bezpośrednio do .xlsx. KSeF Import dodaje BOM do każdego CSV i oferuje .xlsx jako domyślny format. Więcej o formatach: Excel czy CSV – który format wybrać?

Pułapka #5: Ta sama faktura pojawia się dwa razy

KSeF pokazuje tę samą fakturę obu stronom transakcji. Faktura, którą firma A wystawiła firmie B, widnieje w KSeF jako:

  • subject1 (sprzedawca) – firma A widzi ją jako swoją fakturę sprzedażową,
  • subject2 (nabywca) – firma B widzi ją jako fakturę kosztową.

Problem pojawia się w dwóch scenariuszach:

  • Holding / grupa kapitałowa – firma A sprzedaje firmie B, obie należą do tego samego właściciela. Jeśli pobierasz faktury dla obu NIP-ów do jednego arkusza, ta sama faktura pojawi się dwa razy – raz jako sprzedażowa, raz jako kosztowa.
  • Pobieranie „wszystkich" bez filtra – ściągasz faktury bez podziału na kosztowe/sprzedażowe i możesz dostać duplikaty z obu stron transakcji dla tego samego NIP-u.
Ryzyko niewidoczne gołym okiem

Podwójne kwoty w analizie kosztów, błędna podstawa VAT, rozbieżności z JPK_V7 – i trudno to wykryć bez ręcznego sortowania po numerze KSeF.

Rozwiązanie: Zawsze filtruj faktury po typie: kosztowe (jesteś nabywcą) osobno od sprzedażowych (jesteś wystawcą). Przy wielu NIP-ach – osobny arkusz per NIP. KSeF Import automatycznie rozdziela faktury na zakładki „Zakupy" i „Sprzedaż", a numer KSeF jest unikalny w ramach pary (NIP, typ), więc duplikaty nie przechodzą do arkusza.

5 pułapek – skrócona tabela z rozwiązaniami

Każdą pułapkę można obejść ręcznie – ale to 5 osobnych kroków za każdym razem. Poniżej zestawienie czasu straconego przy 100 fakturach miesięcznie i zalecanego rozwiązania.

#PułapkaStracony czas/mies.Rozwiązanie
1XML w Excelu = chaos kolumn~25 h (przy 100 FV bez parsera)Parser FA(3) → .xlsx
2Kwoty jako tekst30–45 minEksport z formatem liczbowym
3Limit 10 XML + ~60/h API30–90 minAutomatyczny batch z retry
4Polskie znaki = krzaczki20–40 minUTF-8 BOM lub .xlsx
5Duplikaty subject1/subject230–60 minFiltr kosztowe/sprzedażowe
~30 s
tyle trwa eksport, gdy konfigurację masz ustawioną raz
Zamiast 2–4 godzin ręcznego czyszczenia danych przy 100 fakturach miesięcznie.

KSeF Import obsługuje wszystkie 5 pułapek automatycznie: parsuje XML FA(3) do gotowego .xlsx, zapisuje kwoty jako typ liczbowy, dodaje BOM do CSV, respektuje limity API z retry i rozdziela zakupy od sprzedaży. Szczegółowy przewodnik eksportu: KSeF do Excel – pełny poradnik.

Najczęstsze pytania

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

Excel 365 ma lepszy import XML (Power Query potrafi parsować zagnieżdżone struktury). Mimo to schemat FA(3) z ~80 polami i wariantami (faktura VAT, korekta, zaliczka) wymaga ręcznej konfiguracji mapowania. Power Query rozłoży dane, ale nie wie, że P_9A to cena netto, a P_11 to wartość netto. Nadal potrzebujesz transformacji albo gotowego parsera.

Posortuj arkusz po kolumnie Numer KSeF (35-znakowy identyfikator). Użyj formatowania warunkowego: Strona główna → Formatowanie warunkowe → Reguły wyróżniania komórek → Zduplikowane wartości. Podświetlone wiersze to duplikaty. Sprawdź, czy ten sam numer pojawia się raz jako kosztowa i raz jako sprzedażowa – to dwie strony tej samej transakcji, nie błąd. Duplikat to problem, gdy ten sam typ ma ten sam numer KSeF.

Nie. LibreOffice Calc przy otwieraniu CSV wyświetla okno dialogowe z wyborem kodowania – domyślnie proponuje UTF-8. Pułapka z polskimi znakami nie wystąpi, o ile wybierzesz prawidłowe kodowanie. Excel nie daje tego wyboru przy podwójnym kliknięciu na .csv i zakłada Windows-1250.

Zalogowanie + przejrzenie listy + pobranie 10 XML = ok. 3 minuty. Przy 100 fakturach to 10 rund × 3 minuty = 30 minut samego klikania. Dodaj parsowanie XML (20 min z Power Query, 2 godziny bez niego), czyszczenie kwot (30 min) i weryfikację (15 min). Łącznie: 1,5–3 godziny. Z automatycznym eksportem: ok. 30 sekund.

Zamknij plik w Excelu. Otwórz ponownie przez Dane → Z pliku tekstowego/CSV i ręcznie wybierz kodowanie UTF-8. Alternatywnie zamień plik na .xlsx – format Open XML obsługuje Unicode natywnie i nie ma tego problemu.

API KSeF udostępnia ok. 60 faktur na godzinę dla jednego NIP. Dodatkowo zapytania metadanych (listing faktur) są ograniczone do 20 na godzinę, a globalny limit dla wszystkich endpointów łącznie to 8 żądań na sekundę. Pojedyncze zapytanie obejmuje maksymalnie 3 miesiące. Narzędzia automatyczne jak KSeF Import respektują te limity i kompletują historię partiami w tle.

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