Konfigurácia outbound hooku KSeF na automatickú registráciu faktúr v poľskom systéme elektronickej fakturácie.
PSB má dva hooky KSeF: outbound hook pre odchádzajúce faktúry (predávajúca strana / Podmiot1) a inbound hook pre prichádzajúce faktúry (kupujúca strana / Podmiot2). Oba automatizujú výmenu s Krajowym Systeme e-Faktur (KSeF), poľským národným systémom elektronickej fakturácie. Outbound hook je opísaný nižšie ako prvý; inbound hook sa nachádza na konci tejto stránky.
Outbound hook KSeF automatizuje registráciu odchádzajúcich faktúr v KSeF. Faktúry sa transformujú z formátu Peppol BIS Billing 3.0 / UBL (interne aj BisV3) do poľského formátu FA(3) a registrujú ako dávka (batch). Zákazník môže FA(3) dodať aj sám, vtedy sa krok transformácie preskočí. Po úspešnom spracovaní hook vráti UPO (Urzędowe Poswiadczenie Odbioru, oficiálne potvrdenie o prijatí) a PDF dôkaz cez platformu PSB.
Na testovanie a akceptáciu ponúka poľská štátna správa okrem produkčného prostredia ešte dve ďalšie:
Hook podporuje online tok (priama registrácia) aj offline tok (keď KSeF je dočasne nedostupný, napríklad počas denného výpadku). V offline toku sa vygeneruje offline PDF na základe offline certifikátu.
.key + .crt; autentifikácia počas online toku).key + .crt; QR kódy vo výstupnom PDF, pri online aj offline spracovaní)Po prijatí upozornenia na faktúru hook prejde siedmimi krokmi:
POST /v2/sessions/batch)GET /v2/sessions/{referenceNumber}/status)GET /v2/sessions/{referenceNumber}/invoices)GET /v2/sessions/{referenceNumber}/upo)Keď KSeF nie je dostupný (denný výpadok alebo porucha), offline tok sa spustí automaticky: vygeneruje sa offline PDF cez offline certifikát, potom sa faktúra odošle bežným kanálom.
Zaregistrujte hook cez API Hooks:
{
"id": "ksef-sender",
"action": "ksef",
"name": "KSeF Hook Sender",
"topics": [
"ClearInvoiceBatched"
],
"output": [
{
"when": "200",
"topic": "SendInvoice"
},
{
"when": "410",
"topic": "SendInvoice"
}
],
"init": {
"onlineCertificate": "{{cesta-k-online-certifikatu}}",
"onlineCertificatePassword": "{{heslo}}",
"offlineCertificate": "{{cesta-k-offline-certifikatu}}",
"offlineCertificatePassword": "{{heslo}}"
},
"isActive": true
}
onlineCertificateonlineCertificatePasswordofflineCertificateofflineCertificatePasswordtopicsClearInvoiceBatched pre odchádzajúce faktúryoutputisActivetrue na aktiváciu hookuDôležité: Všetky štyri polia certifikátu sú povinné. Online certifikát je potrebný na autentifikáciu počas online toku. Offline certifikát je potrebný na generovanie QR kódov v PDF, pri online aj offline spracovaní.
200SendInvoice201InvoiceCleared410SendInvoice429InvoiceClearedRetry500InvoiceClearedErrorPri stavovom kóde 410 PSB automaticky spustí offline tok. Faktúra sa potom spracuje lokálne s offline certifikátom a odošle sa, keď bude KSeF opäť dostupný. Pri 429 PSB naplánuje automatické opakovanie.
KSeF má dennú odstávku, počas ktorej systém nie je dostupný na dávkovú registráciu. Približne po 23:00 poľského miestneho času sa spustí offline tok, hneď ako je KSeF nedosiahnuteľný (stavový kód 410):
Po návrate KSeF sa offline spracované faktúry dodatočne zaregistrujú a faktúra dostane stavový kód 201 (InvoiceCleared). Faktúra sa potom znova neposiela príjemcovi; predtým odoslaný offline QR kód po tejto neskoršej registrácii odkazuje na potvrdenú registráciu KSeF.
Po online clearance vráti KSeF referenčné číslo. Toto číslo je uvedené v UPO a v podrobnostiach odchádzajúceho webhooku, napríklad:
"details": {
"clearanceReference": "234563218-20260220-50683A000001-11",
"clearanceSystem": "KSeF"
}
Uchovajte referenčné číslo v odosielajúcom ERP ako doklad o registrácii v KSeF.
Pri veľkých objemoch: umiestnite dávkový hook pred hook KSeF, aby faktúry odchádzali do KSeF periodicky (napríklad každých 15 sekúnd až 1 minútu, alebo maximálne 100 kusov naraz) ako dávka. Integrácia tak menej často naráža na rate limity KSeF. Preferovaný vzor tém: ClearInvoice → dávka → ClearInvoiceBatched → hook KSeF. Navyše je potrebný samostatný hook, ktorý publikuje odchádzajúce faktúry na tému ClearInvoice (v závislosti od toku).
Príklad dávkového hooku (preferovaný; parametre upraviť podľa zákazníka):
{
"id": "batchClearInvoice",
"name": "Batch Invoices for KSeF",
"action": "batch://zip?period=00:01:00&maxBatchSize=100&excludePrimaryAttachment=false&includeAdditionalAttachments=true&hashAlgorithm=sha256&includeRefToMetaAttributes=true&targetDocumentTypeId=econnect-docid%3A%3Ahttp%3A%2F%2Fcrd.gov.pl%2Fwzor%2F2025%2F06%2F25%2F13775%3A%3AFaktura%23%23ksef%3A%3A3.0",
"topics": ["ClearInvoice"],
"isActive": true
}
Krátka forma akcie (rovnaký cieľ FA(3); period napríklad 00:00:15):
batch://zip?period=00:00:15&maxBatchSize=100&excludePrimaryAttachment=false&includeAdditionalAttachments=true&hashAlgorithm=sha256&includeRefToMetaAttributes=true&targetDocumentTypeId=econnect-docid%3A%3Ahttp%3A%2F%2Fcrd.gov.pl%2Fwzor%2F2025%2F06%2F25%2F13775%3A%3AFaktura%23%23ksef%3A%3A3.0
Niektorí zákazníci nemôžu odosielať faktúry s témou ClearInvoice (napríklad Business Central). V takom prípade upravte dávkový hook tak, aby počúval na SendInvoice a napriek tomu publikoval ClearInvoiceBatched:
{
"id": "batchClearInvoice",
"name": "Batch Invoices for KSeF",
"action": "batch://zip?period=00:01:00&maxBatchSize=100&excludePrimaryAttachment=false&includeAdditionalAttachments=true&hashAlgorithm=sha256&includeRefToMetaAttributes=true&targetDocumentTypeId=econnect-docid%3A%3Ahttp%3A%2F%2Fcrd.gov.pl%2Fwzor%2F2025%2F06%2F25%2F13775%3A%3AFaktura%23%23ksef%3A%3A3.0",
"topics": ["SendInvoice"],
"output": [
{ "when": "200", "topic": "ClearInvoiceBatched" },
{ "when": "500", "topic": "ClearInvoiceBatchedError" },
{ "when": "429", "topic": "ClearInvoiceBatchedRetry" }
],
"isActive": true
}
PSB používa online certifikát na autentifikáciu voči KSeF počas online registračného toku. Offline certifikát je potrebný na QR kódy vo výstupnom PDF, a to pri online aj offline spracovaní. Všetky štyri polia (obe cesty k certifikátom a heslá) musia byť preto vyplnené.
Pri 410 je KSeF offline (napríklad počas odstávky); PSB spustí offline tok s offline PDF a následne odošle cez bežný kanál. Pri 429 dočasne nie je kapacita; PSB automaticky naplánuje opakovanie na InvoiceClearedRetry.
Použite ClearInvoiceBatched v topics, aby hook počúval na správne dávkové notifikácie. Objekt output mapuje HTTP stavové kódy na nadväzujúce témy ako SendInvoice alebo InvoiceCleared, v závislosti od výsledku registrácie.
Inbound hook KSeF spracováva prichádzajúce faktúry pre kupujúcu stranu (Podmiot2). Hook periodicky dopytuje KSeF na nové faktúry, získava XML faktúry podľa čísla KSeF a doručuje ho cez platformu PSB.
Autentifikácia voči KSeF prebieha výhradne cez online certifikát (.key + .crt + heslo). Inbound tok nemá offline variantu, na rozdiel od outbound hooku. Pri dočasnej nedostupnosti KSeF sa dopytovanie opakuje podľa nakonfigurovanej retry politiky.
POST /v2/invoices/query/metadata). Stránkovanie cez HasMore / NextPageOffset (vnútorná slučka); skrátenie cez IsTruncated / HwmDate (vonkajšia slučka) pri viac ako 10 000 položkách.GET /v2/invoices/ksef/{ksefNumber}) a nahrá ho do DocumentCarrier. Duplicitné faktúry (HTTP 409) sa preskočia. Po každom úspešnom nahratí sa odstráni pending kľúč, takže krok možno pri opakovaní úplne obnoviť.HwmDate ?? ToDate) a naplánuje ďalší cyklus dopytovania na nasledujúci pevný časový slot.Ak sa počas Fetch nenájde žiadna faktúra, hook preskočí priamo na Complete: nič sa nespracuje ani nepublikuje.
onlineCertificate a onlineCertificatePassword sú povinné (žiadne polia offline certifikátu).Inbound hook sa nastavuje cez TechSupport: spracovanie certifikátov je postup výhradne pre technickú podporu, nie je to self-service.
Parameter action určuje časové okno, do ktorého sa hook pozerá späť: ksef:inbound?lookbackWindow=<okno>. V init je uvedený iba online certifikát.
Štandardná (publikuje na tému ReceiveInvoice):
{
"id": "ksef-inbound",
"action": "ksef:inbound?lookbackWindow=08:00:00",
"name": "KSeF Hook Inbound",
"publishTopics": ["ReceiveInvoice"],
"init": {
"onlineCertificate": "{{cesta-k-online-certifikatu}}",
"onlineCertificatePassword": "{{heslo}}"
},
"isActive": true
}
Po inbound hooku musí vždy nasledovať nadväzujúci hook, ktorý prijatú faktúru ďalej spracuje.
Variant platformy Collabrr: na platforme Collabrr hook počúva v tenante s publishTopics: ["InvoiceReceived"]. Organizácia musí byť na platforme registrovaná na príjem Peppol. Príklad akcie: ksef:inbound?lookbackWindow=08.00:00:00.
Parameter lookbackWindow určuje časové okno, do ktorého sa hook pozerá späť pri dopytovaní/vytváraní:
"08:00:00""60.00:00:00"KSeF obmedzuje spätné hľadanie na maximálne 3 mesiace. Pri prekročení dôjde k chybe:
21405: Błąd walidacji danych wejściowych. - 'dateRange' must not exceed 3 months.
Okrem toho platí limit rýchlosti požiadaviek voči KSeF. Zohľadnite to pri aktivácii viacerých subjektov s (veľkým) lookbackWindow.
Chcete sa dozvedieť viac o elektronickej fakturácii v Poľsku? Prečítajte si stránku krajiny o poľskej povinnosti KSeF.
Zobraziť dokumentáciu API