← Back to all articles

Tři uzly n8n, jeden archiv připravený na compliance

SealDoc Team · · 4 min read

Nejtěžší částí automatizace compliance jsou málokdy samotná pravidla. Je to instalatérská práce, která ta pravidla propojuje se systémy, na nichž už váš byznys běží. Pravidla říkají, že každá B2B faktura musí být ve strukturovaném elektronickém formátu, archivovaná deset let a navázaná na chain of custody odolnou proti manipulaci. Váš účetní software říká “máte novou přílohu ve sdílené schránce”. Postavit most mezi těmito dvěma světy je místo, kde většina týmů uvázne.

Tento článek provází nejmenším workflow, který tu mezeru skutečně zacelí, postavený v n8n s komunitním uzlem n8n-nodes-sealdoc. Tři propojené uzly. Zhruba 200 řádků JSON, když workflow vyexportujete. Žádný vlastní kód.

Co stavíme

Workflow, který pro každé příchozí PDF dělá toto:

  1. Vyzvedne soubor z triggeru dle vašeho výběru (poštovní schránka, watch folder, upload do Slacku, externí webhook, cokoli, co n8n umí poslouchat).
  2. Předá ho SealDocu, který ho převede na PDF/A-3, vloží Factur-X XML vedle vyrenderované faktury, připojí časové razítko RFC 3161 a sbalí celek do stažitelného archivu.
  3. Uloží výsledek tam, kam to ukládá vaše politika retence.

Co stavět nemusíte: převod na PDF/A-3, extrakci Factur-X XML, časové razítkování, audit trail, hash manifestu evidence packu, logiku opakování pro autoritu časového razítka. API SealDoc dělá tuhle práci za jediným HTTP endpointem.

Předpoklady

  • Instance n8n, self-hosted nebo n8n Cloud. Komunitní uzel funguje na obou.
  • Účet SealDoc minimálně v plánu Starter (moat-features, na kterých tento workflow stojí, custody, časová razítka a evidence packy, jsou dostupné od Starteru).
  • API klíč SealDoc. Vygenerujte si ho v dashboardu pod API keys, secret zkopírujte jednou (znovu ho už neukážeme).

Nainstalujte komunitní uzel:

npm i n8n-nodes-sealdoc

Restartujte n8n. Uzel SealDoc se nyní objeví pod Nodes se třemi zdroji: Job, Validator a Peppol.

Uzel 1, trigger

Vyberte trigger odpovídající místu, kam vám faktury dnes přicházejí. V tomto průvodci použijeme Gmail Trigger, protože je to nejčastější podoba, kterou vidíme, ale vzorec je identický pro IMAP, OneDrive, SharePoint, URL Webhooku n8n nebo sledovanou složku.

Nakonfigurujte Gmail Trigger tak, aby se spustil při nových zprávách s PDF přílohou v konkrétním labelu, např. incoming-invoices. Výstupem tohoto uzlu je binární PDF v attachments[0].data.

Uzel 2, SealDoc Job · Create

Přetáhněte uzel SealDoc na plátno, nastavte Resource na Job a Operation na Create. Nakonfigurujte:

  • File: přivažte k {{ $binary.attachments_0 }} (PDF z Uzlu 1).
  • Embed Factur-X: ON. SealDoc automaticky detekuje pole faktury a vygeneruje strukturované XML; pokud zdrojové PDF už obsahuje XML přílohu, SealDoc ji respektuje a validuje místo přepisu.
  • Timestamp: ON. Výstupní PDF/A-3 ponese časové razítko RFC 3161 z TSA, kterou provozujeme my, později dotazovatelné jako důkaz, kdy dokument existoval.
  • Retention category: zvolte tu, kterou nařizuje váš daňový zákon (kategorie pro českou daňovou legislativu je v rozbalovací nabídce).

Uzel se okamžitě vrátí s jobId a status pending. Nečekejte zde synchronně. Konverze Factur-X plus časové razítko se obvykle dokončí pod pět sekund pro běžnou fakturu, ale zpracování PDF není deterministické a nechcete, aby pomalé PDF daňového přiznání zablokovalo celou frontu.

Uzel 3, SealDoc Job · Get

Přidejte další uzel SealDoc. Nastavte Resource na Job a Operation na Get. Přivažte Job ID k {{ $node["SealDoc Create"].json.jobId }}. Zabalte uzel do primitiva Wait v n8n se zpožděním 2 sekundy a maximálně 10 iteracemi, polling, dokud status není completed nebo failed.

Při completed nese odpověď downloadUrl platný pět minut. URL ukazuje na převedené PDF/A-3, které je teď v souladu s Factur-X, opatřené časovým razítkem a registrované v naší chain of custody.

Dostanete také evidencePackUrl, pokud váš plán zahrnuje evidence packy. Ten ZIP obsahuje původní PDF, převedené PDF/A-3, Factur-X XML, RFC 3161 token, soubor s hashem manifestu a JSON potvrzení vyjmenovávající každý krok. Auditoři to milují, protože je to samostatné a ověřitelné offline; můžete předat kopii daňovému inspektorovi a ten může ověřit integritu, aniž by volal naše servery.

Co s chybami

SealDoc vrací strukturované důvody selhání v poli failureReason. Čtyři, které v praxi uvidíte:

  • validation_failed, zdrojové PDF je poškozené nebo chráněné heslem. Vraťte to týmu, který ho nahrál.
  • unsupported_source, např. skutečně zašifrované PDF, které neumíme otevřít. Pošlete zpět odesílateli.
  • timestamp_unavailable, naše TSA měla výpadek. Automaticky opakujeme; pokud se rozpočet opakování vyčerpá, job skončí jako failed a můžete ho spustit znovu.
  • quota_exceeded, měsíční limit jobů vašeho plánu byl dosažen. Buď upgrade, nebo počkejte na reset.

V n8n nasměrujte větev failed uzlu Get na notifikaci do Slacku nebo e-mailu, aby člověk věděl, když něco opravdu vázne.

Proč tři uzly stačí

Všimnete si, že tento workflow sám o sobě neprovádí žádnou logiku validace, podpisu ani archivace. Přesně o to jde. API SealDoc je hranice; váš n8n workflow je pojivová tkáň mezi tou hranicí a vašimi byznys systémy. Až belgický B2B mandát vstoupí v platnost, tento workflow nebudete muset přestavovat. Až nastoupí francouzská povinnost ze září 2026, nebudete ho muset přestavovat. Až regulátor v roce 2027 aktualizuje profil Factur-X, povýšíte verzi uzlu SealDoc.

To je hodnota vzoru connector: regulační turbulence žije v naší codebase, ne ve vaší.

Za hranicemi n8n

Pokud n8n nepoužíváte, každá operace z tohoto tutoriálu je dostupná i přímo přes REST API SealDoc, nebo přes Webhooky, pokud preferujete push notifikace před pollingem. Kompletní menu žije na naší stránce integrací, s příklady ke zkopírování pro každou plochu. Konektory Make, Zapier a Exact Online jsou v aktivní výstavbě; pokud váš stack některý z nich používá, napište nám pro early access.

Instalatérská práce kolem compliance je vyřešená. Co uděláte s ušetřeným časem, je na vás.


← Back to all articles