Ako riešiť idempotenciu pri odosielaní eFaktúry?
Krátka odpoveď
Pri odosielaní používajte idempotency key viazaný na faktúru, verziu XML a pokus odoslania. Ak rovnaký request príde znova po timeoute alebo retry, systém ho má rozpoznať a nevyrobiť druhé odoslanie. Idempotencia je ochrana pred duplicitami.
Jednoznačný kľúč
Viažte ho na doklad a verziu XML.
Bez duplicity
Opakovaný request nemá vytvoriť druhé odoslanie.
Nové XML
Zmenený obsah potrebuje nový záznam a dôvod.
Výsledok pokusu
Uložte, či šlo o nový alebo opakovaný request.
Podrobné vysvetlenie
Idempotency key môže byť odvodený z interného invoiceId, čísla faktúry, verzie exportu a hash XML. Dôležité je rozhodnúť, čo znamená rovnaký pokus a čo už je nová verzia dokladu. Ak sa zmení XML, má vzniknúť nový kontext a jasný auditný záznam.
Ako to vyplýva zo zákona
Preukázateľný proces musí vedieť odlíšiť opakovaný technický pokus od nového alebo opraveného dokladu. Bez toho hrozí duplicitné doručenie a nesprávne účtovné spracovanie.
Praktické príklady
- Timeout spôsobí retry s rovnakým key a API vráti pôvodné submissionId.
- Používateľ klikne odoslať dvakrát, druhý pokus sa označí ako duplicita requestu.
- Po oprave sumy vznikne nový hash a systém vyžaduje nový schvaľovací krok.
Najčastejšie chyby
- „Idempotencia je len technický detail.“ Pri faktúrach chráni pred obchodnou duplicitou.
- „Kľúč môže byť len číslo faktúry.“ Pri verziách a opravách to nemusí stačiť.
- „Duplicitný request môžem ignorovať bez logu.“ Aj ignorovanie má byť záznam.
Záver
Idempotencia je povinná praktická ochrana pri API odosielaní eFaktúr.
Právny základ
- Zákon č. 431/2002 Z. z. o účtovníctve
- Zákon č. 222/2004 Z. z. o DPH
- Interné pravidlá integrity dokladov
Súvisiace otázky
Nie je to právne poradenstvo. Zdroje: zákon č. 222/2004 Z. z. o DPH, Finančná správa SR eFaktúra FAQ, OpenPeppol BIS Billing 3.0 a interný validačný model eFaktúra centra. Overené 7. 7. 2026.