Pobieranie faktur z KSeF
Moduł invoices pozwala pobierać faktury z KSeF API za wybrany okres, filtrować je po NIP kontrahenta i przetwarzać wyniki w kodzie lub z poziomu terminala.
Kiedy używać
Dział zatytułowany „Kiedy używać”Używaj tego modułu, gdy:
- masz dostęp do KSeF API (token autoryzacyjny) i chcesz pobrać faktury za dany okres,
- chcesz zautomatyzować pobieranie faktur w cyklu miesięcznym,
- przygotowujesz dane do uzgadniania z wyciągiem bankowym.
Wymagania
Dział zatytułowany „Wymagania”- Produkcja — adapter KSeF z tokenem autoryzacyjnym (
KsefAdapter) - Testy / rozwój — symulator offline (
@ksefnik/simulator) — nie wymaga dostępu do internetu
Pobieranie faktur
Dział zatytułowany „Pobieranie faktur”import { createKsefnik } from '@ksefnik/core';import { KsefAdapter } from '@ksefnik/core/adapters';
const ksef = createKsefnik({ config: { nip: '5213456784', environment: 'production', }, adapter: new KsefAdapter({ token: process.env.KSEF_TOKEN!, }),});
// Pobierz faktury za marzec 2026const invoices = await ksef.invoices.fetch({ from: '2026-03-01', to: '2026-03-31',});
console.log(`Pobrano ${invoices.length} faktur`);
for (const inv of invoices) { console.log(`${inv.number} | ${inv.sellerNip} → ${inv.buyerNip} | ${inv.grossAmount} gr`);}# Pobierz faktury za marzec 2026 w formie tabeliksefnik fetch --from 2026-03-01 --to 2026-03-31 --format table
# Zapisz do pliku JSONksefnik fetch --from 2026-03-01 --to 2026-03-31 --format json > faktury-marzec.json
# Pobierz tylko faktury od konkretnego kontrahentaksefnik fetch --from 2026-03-01 --to 2026-03-31 --nip 7740001454Filtrowanie po NIP
Dział zatytułowany „Filtrowanie po NIP”Możesz ograniczyć wyniki do faktur od/do konkretnego kontrahenta:
// Tylko faktury od dostawcy o NIP 7740001454const filtered = await ksef.invoices.fetch({ from: '2026-03-01', to: '2026-03-31', counterpartyNip: '7740001454',});Paginacja
Dział zatytułowany „Paginacja”KSeF API zwraca wyniki stronami. SDK obsługuje paginację automatycznie — iteruje po wszystkich stronach i zwraca pełną listę. Jeśli chcesz kontrolować paginację ręcznie:
const page1 = await ksef.invoices.fetch({ from: '2026-03-01', to: '2026-03-31', pageSize: 50, pageOffset: 0,});
const page2 = await ksef.invoices.fetch({ from: '2026-03-01', to: '2026-03-31', pageSize: 50, pageOffset: 50,});Obsługa błędów
Dział zatytułowany „Obsługa błędów”SDK rzuca typowane wyjątki, które pozwalają precyzyjnie reagować na problemy:
import { KsefApiError, KsefTimeoutError } from '@ksefnik/core/errors';
try { const invoices = await ksef.invoices.fetch({ from: '2026-03-01', to: '2026-03-31', });} catch (error) { if (error instanceof KsefTimeoutError) { console.error('KSeF nie odpowiedział w wymaganym czasie. Spróbuj ponownie.'); } else if (error instanceof KsefApiError) { console.error(`Błąd KSeF API: ${error.code} — ${error.message}`); } else { throw error; }}Użycie z symulatorem
Dział zatytułowany „Użycie z symulatorem”Do testów i rozwoju lokalnego użyj symulatora zamiast prawdziwego API:
import { createKsefnik } from '@ksefnik/core';import { SimulatorAdapter } from '@ksefnik/simulator';
const ksef = createKsefnik({ config: { nip: '5213456784', environment: 'test', }, adapter: new SimulatorAdapter({ invoiceCount: 50, // wygeneruj 50 losowych faktur dateRange: { from: '2026-03-01', to: '2026-03-31' }, }),});
const invoices = await ksef.invoices.fetch({ from: '2026-03-01', to: '2026-03-31',});Przykład: biuro rachunkowe pobiera faktury klienta
Dział zatytułowany „Przykład: biuro rachunkowe pobiera faktury klienta”- Biuro rachunkowe konfiguruje ksefnik z tokenem klienta (NIP
5213456784). - Uruchamia
ksefnik fetch --from 2026-03-01 --to 2026-03-31 --format json > klient-marzec.json. - Plik JSON zawiera wszystkie faktury klienta za marzec — gotowe do uzgodnienia z wyciągiem bankowym.
- Następny krok: import wyciągu bankowego i uzgadnianie.