---
title: "Import faktur z KSeF"
description: "Jak pobrać z KSeF listę faktur sprzedażowych lub zakupowych oraz ich pliki XML, PDF lub HTML."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.niebieskiorzel.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Import faktur z KSeF

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.

> **Wymagana integracja z KSeF**
>
> Integrację konta inFakt z KSeF konfiguruje się wyłącznie w aplikacji inFakt, za pomocą certyfikatu KSeF. API tego nie umożliwia. Instrukcja: [Integracja z KSeF 2.0 (certyfikat)](https://pomoc.infakt.pl/hc/pl/articles/32484539475986-Integracja-z-KSeF-2-0-certyfikat). Bez aktywnej integracji wysyłka do KSeF kończy się błędem `422`.

## Wymagania

- Klucz API z zakresem `api:invoices:read` w zmiennej `INFAKT_API_KEY`.

> **Limit 6 żądań na godzinę**
>
> Pobieranie list faktur sprzedażowych i zakupowych podlega wspólnemu limitowi 6 żądań na godzinę. Pobieranie pojedynczych faktur nie wlicza się do tego limitu, ale obowiązują limity KSeF: 8 żądań na sekundę, 16 na minutę i 64 na godzinę.

## Kroki

1. **Pobranie listy faktur zakupowych**

   Faktury sprzedażowe zwraca `/ksef2/import/incomes.json`, z tymi samymi parametrami.

   ```sh
   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"
   ```

   ```js
   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);
   ```

   ```python
   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
   <?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;
   ```
2. **Pobranie faktury**

   Parametr `file_format` przyjmuje wartość `xml` (domyślnie), `pdf` lub `html`:

   ```sh
   curl "https://api.sandbox-infakt.pl/v3/ksef2/import/$KSEF_NUMBER.json?file_format=xml" \
     -H "X-inFakt-ApiKey: $INFAKT_API_KEY" \
     -o faktura.xml
   ```

   ```js
   const 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);
   ```

   ```python
   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
   <?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:

```json
{
  "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.

## Następne kroki

- [Limity zapytań](/referencje/limity-zapytan/)
- [Operacja w referencji API](/api/ksef-list-purchase-invoices/)

Source: https://docs.niebieskiorzel.pl/poradniki/ksef/zaimportuj-faktury/index.mdx
