← Back to all articles

Co je Peppol BIS 3.0? Praktický vývojářský úvod

SealDoc Team · · 4 min read

Pokud vytváříte fakturační software v Evropě, dříve nebo později narazíte na Peppol.

Pro mnoho vývojářů je první setkání matoucí: XML všude, podivné identifikátory, SMP a SML discovery, UBL faktury, EN16931 pravidla, validační selhání s kryptickými zprávami.

Tento článek vysvětluje Peppol BIS Billing 3.0 z praktického inženýrského pohledu. Žádný firemní žargon. Jen části, které vývojáři skutečně potřebují pochopit.

Co je Peppol?

Peppol je evropská interoperabilní síť pro výměnu elektronických obchodních dokumentů. Nejčastějším případem užití je elektronická fakturace.

Místo posílání PDF e-mailem odesílají dodavatelé strukturované fakturační dokumenty přímo mezi systémy. Faktura Peppol je strojově čitelná, standardizovaná, validovaná a automaticky zpracovatelná.

To umožňuje účetním systémům a ERP platformám zpracovávat faktury s minimální manuální prací.

Co znamená BIS 3.0?

BIS znamená Business Interoperability Specifications. Peppol BIS Billing 3.0 definuje:

  • strukturu faktury
  • povinná pole
  • validační pravidla
  • povolené číselníky
  • očekávání pro přenos

Syntaxe je založena na UBL 2.1 a EN16931. V praxi: EN16931 definuje sémantický model faktury, UBL definuje syntaxi XML a Peppol přidává pravidla interoperability. Více o sémantickém modelu EN16931 se dozvíte v článku Porozumění EN16931.

Proč Evropa směřuje k povinné elektronické fakturaci

Více zemí EU směřuje k povinné elektronické fakturaci. Mezi příklady patří Belgie, Německo, Francie, Polsko a Itálie. Vlády chtějí snížit podvody s DPH, automatizovat daňové zpracování, interoperabilní veřejné zakázky a standardizovanou výměnu faktur.

To znamená, že znalost Peppol se stává znalostí infrastruktury.

Jak vypadá faktura Peppol?

Faktura Peppol je dokument UBL 2.1 XML.

<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">

  <cbc:CustomizationID>
    urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1
  </cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>INV-2025-001</cbc:ID>
  <cbc:IssueDate>2025-11-12</cbc:IssueDate>

  <cac:AccountingSupplierParty>
    <!-- seller details -->
  </cac:AccountingSupplierParty>

  <cac:AccountingCustomerParty>
    <!-- buyer details -->
  </cac:AccountingCustomerParty>

  <cac:LegalMonetaryTotal>
    <!-- totals -->
  </cac:LegalMonetaryTotal>
</Invoice>

Na rozdíl od PDF jsou tyto dokumenty určeny ke spotřebě softwarem. Jediné neplatné pole může způsobit odmítnutí.

Role EN16931

EN16931 je evropský sémantický standard pro faktury. Definuje pojmy jako číslo faktury, výše DPH, identifikátor kupujícího, platební podmínky a daňové výpisy. Peppol BIS 3.0 je postaven na tomto sémantickém modelu.

Proto vývojáři často vidí reference jako BT-10, BT-49 a BR-CO-10. Jde o obchodní termíny a obchodní pravidla definovaná EN16931.

Časté problémy vývojářů

Většina implementací Peppol naráží dříve nebo později na stejné problémy.

Problémy s jmennými prostory. UBL používá mnoho XML jmenných prostorů. Chybná deklarace způsobuje kryptické chyby parseru dříve, než se spustí jakákoli obchodní logika.

Validační chyby. Selhání Schematron validace může být těžké ladit. Chybové zprávy odkazují na kódy BR, jejichž interpretace vyžaduje znalost specifikace EN16931.

Formáty identifikátorů. Identifikátory účastníků a endpointů jsou přísné. Belgická společnost používající schéma enterprise number 0208 musí použít přesně tento kód schématu jako prefix.

XML podpisy. Problémy s kanonizací často narušují validaci podpisu. Jde o obzvláště záludnou kategorii chyb, protože XML vypadá správně při čtení, podpis je platný, ale oba se vzájemně neověří. Podrobnosti viz Úskalí validace XML podpisů v Peppol.

Profily specifické pro jednotlivé země. Německo, Belgie a Francie každá přidává dodatečné požadavky nad rámec základní specifikace Peppol BIS 3.0. Dokument platný pro jednu zemi může být neplatný pro jinou.

SMP a SML discovery

Peppol používá mechanismus discovery podobný DNS. Průběh přibližně funguje takto:

  1. Hashujete identifikátor účastníka
  2. Ze hashe sestavíte DNS hostname
  3. Dotazujete SML (Service Metadata Locator) pro nalezení SMP účastníka
  4. Dotazujete SMP (Service Metadata Publisher) pro získání metadat služby
  5. Zjistíte podporované typy dokumentů a URL endpointů
  6. Doručíte dokument přes přístupový bod

Samotná odpověď SMP je podepsaný XML dokument. Tento podpis způsobuje problémy s kanonizací zmíněné výše.

Proč PDF faktury nestačí

Tradiční PDF faktury jsou čitelné pro lidi. Faktury Peppol jsou strojově čitelné. Mnoho moderních systémů kombinuje obojí: PDF/A-3 pro vizuální reprezentaci, vložené XML pro automatizaci.

Toto je základ Factur-X a ZUGFeRD. Porovnání těchto formátů viz Factur-X vs ZUGFeRD vs XRechnung vs Peppol.

Obtížná část

Generování platného UBL XML není nejtěžší částí. Nejtěžší je generovat XML, které přežije reálnou interoperabilitu:

  • Schematron validace napříč více národními sadami pravidel
  • SMP discovery s dynamickými prefixy jmenných prostorů
  • Ověření XML podpisů na dokumentech, které byly znovu serializovány
  • Povinná pole specifická pro jednotlivé země, která nejsou v základní specifikaci
  • Pravidla zaokrouhlování, která produkují různé výsledky v závislosti na tom, zda zaokrouhlujete po řádcích nebo za celý dokument

V nadcházejících článcích pokryjeme: EN16931 podrobně, UBL vs CII, vnitřnosti SMP discovery, úskalí XML podpisů a časté validační chyby Peppol.

Skutečné náklady obtížné části nejsou čtení specifikace. Je to provozní režie: udržování sad pravidel Schematron aktuálních s každým vydáním Peppol BIS, elegantní zpracování selhání SMP discovery, udržování národních variací pravidel pro Německo, Belgii, Francii a Polsko.

SealDoc je API, které tuto vrstvu zpracovává. Odešlete data faktury jako JSON payload. API generuje dokument UBL, spouští EN16931 a Peppol BIS 3.0 Schematron validaci, provádí SMP discovery, zabaluje dokument do obálky AS4 a doručuje jej přístupovému bodu příjemce. Pokud příjemce není dostupný nebo dokument selže validaci, dostanete strukturovanou chybu přesně ukazující, který krok selhal a proč.

Pro testování a ladění veřejný validátor SealDoc přijímá soubory faktur UBL a CII a vrací přehlednou zprávu o každém porušeném pravidle EN16931 a Peppol BIS 3.0 s číslem BT a kódem obchodního pravidla. Bez nutnosti registrace.


← Back to all articles