Skip to content

Wystawianie wielu faktur naraz

Jak tworzyć wiele faktur w kolejce i odbierać wyniki bez konfliktów numeracji.

Zaktualizowano

Endpoint POST /async/invoices.json przyjmuje tę samą treść żądania co tworzenie synchroniczne, ale zamiast faktury od razu zwraca identyfikator zadania. Zlecenia trafiają do kolejki, która nadaje numery po kolei, więc równoległe zlecenia nie powodują konfliktów numeracji.

Wymagania

  • Klucz API z zakresami api:invoices:write i api:invoices:read w zmiennej INFAKT_API_KEY.
  • Opcjonalnie: webhook ze zdarzeniami async_invoice_creation_success i async_invoice_creation_error.

Kroki

  1. Zlecenie utworzenia faktury

    Każda faktura to osobne zlecenie. Faktura, która ma od razu trafić do KSeF, wymaga parametru ?send_to_ksef=true.

    Odpowiedź 201 potwierdza przyjęcie zlecenia:

    {
      "invoice_task_reference_number": "4f6a8c1e-2b3d-4e5f-9a7b-8c9d0e1f2a3b",
      "processing_code": 100,
      "processing_description": "Zlecenie przyjęte",
      "action": "create_invoice",
      "invoice_kind": "invoice",
      "timestamps": {
        "task_created_at": "2026-10-02 12:00:00 +0200"
      }
    }

    Wartość invoice_task_reference_number warto zapisać, np. przy zamówieniu w systemie sklepu.

  2. Odbiór wyniku

    Najprościej odebrać webhook async_invoice_creation_success, w którym pole resource.invoice_uuid wskazuje utworzoną fakturę. Bez webhooka status zadania sprawdza się co kilka sekund:

Weryfikacja

Wartość processing_code: 201 oznacza, że faktura została utworzona. Pole invoice_uuid zawiera jej identyfikator:

{
  "invoice_task_reference_number": "4f6a8c1e-2b3d-4e5f-9a7b-8c9d0e1f2a3b",
  "processing_code": 201,
  "processing_description": "Faktura stworzona",
  "action": "create_invoice",
  "invoice_kind": "invoice",
  "invoice_uuid": "9bdc76fd-7a02-42ec-a4a3-42bc867b9a9f"
}

Wartość processing_code: 422 oznacza błąd. Szczegóły zawiera pole invoice_errors. Po poprawieniu danych zlecenie wysyła się ponownie. Kody 100, 120 i 140 oznaczają, że zadanie jest jeszcze przetwarzane.

Następne kroki

Type to search…

↑↓ wybór↵ otwórzEsc zamyka