XML-mellékletek a BIS 3-ban: formátumok, méretkorlátok és PDF-számlák

Hogyan működnek a mellékletek a Peppol BIS Billing 3.0-ban: támogatott formátumok, Base64-kódolás, a teljes üzenetre vonatkozó 10 MiB-os limit, az általános 100 MiB-os kapacitás és a PDF-számlareprezentáció.

A Peppol BIS Billing 3.0 szerinti számla XML-dokumentum. Maga az XML a számla: olyan strukturált adatokat tartalmaz, amelyeket a könyvelőszoftver ellenőrizhet, könyvelhet és automatikusan feldolgozhat. Néha azonban a számlához kiegészítő anyagok is tartoznak, például munkaidő-kimutatás, szállítólevél vagy ember által olvasható PDF. A BIS 3 lehetővé teszi, hogy ezeket XML-mellékletként a számlával együtt küldjük el.

A PDF megkönnyítheti a számla emberi olvasását, de nem helyettesíti a strukturált BIS-számlát. A validáláshoz és az automatikus feldolgozáshoz továbbra is az XML az elsődleges dokumentum.

Hol helyezkedik el a melléklet a BIS 3-ban?

A mellékletek a cac:AdditionalDocumentReference/cac:Attachment elemben kerülnek továbbításra. Ez a csoport opcionális, és többször is előfordulhat. A teljes struktúrát a Peppol BIS Billing 3.0 hivatalos UBL Invoice szintaxisa írja le.

Beágyazott fájl esetén a cbc:EmbeddedDocumentBinaryObject elem a fontos. Két kötelező attribútuma van:

  • a mimeCode adja meg a fájl médiatípusát;
  • a filename adja meg a fájl nevét a címzett számára.

Egy minimális beágyazott PDF például így nézhet ki:

1
2
3
4
5
6
7
8
9
<cac:AdditionalDocumentReference>
  <cbc:ID>invoice-representation</cbc:ID>
  <cbc:DocumentDescription>A számla olvasható megjelenítése</cbc:DocumentDescription>
  <cac:Attachment>
    <cbc:EmbeddedDocumentBinaryObject
      mimeCode="application/pdf"
      filename="szamla-2026-0042.pdf">JVBERi0xLjQK...</cbc:EmbeddedDocumentBinaryObject>
  </cac:Attachment>
</cac:AdditionalDocumentReference>

Az elem értéke nem maga a PDF, hanem annak Base64 formában ábrázolt tartalma.

Milyen formátumok támogatottak?

A BIS Billing 3 nem enged meg tetszőleges MIME-típust. A címzettnek az IANA alapján korlátozott listát kell támogatnia. A hivatalos csatolt dokumentumok médiatípusainak kódlistája a következőket tartalmazza:

KategóriaMIME-típus
Dokumentumapplication/pdf
Képimage/png
Képimage/jpeg
Szövegtext/csv
Táblázatapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Táblázatapplication/vnd.oasis.opendocument.spreadsheet

A mimeCode értékének ezen értékek egyikének kell lennie, a fájlkiterjesztésnek pedig egyeznie kell vele. ZIP-fájlt tehát nem szabad PDF-ként megjelölni, és Excel-fájlt sem szabad mimeCode="application/pdf" értékkel küldeni.

A BIS külső hivatkozást is támogat a cac:ExternalReference/cbc:URI elemen keresztül. A beágyazott melléklet a számlához tartozó bizonyítékok esetében általában megbízhatóbb, mert a fájl a számlával együtt utazik, és nem függ egy később elérhető URL-től, bejelentkezéstől vagy lejáró linktől.

10 MiB és 100 MiB

Ezt a két értéket gyakran összekeverik:

  • A 10 MiB a teljes XML-üzenetre vonatkozó, gyakran ellenőrzött limit. Nem egyetlen melléklet limitje. Az ellenőrzés általában az XML-számlára, az összes beágyazott mellékletre és az Access Point által fogadott üzenettartalomra vonatkozik. Több kisebb melléklet együtt is átlépheti a határt.
  • A 100 MiB az általános átviteli kapacitás. Egy üzenetnek általában 100 MiB-ig működnie kellene, de a tényleges limitet az adott Access Point szabályzata határozza meg. Egyes Access Pointok ennél jóval korábban elutasíthatják.

