Import odczytuje faktury bezpośrednio z KSeF, więc nie muszą one istnieć w inFakcie. Lista zawiera najważniejsze dane, a pełną fakturę pobiera się na podstawie numeru KSeF.
Wymagania
- Klucz API z zakresem
api:invoices:readw zmiennejINFAKT_API_KEY.
Kroki
Pobranie listy faktur zakupowych
Faktury sprzedażowe zwraca
/ksef2/import/incomes.json, z tymi samymi parametrami.curl "https://api.sandbox-infakt.pl/v3/ksef2/import/costs.json?q%5Binvoice_date_gteq%5D=2026-10-01&q%5Binvoice_date_lteq%5D=2026-10-31&offset=0&limit=100" \ -H "X-inFakt-ApiKey: $INFAKT_API_KEY"const res = await fetch("https://api.sandbox-infakt.pl/v3/ksef2/import/costs.json?q%5Binvoice_date_gteq%5D=2026-10-01&q%5Binvoice_date_lteq%5D=2026-10-31&offset=0&limit=100", { method: "GET", headers: { "X-inFakt-ApiKey": process.env.INFAKT_API_KEY, }, }); const data = await res.json(); console.log(res.status, data);import os import requests res = requests.get( "https://api.sandbox-infakt.pl/v3/ksef2/import/costs.json?q%5Binvoice_date_gteq%5D=2026-10-01&q%5Binvoice_date_lteq%5D=2026-10-31&offset=0&limit=100", headers={"X-inFakt-ApiKey": os.environ["INFAKT_API_KEY"]}, ) print(res.status_code, res.json())<?php $ch = curl_init('https://api.sandbox-infakt.pl/v3/ksef2/import/costs.json?q%5Binvoice_date_gteq%5D=2026-10-01&q%5Binvoice_date_lteq%5D=2026-10-31&offset=0&limit=100'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'X-inFakt-ApiKey: ' . getenv('INFAKT_API_KEY'), ], ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo $status, ' ', $response, PHP_EOL;Pobranie faktury
Parametr
file_formatprzyjmuje wartośćxml(domyślnie),pdflubhtml:curl "https://api.sandbox-infakt.pl/v3/ksef2/import/$KSEF_NUMBER.json?file_format=xml" \ -H "X-inFakt-ApiKey: $INFAKT_API_KEY" \ -o faktura.xmlconst res = await fetch(`https://api.sandbox-infakt.pl/v3/ksef2/import/${process.env.KSEF_NUMBER}.json?file_format=xml`, { method: "GET", headers: { "X-inFakt-ApiKey": process.env.INFAKT_API_KEY, }, }); const fs = await import("node:fs/promises"); await fs.writeFile("faktura.xml", Buffer.from(await res.arrayBuffer())); console.log(res.status);import os import requests res = requests.get( f"https://api.sandbox-infakt.pl/v3/ksef2/import/{os.environ['KSEF_NUMBER']}.json?file_format=xml", headers={"X-inFakt-ApiKey": os.environ["INFAKT_API_KEY"]}, ) open("faktura.xml", "wb").write(res.content) print(res.status_code)<?php $ch = curl_init('https://api.sandbox-infakt.pl/v3/ksef2/import/' . getenv('KSEF_NUMBER') . '.json?file_format=xml'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'X-inFakt-ApiKey: ' . getenv('INFAKT_API_KEY'), ], ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); file_put_contents('faktura.xml', $response); echo $status, PHP_EOL;
Weryfikacja
Przykładowy element listy:
{
"ksef_number": "1234563218-20261001-0A1B2C3D4E5F-6A",
"invoice_number": "FV/123/10/2026",
"invoice_kind": "Vat",
"invoice_date": "2026-10-01",
"seller_name": "Dostawca Sp. z o.o.",
"seller_tax_code": "5260250274",
"gross_price": 12300,
"net_price": 10000,
"tax_price": 2300,
"currency": "PLN"
}Plik faktura.xml zawiera fakturę w formacie FA, w postaci przechowywanej w KSeF. Przy pobieraniu setek faktur żądania należy rozłożyć w czasie.