Faktura Peppol BIS Billing 3.0 je XML dokument. Právě XML je fakturou: obsahuje strukturovaná data, která může účetní software ověřit, zaúčtovat a automaticky zpracovat. Někdy ale faktura potřebuje také podpůrné materiály, například výkaz práce, dodací protokol nebo PDF čitelné pro člověka. BIS 3.0 umožňuje poslat takový materiál s fakturou jako XML přílohu.
PDF může fakturu zpřehlednit pro člověka, ale nenahrazuje strukturovanou fakturu BIS 3. XML zůstává dokumentem, který mají systémy používat pro validaci a automatické zpracování.
Kam příloha patří v BIS 3
Přílohy se posílají v cac:AdditionalDocumentReference/cac:Attachment. Tato skupina je nepovinná a může se opakovat. Kompletní struktura je v oficiální dokumentaci syntax UBL Invoice v Peppol BIS Billing 3.0.
U vloženého souboru je důležitý element cbc:EmbeddedDocumentBinaryObject. Má dva povinné atributy:
mimeCode, který určuje typ souboru;filename, který určuje jméno souboru pro příjemce.
Minimální vložené PDF může vypadat takto:
| |
Hodnotou elementu není samotné PDF, ale jeho obsah převedený do Base64.
Které formáty jsou podporované?
BIS Billing 3 nepovoluje libovolný MIME typ. Příjemce musí podporovat omezený seznam odvozený od IANA. Oficiální číselník typů médií příloh obsahuje:
| Kategorie | MIME typ |
|---|---|
| Dokument | application/pdf |
| Obrázek | image/png |
| Obrázek | image/jpeg |
| Text | text/csv |
| Tabulka | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
| Tabulka | application/vnd.oasis.opendocument.spreadsheet |
mimeCode musí být jednou z těchto hodnot a přípona souboru by s ním měla souhlasit. ZIP soubor proto neoznačujte jako PDF a Excel neposílejte s mimeCode="application/pdf".
BIS podporuje také externí odkaz přes cac:ExternalReference/cbc:URI. Vložená příloha je pro fakturační podklady obvykle spolehlivější: cestuje spolu s fakturou a nezávisí na pozdější dostupnosti URL, přihlášení ani době platnosti odkazu.
10 MiB versus 100 MiB
Tyto dvě hodnoty se často zaměňují:
- 10 MiB je běžně kontrolovaný limit celé XML zprávy. Nejde o limit jedné přílohy. Kontrola se obvykle týká XML faktury společně se všemi vloženými přílohami a obsahem zprávy, který přijímá Access Point. Několik menších příloh tak může limit překročit.
- 100 MiB je obecná kapacita transportu. Zpráva by obecně měla fungovat až do 100 MiB, ale konkrétní limit je politikou daného Access Pointu. Některý Access Point ji může odmítnout výrazně dříve.
Base64 zvětší každou vloženou binární hodnotu přibližně o třetinu. K tomu se přidá XML, MIME obálka a bezpečnostní režie. Rozhodující proto není velikost souborů na disku, ale velikost výsledné zprávy. Implementace by měla měřit celou zakódovanou zprávu a ponechat rezervu pod limitem příslušného Access Pointu.
U větších podkladů použijte menší relevantní export nebo externí odkaz dohodnutý s příjemcem. Z faktury nedělejte obecný archiv souborů.
Jak se soubor kóduje?
Bajty souboru se zakódují jako Base64 a vloží do cbc:EmbeddedDocumentBinaryObject. Base64 není šifrování ani bezpečnostní kontrola. Příjemce hodnotu dekóduje zpět na bajty a Access Point i cílová aplikace musí stále používat běžnou kontrolu škodlivého obsahu.
Při vytváření přílohy:
- načtěte původní bajty bez převodu přes textové kódování;
- zakódujte je do Base64;
- nastavte správné
mimeCodeafilename; - v testu hodnotu zase dekódujte a porovnejte s originálem;
- zvalidujte celou BIS fakturu i velikost výsledné zprávy.
Proč přílohu posílat?
Strukturované XML je výborné pro automatizaci, ale neobsáhne každý důkaz potřebný v obchodním procesu. Přílohou může být například výkaz práce, dodací nebo přejímací protokol, výpočet, fotografie, tabulka nebo PDF reprezentace pro člověka.
Příloha zvyšuje dohledatelnost: příjemce nemusí párovat soubor z e-mailu ani stahovat odkaz, který později přestane fungovat. Příloha ale má fakturu pouze podporovat, nikoli jí odporovat. Částky, daňové údaje a identifikace stran se mají brát ze strukturovaných dat BIS.
Proč může Access Point přidat PDF?
Některé Access Pointy vytvoří z XML faktury PDF a přidají ho jako přílohu jako náhled faktury. Hodí se to pro ruční kontrolu, tisk nebo archivaci, kde je vedle strojově čitelného XML potřeba vizuální podoba.
PDF je pomocná reprezentace, nikoli druhá autoritativní faktura. Má vzniknout z validovaného XML, mít jasný název a mimeCode="application/pdf". Nesmí potichu měnit částky, DPH, platební reference ani strany. Příjemce má pro účtování použít XML a PDF pouze jako náhled nebo podklad.
Je také vhodné jasně uvést, zda PDF dodal odesílatel, nebo ho vygeneroval Access Point. Vygenerované PDF zvětšuje zprávu a příjemce ho nemusí očekávat.
Praktický checklist
Před odesláním zkontrolujte, že:
- XML faktura je validní podle Peppol BIS Billing 3.0;
- každá příloha používá povolený MIME typ a smysluplný název;
- obsah je zakódovaný v Base64 a lze ho beze změny dekódovat;
- celá výsledná zpráva se vejde pod limit kontrolovaný příslušným Access Pointem;
- víte, zda Access Point generuje PDF a jak s ním zachází.
Výsledkem je praktický kompromis: XML zůstává přesné a automatizovatelné, zatímco podpůrné dokumenty cestují spolu s transakcí.
Zdroje: Peppol BIS Billing 3.0, syntax UBL Invoice, číselník typů médií příloh a Peppol AS4 Profile.