A Base64 minden beágyazott bináris értéket körülbelül egyharmaddal megnövel. Ehhez hozzáadódik az XML, a MIME-csomagolás és a biztonsági többlet. Ezért nem a lemezen lévő fájlok mérete, hanem a kész üzenet mérete számít. A megvalósításnak a teljesen kódolt üzenetet kell mérnie, és tartalékot kell hagynia az Access Point által érvényesített limit alatt.

Nagyobb kiegészítő anyagokhoz használjon kisebb, releváns exportot vagy a címzettel egyeztetett külső hivatkozást. A számlát ne alakítsa általános fájlarchívummá, és nagy üzenet küldése előtt egyeztesse a tényleges méretkorlátot a fogadó Access Pointtal.

Hogyan történik a fájl kódolása?

A fájl bájtjait Base64 formában kódoljuk, majd a cbc:EmbeddedDocumentBinaryObject elembe helyezzük. A Base64 nem titkosítás és nem biztonsági ellenőrzés. A címzett visszaalakítja az értéket bájtokká, az Access Pointnak és a célalkalmazásnak pedig továbbra is vizsgálnia kell a káros tartalmakat.

Melléklet létrehozásakor:

  1. olvassa be az eredeti bájtokat szöveges kódolásra történő átalakítás nélkül;
  2. kódolja őket Base64 formában;
  3. állítsa be a helyes mimeCode és filename értéket;
  4. tesztben dekódolja vissza az értéket, és bájtonként hasonlítsa össze az eredetivel;
  5. validálja a teljes BIS-számlát és a kész üzenet méretét.

Miért küldjünk mellékletet?

A strukturált XML kiválóan alkalmas automatizálásra, de nem tartalmazhat minden, az üzleti folyamatban szükséges bizonyítékot. Melléklet lehet például munkaidő-kimutatás, szállítási vagy átvételi jegyzőkönyv, számítás, fénykép, táblázat vagy ember számára készült PDF-reprezentáció.

Az azonos tranzakcióval együtt küldött dokumentum javítja a nyomon követhetőséget. A címzettnek nem kell e-mailes mellékletet párosítania, és nem kell később lejáró linket letöltenie. A mellékletnek azonban támogatnia kell a számlát, nem pedig ellentmondania neki. Az összegeknek, adóadatoknak és a felek azonosítóinak a strukturált BIS-adatokból kell származniuk.

Miért adhat hozzá PDF-et egy Access Point?

Egyes Access Pointok PDF-reprezentációt készítenek az XML-számlából, és mellékletként hozzáadják számlaelőnézetként. Ez hasznos lehet kézi ellenőrzésnél, nyomtatásnál vagy archiválásnál, amikor a géppel olvasható XML mellett vizuális megjelenítésre is szükség van.

A PDF kiegészítő megjelenítés, nem pedig második hiteles számla. Validált XML-ből kell létrehozni, egyértelmű névvel és mimeCode="application/pdf" értékkel. Nem módosíthatja észrevétlenül az összegeket, az áfát, a fizetési hivatkozásokat vagy a feleket. A könyveléshez a címzettnek az XML-t kell használnia, a PDF pedig nézetként vagy kiegészítő dokumentumként szolgál.

Érdemes egyértelművé tenni azt is, hogy a PDF-et a feladó adta-e, vagy az Access Point generálta. A generált PDF növeli az üzenet méretét, és a címzett nem feltétlenül számít rá.

Gyakorlati ellenőrzőlista

Küldés előtt ellenőrizze, hogy:

  • az XML-számla megfelel a Peppol BIS Billing 3.0 szabályainak;
  • minden melléklet engedélyezett MIME-típust és értelmes fájlnevet használ;
  • a tartalom Base64-kódolt, és változtatás nélkül visszafejthető;
  • a teljes üzenet az Access Point által ellenőrzött limit alatt marad;
  • ismert, hogy az Access Point generál-e PDF-et, és hogyan kezeli azt.

Így az XML pontos és automatizálható marad, a kiegészítő dokumentumok pedig együtt utaznak a tranzakcióval.

Források: Peppol BIS Billing 3.0, UBL Invoice szintaxis, csatolt dokumentumok médiatípusainak kódlistája és Peppol AS4 Profile.

A cikk szerzője:

Petr Ferschmann

Petr Ferschmann

CEO Dativery s.r.o.